请高手帮忙看看该有关问题如何避免(GDI绘制三维图形)
请高手帮忙看看该问题如何处理(GDI绘制三维图形)?
我目前刚到一个新公司,公司给的第一个任务就让我比较吃劲。任务的内容是自己实现一个三维图的类,图的内容如我左边的头像所示(****好像贴不了图片,所以只能用这种方法了)。
这个是一个三维频谱图,X轴表示频率(范围:0-1000),Y轴表示这个强度(单位db,范围:-30-60db),Z轴表示时间(范围:0-100)。
原以为这个图比较简单,但真正实现时发现还真的很困难,关键难点在于这是一个三维坐标,如何确定点的位置很难,好像还涉及到立体几何的知识。这个图的另一个难点是渐变效果,这个先占不考虑(我个人打算采用换色画直线的方法)。
对于第一个问题不知大家有什么好的方法,其它控件或者现成的类也行。我之前也考虑过matlab和Direct 3D(没学过),如果用这些方法来实现的话我还要现学,任务时间又不够。
希望那大侠帮帮忙,小弟先在此谢过!!
------解决方案--------------------
用OpenGL很快就搞定的
------解决方案--------------------
使用OPenGL
------解决方案--------------------
1. 上网上搜索看能不能找到现成的免费控件来使用
2. 自己用一般方法实现。做好空间分析,几何体应该不难,其难点主要是渐变色的实现就比较麻烦了,最好是能借助其它现有的库或者函数来实现,否则我看这一个渐变就够你受的了
3. 如楼上所说,采用OpenGL或者D3D,不过这两个我都没有弄过,不知道是不是做这个效果会容易一些
------解决方案--------------------
X轴表示频率(范围:0-1000),Y轴表示这个强度(单位db,范围:-30-60db),Z轴表示时间(范围:0-100)。
这些坐标数据楼主肯定有了。
假设有三维坐标P=(x,y,z) ,
绕Y轴旋转B角度得到坐标P'(x',y',z')=(z*sin(B)+x*cos(B), y, z*cos(B)-x*sin(B)),
之后绕Z轴旋转A角度得到坐标P"(x",y",z")=(x'*cos(A)-y'*sin(A), x'*sin(A)+y'*cos(A), z'),
我们要的是这个图像在二维上的投影,则Z不关心了,只需要按照x”,y”值画出来就行了。
Good luck!
------解决方案--------------------
在三维空间关键就是操作三维向量
我做过一个类你可以试试
http://download.****.net/source/1888166
------解决方案--------------------
不好意思啊
我刚刚说的那个没找到
给你发了一个OpenGL的例子
可以用键盘上下左右键控制直升机的移动
这个例子里就是用得你下到的类
你参考一下吧
实在抱歉
我目前刚到一个新公司,公司给的第一个任务就让我比较吃劲。任务的内容是自己实现一个三维图的类,图的内容如我左边的头像所示(****好像贴不了图片,所以只能用这种方法了)。
这个是一个三维频谱图,X轴表示频率(范围:0-1000),Y轴表示这个强度(单位db,范围:-30-60db),Z轴表示时间(范围:0-100)。
原以为这个图比较简单,但真正实现时发现还真的很困难,关键难点在于这是一个三维坐标,如何确定点的位置很难,好像还涉及到立体几何的知识。这个图的另一个难点是渐变效果,这个先占不考虑(我个人打算采用换色画直线的方法)。
对于第一个问题不知大家有什么好的方法,其它控件或者现成的类也行。我之前也考虑过matlab和Direct 3D(没学过),如果用这些方法来实现的话我还要现学,任务时间又不够。
希望那大侠帮帮忙,小弟先在此谢过!!
------解决方案--------------------
用OpenGL很快就搞定的
------解决方案--------------------
使用OPenGL
------解决方案--------------------
1. 上网上搜索看能不能找到现成的免费控件来使用
2. 自己用一般方法实现。做好空间分析,几何体应该不难,其难点主要是渐变色的实现就比较麻烦了,最好是能借助其它现有的库或者函数来实现,否则我看这一个渐变就够你受的了
3. 如楼上所说,采用OpenGL或者D3D,不过这两个我都没有弄过,不知道是不是做这个效果会容易一些
------解决方案--------------------
X轴表示频率(范围:0-1000),Y轴表示这个强度(单位db,范围:-30-60db),Z轴表示时间(范围:0-100)。
这些坐标数据楼主肯定有了。
假设有三维坐标P=(x,y,z) ,
绕Y轴旋转B角度得到坐标P'(x',y',z')=(z*sin(B)+x*cos(B), y, z*cos(B)-x*sin(B)),
之后绕Z轴旋转A角度得到坐标P"(x",y",z")=(x'*cos(A)-y'*sin(A), x'*sin(A)+y'*cos(A), z'),
我们要的是这个图像在二维上的投影,则Z不关心了,只需要按照x”,y”值画出来就行了。
Good luck!
------解决方案--------------------
在三维空间关键就是操作三维向量
我做过一个类你可以试试
http://download.****.net/source/1888166
------解决方案--------------------
不好意思啊
我刚刚说的那个没找到
给你发了一个OpenGL的例子
可以用键盘上下左右键控制直升机的移动
这个例子里就是用得你下到的类
你参考一下吧
实在抱歉