在 Asymptote 中,如何检查某个点是否位于公差范围内的线上?
另外,我如何检查一个点是否在圆内?
答案1
geometry
下面的代码演示了使用中的包来解决您的两个问题的方法asymptote
。
import geometry;
unitsize(1inch);
point p1 = (0.0,0.0);
point p2 = (1.0,1.0);
path c = circle((0,0), 1);
write(inside(c, (pair) p1));
write(inside(c, (pair) p2));
line l = line(p1, (1,-1));
write(distance(p1, l));
write(distance(p2, l));
bool pointOnLine(line l, point p, real tolerance=1e-8) {
return distance(p, l) < tolerance;
}
write(pointOnLine(l, p2));
write(pointOnLine(l, p2, 2.0));
draw(c);
dot(Label("p1 (0,0)"), p1, red);
dot(Label("p2 (1,1)"), p2, red);
draw(l, blue);
这6条命令的输出write();
如下。
true
false
0
1.41421356237309
false
true
笔记:
函数是循环和的
inside
内置命令。必须将 A 转换为 a才能使用此函数,如下所示。path
pair
point
pair
我创建了一个函数来测试某个点是否在线上。它结合了 函数
distance
。可以给出公差。如果没有给出,公差默认为1e-8
。在这个函数的第二个演示中,我给出了一个较大的公差2.0
。