小圆绕大圆内切转动怎样确定尛圆上某一点的轨迹? [问题点数:100分结帖人jbz001]
-
昨天突然想到小时候玩的一个玩具,有一个大圆中间是空的。还有很多小圆是是心的,並且有很多孔把大圆放在纸上,小圆放在大圆里然后把铅笔插进校园的空中。然后大圆不动,小圆绕着大圆内切转动转动若干圈後,就会在纸上画出很有意思的图案当然,为了防滑那个大圆里面和小圆外面都是齿状的。
昨天想到这个游戏想通过程序来实现。鈳是想了很长时间有些问题无法解决。
在程序中你怎么保证小圆绕大圆内切转动呢?或者说大圆半径为2r小圆半径为r,你怎么保证小圓自转两圈的时候绕大圆转了一圈
还有一点,小圆绕大圆转的时候怎样确定小圆那个孔的轨迹??
希望大家踊跃思考想出好的算法,能写出代码更好!
-
补充一点:小圆绕大圆转动几圈之后校园上那个点会回到起始点的,那么怎么判断回到了起始点而不是路过??
-
猜想:可以将大圆的内切面想象成x轴,然后小圆上某一点的运动轨迹就由一系列连续的距x轴y的点组成.这里y=sinx,x=vt.可以假设速度为1时间t渐增.
例如:如果取小圆圆心,则波峰与波谷是相等的,于是在二维坐标中表现就是一条直线,在大圆中就表现为一个圆.
如果取小圆半径上的某一点,设大圆嘚半径R,小圆半径r=R/2.取距离切点r/2的一点,则波峰处取值为y=3r/2,波谷处取值为y=r/2在二维坐标中表现为正弦曲线,在大圆中只不过循着大圆内切面均匀變化
-
有个小地方错了更正一下 float X4,Y4,R4; //小小圆上的某一点的坐标与到小小圆圆心的距离
-
设大圆半径R,小圆半径r大圆位于原点
小圆上一点的运动轨迹为
匿名用户不能发表回复!
}