求助!需要约束功能解决画法几何题

如何在rhino里画出这个圆心?通过一个点,圆心在曲线上,又和另一个圆外切。

题目来自哥特式窗框图册。

有朋友帮我在其他cad软件中通过约束制图实现了。但是目前rhino还没有正式发布约束功能,不知道有没有其他方式能画出这个圆弧。集思广益,感谢大家!

约束绘图是 Rhino 下一个版本重点开发功能,我用 GH 大概做了一下,希望对有一点点帮助 :blush:

Circles.7z (18.9 KB 密码 shaper3d.com)

2 个赞


哈哈,你选的这个简单的,这个我已经做好了。比较难的是第二个,我试过用GH遗传算法做找最小值,但是不准确。

1 个赞

第一个和第二个是哪个?
麻烦提供一下你说的点,曲线,圆
image

不说清楚问题的话,别人也帮不到你。。。


我已经标注要找的圆心了

1 个赞

image
XC-XP=C圆半径
到两点差值=定值的轨迹是双曲线
这是高中解析几何必修内容。

所以不涉及到约束

哥特花纹绘制的年代,人们可没有什么catia或者GH之类的东西帮他们计算约束,更何况遗传和退火之类的算法。

几何原理我完全知晓,用计算的方式算出半径再定位圆心是可以的,前人也是这么做的。我本想是通过徒手画线的方式找到这个圆心,而不是通过用方程计算的方式。

这个问题本质是几何问题,但是有了约束功能,能够更快捷高效的解决。

如果你有兴趣,你可以动手画画看,十分感谢!

你的徒手画线就是根据双曲线方程画出来的
逼近算法的话你觉得他不够精确,那么方程是最精确的了。

不明白你的目的是什么,如果你的目的是操练遗传算法,那么已经完成了,只不过精度不如意。
如果目的是精确绘制,那么方程式是最精确的办法。

你可能对约束有所误解。约束的底层逻辑是:能用解析解的,一律用解析解,不能用解析解的,用代数解(逼近)。

在你这个情况下首选解析解。因为最快最准
不想解析的,用逼近,但是遗传和退火在这显然不适用。用二分法或者其他迭代法会跟快准狠一些。

然而没有必要针对可以解析解的问题,强行使用代数解。除非是想要进行一类研究,而不是为了解决问题绘制图案

在rhino里面徒手画线我是画不出来,最后我是通过其他有约束功能的软件画出了这个圆,然后导出dwg给rhino使用。

以给定点为原点设平面直角坐标系xy,
大圆o,半径R;内接小圆p,半径c;所求圆圆心点q(x,y)有精确解

因为尺规作图本质上是圆方程和直线方程联立后求解的过程,
那么求点就是联立方程组简化得到一个一元二次方程后,用求根公式求解的结果。
微信截图_20231208014100(求根公式)

如果引入域的概念(以下是我抄的)

……那么每次得到新的交点,我们都是在之前的域的基础上做了一维或者二维的扩张。 又因为扩张的维数可以相乘,那么每一次扩张出的域对于最初的域Q来说,维数都是2的幂。

通过wolfram求解(因为我解不出来):发现x、y、r的结果含有非2的幂
(exact form太长就不贴了,有兴趣可以试试)

所以尺规作图甭想了(欢迎指正)

参考资料:
为什么尺规不能三等分一个角?
浅析尺规作图

但是遗传算法5分钟的事情,真的会有人在GH里做解析几何吗?


(8m多对0.4mm的误差,精度已经非常高了,大不了slider再多几位)

4 个赞

约束软件处理这种情况也多半都是用迭代
针对你的情况,如果必须用rhino,给你一个满足精确度并且最简单的二分法思路
在圆心所在的大圆上做二分法,找到距离差=定值的点就行。
如果算法上的基本功扎实。基本能在5分钟内搞定。

pa.3dm (25.5 KB)
pa.gh (17.8 KB)


这里先提供一个不是二分法的程序

难度不大,只要重新查阅一下极坐标参数方程(高中数学内容),并掌握基本的GH操作方法,就可以得到你想要的精确度。

4 个赞

pa2.gh (14.9 KB)


二分法的方法和代码如上

4 个赞

Rhino中提供了双曲线工具,所以我们只需画出所需双曲线即可,步骤如下:

1.确定双曲线中心点,顶点,和,焦点

2.根据简单的勾股定理确定双曲线方程系数,令圆半径为1,则标准双曲线方程中a=0.5 b=0.5*sqrt(6)

3.在Rhino中绘制双曲线
image

4.在交点上绘制所需图形

6 个赞

感谢各位大佬赐教,打开了我的思路和眼界,非常感谢! :pray:

Rhino 引进约束那将宇宙无敌