找回密码
 立即注册

QQ登录

只需一步,快速开始

TTabc

注册会员

1

主题

5

帖子

35

积分

注册会员

积分
35
最新发帖
TTabc
注册会员   /  发表于:2018-10-12 19:47  /   查看:4241  /  回复:8
刚开始学习使用C1Chart3D控件,做一个高斯分布的曲面:
数据:
double[, ] zdata =new double[50 ,50 ];
double temp=0;
for (int i=0;i<50;i++)
{
for(int j=0;j<50;j++)
{
temp=-(i-25)*(i-25)/100-(j-25)*(j-25)/100;
// temp=-((i-25)*(i-25)+(j-25)*(j-25))/100;
zdata[i,j]=10*Math.Exp(temp);
}
}
困惑的问题:
(1)temp表达式,用上面一个表达式,画出的3D曲面显示轮廓为正方形,而用下面一个temp的表达式,画出的3D曲面轮廓为圆形分布。
(2)3D曲面的顶部,不是高斯的形状,而是一个平顶,原因是什么?求解答。

顺便一个问题关于C1Chart控件的,我网上查了很久,一直没有找到曲线的线宽怎么设置。
求回复,谢谢。

8 个回复

倒序浏览
TTabc
注册会员   /  发表于:2018-10-15 10:38:54
沙发
double[,] zdata = new double[50,50];
            double temp = 0;

            for (int i = 0; i < 50; i++)
            {
               
                for (int j=0;j<50;j++)
                {
                   // temp = -(i - 25) * (i - 25)/100- (j - 25) * (j - 25)/100;

                    temp =- ((i - 25) * (i - 25)+ (j - 25) * (j - 25))/ 100;

                    zdata[i, j] = 10*Math.Exp(temp);

                                 
                }
            }
GridDataSeries data = new GridDataSeries();
              
            data.Start = new Point(0, 0);
            data.Step = new Point(1, 1);
            data.ZData = zdata;
            chart3D.Children.Add(data );

            chart3D.ChartType = C1.WPF.C1Chart3D.Chart3DType.SurfaceZoneContour;
            chart3D.ColorPalette = new Color[] { Colors.Blue, Colors.Yellow, Colors.Red};
            chart3D.ContourLevelsCount = 20;

            chart3D.Elevation = 150;
            chart3D.Azimuth = 30;

             chart3D.AxisX.MajorUnit = 10;
            chart3D.AxisY.MajorUnit = 10;
            chart3D.AxisZ.MajorUnit = 2;
            chart3D.AxisZ.Max = 10;
            
            chart3D.AxisX.MajorTickAppearance = TickAppearance.Line;
            chart3D.AxisY.MajorTickAppearance = TickAppearance.Line;
            chart3D.AxisZ.MajorTickAppearance = TickAppearance.Line;
           
            chart3D.AxisX.Title = new TextBlock { Text = "X Axis", FontSize = 14 };
            chart3D.AxisY.Title = new TextBlock { Text = "Y Axis", FontSize = 14 };
            chart3D.AxisZ.Title = new TextBlock { Text = "Z Axis", FontSize = 14 };
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-10-15 11:38:37
板凳
您好,可以提供一个demo,我这边需要调查一下原因
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
TTabc
注册会员   /  发表于:2018-10-15 11:52:39
地板
你好,附件是源文件,请帮看下,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-10-15 14:15:23
5#
本帖最后由 JeffryLI 于 2018-10-15 14:28 编辑

您好,这块公式我看没有什么不对的,这是我们sample的示例。\Documents\ComponentOne Samples\WPF\C1.WPF.Chart\CS\ChartSamples\3D,您可以参考一下,您的公式我在其他几个地方测试都是平顶的。还有您的第二问题宽度是指的是那种曲线的宽度?
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
TTabc
注册会员   /  发表于:2018-10-15 14:38:13
6#
我去看下,有问题在回复,谢谢
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-10-15 16:11:47
7#
没事的
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
TTabc
注册会员   /  发表于:2018-10-22 16:12:18
8#
你好,问题我已经找到了,平顶的问题是算法的原因,循环体里面因为i是整数,C#当成整数处理了,我把i乘上1.0变成double就是平滑的了,线宽的问题我发现论坛里以前有人讨论过,也找到了。谢谢版主。
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-10-22 17:49:44
9#
TTabc 发表于 2018-10-22 16:12
你好,问题我已经找到了,平顶的问题是算法的原因,循环体里面因为i是整数,C#当成整数处理了,我把i乘上1. ...

不客气的。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部