我不确定这里是否是发布有关渐近线的问题的正确地方,但如果不是,我可以稍后删除它。
以下是我正在使用的代码:
//sangaku.asy
unitsize(5mm);
pair A=(0,0);
pair B=(3,0);
pair C=(2,1);
pair D, E, F, G, H, I, J, K;
F = rotate(90, A)*C;
G = C + F;
I = rotate(-90, B)*C;
H = (C-B) + I;
J = rotate(90, G)*H;
/*K = (H-G) + (J-G);*/
K = rotate(-90, H) * G;
D = rotate(-90, A) * B;
E = D + B;
picture sangaku;
path vierkantac=A--C--G--F--cycle;;
path vierkantbc=C--B--I--H--cycle;;
path vierkantgh=G--H--K--J--cycle;
path vierkantab=B--A--D--E--cycle;
path driehoekae=A--B--E--cycle;
path driehoekgh=G--H--K--cycle;
pen p1=orange;
pen p2=cyan;
filldraw (sangaku, vierkantac, p1);
filldraw (sangaku, vierkantbc, p1);
draw (sangaku, vierkantgh);
draw (sangaku, vierkantab);
add(sangaku);
add(shift(-12,6)*rotate(-30)*scale(2)*sangaku);
pair positie=(2, 12);
K = (H-G) + (J-G);
我注释掉的那一行给我带来了麻烦:
使用旋转函数我得到了正确的结果:
但为什么它们不应该等同呢?
答案1
在这种情况下,正确的是K = G+(H-G) + (J-G);
。错误来自常见的误解,认为点和向量是相同的,而事实上它们并不相同。很容易理解其中的区别,只需再加一个坐标来标记它:它0
对于向量来说,是1
一个向量,对于有效点来说也是如此。然后很明显,任何向量之和(+/-)都会产生一个有效向量,两个点的差是一个向量,而要得到一个有效点,必须将该向量添加到另一个点。(点之和只有在结果中提到的额外坐标也是 时才有效1
)。特别是,在注释行中K
显然是两个向量
(H-G)
和之和(J-G)
,为了使其成为一个点,必须添加另一个适当的点,在这种情况下它是G
。