如何实现沿椭圆轨迹的运动

manye_lby 2009-04-03 02:27:14
Opengl中,可以使用一定的函数实现物体沿某一轴旋转运动,但轨迹为圆形,怎么使其沿椭圆轨迹运动?
...全文
1000 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
manye_lby 2009-04-06
  • 打赏
  • 举报
回复
恩恩,将圆形运用glScale()和glTranslate()函数就可以变为椭圆,这个我知道的。
但是如何使一个球体沿这样一个椭圆轨迹运动呢?
好像3楼说的比较有道理吧……
Tinary3v0 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 glacier3d 的回复:]
最简单的,给x方向或y方向乘个小于1的系数,把圆压扁就行了
[/Quote]
呵呵 就是这样的 要多学会用OpenGL 的一些叠加方式 就好比是公转加自转一样 需要叠加
主要是MatriX的进栈出栈。
glacier3d 2009-04-03
  • 打赏
  • 举报
回复
最简单的,给x方向或y方向乘个小于1的系数,把圆压扁就行了
chiwa737 2009-04-03
  • 打赏
  • 举报
回复
把椭圆公式带进去算位置就好了啊
把x和y都变成x(t) , y(t)得函数就可以算了。
zhyinty 2009-04-03
  • 打赏
  • 举报
回复
用向量。
在Authorware中实现地球公转与二十四节 经过学习研究“在Authorware中实现四季变化动画”一文,终于利用文本响应和条件响应实现了下面的效果:在文本框内输入任一月份数字,地球都会以相同的速度沿轨迹运动到相应的位置停止,并出现相应季节的提示,二十四节提示,及太阳黄道度数提示等。最终效果见(图1)。 图1 具体做法如下: (如图2) 1、新建一个文件,在流程线上拖放一个显示图标,命名为“背景”,导入一张准备好的星空图片。 2、在流程线上拖放一个声音图标,导入一首音乐,并设置执行方式为“同时”播放次数为某值。 3、在流程线上再放置一个“显示”图标并命名为“太阳”,然后双击打开显示图标,在显示窗口中心位置放置一个事先准备好的“太阳”图片,调整好大小。选用椭圆工具在太阳周围画一个椭圆作为地球运动的轨道。 4、在“太阳”后面再放置一显示图标并命名为“地球”;按住Shift键双击打开该图标,就可以看到前一图标中的太阳还显示在窗口中;导入准备好的“地球”图片,调整好大小和位置。 5、在流程线上放置一“交互”图标并命名为“控制”。 6、在交互图标右侧放置一“群组”图标,在打开的“响应类型”面板中选择“文本”响应,然后双击打开“文本响应属性”对话框,在“textentry(文本输入)”文件夹中“pattern(模式)”选项的文本输入框中键入系统变量“Text Entry”,其他各项设置按默认值。文本响应下的群组图标空置。 7、双击打开“交互”图标,双击文本输入框,设置字体、字号、颜色和背景等。 8、在文本响应图标右侧放置一个“运动”图标,打开响应属性面板,将它们的响应类型设置为“条件”响应;打开第一个条件响应属性设置面板,在“condition(条件)”后输入“EntryText”,响应范围设置为“永久”,擦除设置为“在下一次输入后”,分支设置为“重试”。 9、在运动图标上右击选中“计算”打开计算设置窗口,输入以下语句: a:=EntryText 用变量EntryText获取用户输入的文本数字赋于自定义变量a。 if a=1 then 判断:如果a=1 m:=a 将a的值赋于自变量m m3:=m 将m的值赋于自变量m3(m3将被程序调用,用来控制运动时间。) else 否则 m1:=a 将a的值赋于自变量m1 m3:=m1-m2 将m1与m2的差赋于m3 end if 结束判断语句。 m2:=a 将a的值赋于自变量m2,用于保留上一次的输入值。 if a=1 then 判断:如果a=1,给自变量b一个值。 b:="一月;冬季 (季冬) 太阳黄道:小寒 285度;大寒:300度 " DisplayIcon(IconID@"小寒") 播放图标名为小寒、大寒的两个显示图标。 DisplayIcon(IconID@"大寒") else if a=2 then 否则如果a=2给自变量b一个值。 b:="二月;春季 (孟春) 太阳黄道:立春 315度;雨水:330度" DisplayIcon(IconID@"立春") 播放图标名为立春、雨水的两个显示图标。 DisplayIcon(IconID@"雨水") else if a=3 then b:="三月;春季 (仲春) 太阳黄道:惊蛰 345度;春分:360度" DisplayIcon(IconID@"惊蛰") DisplayIcon(IconID@"春分") else if a=4 then b:="四月;春季 (季春) 太阳黄道:清明 15度;谷雨:30度" DisplayIcon(IconID@"清明") DisplayIcon(IconID@"谷雨") else if a=5 then b:="五月;夏季 (孟夏) 太阳黄道:立夏 45度;小滿:60度" DisplayIcon(IconID@"立夏") DisplayIcon(IconID@"小滿") else if a=6 then b:="六月;夏季 (仲夏) 太阳黄道:芒种 75度;夏至:90度" DisplayIcon(IconID@"芒种") DisplayIcon(IconID@"夏至") else if a=7 then b:="七月;夏季(季夏) 太阳黄道:小暑 105度;大暑:120度" DisplayIcon(IconID@"小暑") DisplayIcon(IconID@"大暑") else if a=8 then b:="八月;秋季(孟秋) 太阳黄道:立秋 135度;处暑:150度" DisplayIcon(IconID@"立秋") DisplayIcon(IconID@"处暑") else if a=9 then b:="九月;秋季(仲秋) 太阳黄道:白露 165度;秋分:180度" DisplayIcon(IconID@"白露") DisplayIcon(IconID@"秋分") else if a=10 then b:="十月;秋季(季秋) 太阳黄道:寒露 195度;霜降:210度" DisplayIcon(IconID@"寒露") DisplayIcon(IconID@"霜降") else if a=11 then b:="十一月;冬季(孟冬) 太阳黄道:立冬 225度;小雪:240度" DisplayIcon(IconID@"立冬") DisplayIcon(IconID@"小雪") else b:="十二月;冬季(仲冬) 太阳黄道:大雪 255度;冬至:270度" DisplayIcon(IconID@"大雪") DisplayIcon(IconID@"冬至") end if 10、在运动图标的右边再拖放一个群组命名为“二十四节“拖放二十四个显示图标,分别以二十四节命名。双击打开进行内容设置。如下图所示:

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧