有朋友帮我在其他cad软件中通过约束制图实现了。但是目前rhino还没有正式发布约束功能,不知道有没有其他方式能画出这个圆弧。集思广益,感谢大家!
第一个和第二个是哪个?
麻烦提供一下你说的点,曲线,圆
不说清楚问题的话,别人也帮不到你。。。
XC-XP=C圆半径
到两点差值=定值的轨迹是双曲线
这是高中解析几何必修内容。
所以不涉及到约束
哥特花纹绘制的年代,人们可没有什么catia或者GH之类的东西帮他们计算约束,更何况遗传和退火之类的算法。
几何原理我完全知晓,用计算的方式算出半径再定位圆心是可以的,前人也是这么做的。我本想是通过徒手画线的方式找到这个圆心,而不是通过用方程计算的方式。
这个问题本质是几何问题,但是有了约束功能,能够更快捷高效的解决。
如果你有兴趣,你可以动手画画看,十分感谢!
你的徒手画线就是根据双曲线方程画出来的
逼近算法的话你觉得他不够精确,那么方程是最精确的了。
不明白你的目的是什么,如果你的目的是操练遗传算法,那么已经完成了,只不过精度不如意。
如果目的是精确绘制,那么方程式是最精确的办法。
你可能对约束有所误解。约束的底层逻辑是:能用解析解的,一律用解析解,不能用解析解的,用代数解(逼近)。
在你这个情况下首选解析解。因为最快最准
不想解析的,用逼近,但是遗传和退火在这显然不适用。用二分法或者其他迭代法会跟快准狠一些。
然而没有必要针对可以解析解的问题,强行使用代数解。除非是想要进行一类研究,而不是为了解决问题绘制图案
在rhino里面徒手画线我是画不出来,最后我是通过其他有约束功能的软件画出了这个圆,然后导出dwg给rhino使用。
以给定点为原点设平面直角坐标系xy,
大圆o,半径R;内接小圆p,半径c;所求圆圆心点q(x,y)有精确解
因为尺规作图本质上是圆方程和直线方程联立后求解的过程,
那么求点就是联立方程组简化得到一个一元二次方程后,用求根公式求解的结果。
(求根公式)
如果引入域的概念(以下是我抄的)
……那么每次得到新的交点,我们都是在之前的域的基础上做了一维或者二维的扩张。 又因为扩张的维数可以相乘,那么每一次扩张出的域对于最初的域Q来说,维数都是2的幂。
通过wolfram求解(因为我解不出来):发现x、y、r的结果含有非2的幂
(exact form太长就不贴了,有兴趣可以试试)
所以尺规作图甭想了(欢迎指正)
参考资料:
为什么尺规不能三等分一个角?
浅析尺规作图
但是遗传算法5分钟的事情,真的会有人在GH里做解析几何吗?
(8m多对0.4mm的误差,精度已经非常高了,大不了slider再多几位)
约束软件处理这种情况也多半都是用迭代
针对你的情况,如果必须用rhino,给你一个满足精确度并且最简单的二分法思路
在圆心所在的大圆上做二分法,找到距离差=定值的点就行。
如果算法上的基本功扎实。基本能在5分钟内搞定。
pa.3dm (25.5 KB)
pa.gh (17.8 KB)
这里先提供一个不是二分法的程序
难度不大,只要重新查阅一下极坐标参数方程(高中数学内容),并掌握基本的GH操作方法,就可以得到你想要的精确度。
Rhino中提供了双曲线工具,所以我们只需画出所需双曲线即可,步骤如下:
1.确定双曲线中心点,顶点,和,焦点
2.根据简单的勾股定理确定双曲线方程系数,令圆半径为1,则标准双曲线方程中a=0.5 b=0.5*sqrt(6)
3.在Rhino中绘制双曲线
4.在交点上绘制所需图形
感谢各位大佬赐教,打开了我的思路和眼界,非常感谢!
Rhino 引进约束那将宇宙无敌