1 vuelta (circunferencia de Villarceau)

n vueltas

Plano bitangente

Plano bitangente

anima = 0.024 (slider from 0 to 0.999, step 0.001)
V0 = (2.23606797749979, 2)
v0 = Vector(V0)
A: (0, 0)
R: 3
r: 2
B: (0, ((2 * π) * r))
c1 = Segment(A, B)
b: sqrt(R^(2) - r^(2))
D: (((2 * π) * b), 0)
c4 = Segment(A, D)
C: (((2 * π) * b), ((2 * π) * r))
c3 = Segment(C, D)
c2 = Segment(B, C)
listaCurvas: {c1, c2, c3, c4}
P0 = Point(listaCurvas)
V = (2.23606797749979, 2)
v = Vector(V)
A1: P0
B1 = Ray(A1, v)
C1 = RemoveUndefined({Intersect[c1, B1], Intersect[c2, B1], Intersect[c3, B1], Intersect[c4, B1]})
D1 = If(C1(1) ≟ A1, C1(2), C1(1))
A2 = If(D1 ∈ c1, (x(C), y(D1)), If[D1 ∈ c3, (x(A), y(D1)), If[D1 ∈ c2, (x(D1), y(A)), (x(D1), y(C))]])
B2 = Ray(A2, v)
C2 = RemoveUndefined({Intersect[c1, B2], Intersect[c2, B2], Intersect[c3, B2], Intersect[c4, B2]})
lista1a: A1:A50
D2 = If(C2(1) ≟ A2, C2(2), C2(1))
l1: {Polygon[B, C, D, A]}
a = Surface((cos(a) * (R + (r * cos(b)))), (sin(a) * (R + (r * cos(b)))), (r * sin(b)), a, 0, (2 * π), b, 0, (2 * π))
A3 = If(D2 ∈ c1, (x(C), y(D2)), If[D2 ∈ c3, (x(A), y(D2)), If[D2 ∈ c2, (x(D2), y(A)), (x(D2), y(C))]])
B3 = Ray(A3, v)
C3 = RemoveUndefined({Intersect[c1, B3], Intersect[c2, B3], Intersect[c3, B3], Intersect[c4, B3]})
D3 = If(C3(1) ≟ A3, C3(2), C3(1))
A4 = If(D3 ∈ c1, (x(C), y(D3)), If[D3 ∈ c3, (x(A), y(D3)), If[D3 ∈ c2, (x(D3), y(A)), (x(D3), y(C))]])
B4 = Ray(A4, v)
C4 = RemoveUndefined({Intersect[c1, B4], Intersect[c2, B4], Intersect[c3, B4], Intersect[c4, B4]})
D4 = If(C4(1) ≟ A4, C4(2), C4(1))
A5 = If(D4 ∈ c1, (x(C), y(D4)), If[D4 ∈ c3, (x(A), y(D4)), If[D4 ∈ c2, (x(D4), y(A)), (x(D4), y(C))]])
B5 = Ray(A5, v)
C5 = RemoveUndefined({Intersect[c1, B5], Intersect[c2, B5], Intersect[c3, B5], Intersect[c4, B5]})
D5 = If(C5(1) ≟ A5, C5(2), C5(1))
A6 = If(D5 ∈ c1, (x(C), y(D5)), If[D5 ∈ c3, (x(A), y(D5)), If[D5 ∈ c2, (x(D5), y(A)), (x(D5), y(C))]])
B6 = Ray(A6, v)
C6 = RemoveUndefined({Intersect[c1, B6], Intersect[c2, B6], Intersect[c3, B6], Intersect[c4, B6]})
D6 = If(C6(1) ≟ A6, C6(2), C6(1))
A7 = If(D6 ∈ c1, (x(C), y(D6)), If[D6 ∈ c3, (x(A), y(D6)), If[D6 ∈ c2, (x(D6), y(A)), (x(D6), y(C))]])
B7 = Ray(A7, v)
C7 = RemoveUndefined({Intersect[c1, B7], Intersect[c2, B7], Intersect[c3, B7], Intersect[c4, B7]})
lista1b: D1:D50
D7 = If(C7(1) ≟ A7, C7(2), C7(1))
lista2 = RemoveUndefined(Sequence[If[lista1a(k) ≠ lista1b(k), Segment[lista1a(k), lista1b(k)]], k, 1, 40])
A8 = If(D7 ∈ c1, (x(C), y(D7)), If[D7 ∈ c3, (x(A), y(D7)), If[D7 ∈ c2, (x(D7), y(A)), (x(D7), y(C))]])
B8 = Ray(A8, v)
C8 = RemoveUndefined({Intersect[c1, B8], Intersect[c2, B8], Intersect[c3, B8], Intersect[c4, B8]})
D8 = If(C8(1) ≟ A8, C8(2), C8(1))
A9 = If(D8 ∈ c1, (x(C), y(D8)), If[D8 ∈ c3, (x(A), y(D8)), If[D8 ∈ c2, (x(D8), y(A)), (x(D8), y(C))]])
B9 = Ray(A9, v)
C9 = RemoveUndefined({Intersect[c1, B9], Intersect[c2, B9], Intersect[c3, B9], Intersect[c4, B9]})
D9 = If(C9(1) ≟ A9, C9(2), C9(1))
A10 = If(D9 ∈ c1, (x(C), y(D9)), If[D9 ∈ c3, (x(A), y(D9)), If[D9 ∈ c2, (x(D9), y(A)), (x(D9), y(C))]])
B10 = Ray(A10, v)
C10 = RemoveUndefined({Intersect[c1, B10], Intersect[c2, B10], Intersect[c3, B10], Intersect[c4, B10]})
D10 = If(C10(1) ≟ A10, C10(2), C10(1))
A11 = If(D10 ∈ c1, (x(C), y(D10)), If[D10 ∈ c3, (x(A), y(D10)), If[D10 ∈ c2, (x(D10), y(A)), (x(D10), y(C))]])
B11 = Ray(A11, v)
C11 = RemoveUndefined({Intersect[c1, B11], Intersect[c2, B11], Intersect[c3, B11], Intersect[c4, B11]})
D11 = If(C11(1) ≟ A11, C11(2), C11(1))
A12 = If(D11 ∈ c1, (x(C), y(D11)), If[D11 ∈ c3, (x(A), y(D11)), If[D11 ∈ c2, (x(D11), y(A)), (x(D11), y(C))]])
B12 = Ray(A12, v)
C12 = RemoveUndefined({Intersect[c1, B12], Intersect[c2, B12], Intersect[c3, B12], Intersect[c4, B12]})
D12 = If(C12(1) ≟ A12, C12(2), C12(1))
A13 = If(D12 ∈ c1, (x(C), y(D12)), If[D12 ∈ c3, (x(A), y(D12)), If[D12 ∈ c2, (x(D12), y(A)), (x(D12), y(C))]])
B13 = Ray(A13, v)
C13 = RemoveUndefined({Intersect[c1, B13], Intersect[c2, B13], Intersect[c3, B13], Intersect[c4, B13]})
D13 = If(C13(1) ≟ A13, C13(2), C13(1))
A14 = If(D13 ∈ c1, (x(C), y(D13)), If[D13 ∈ c3, (x(A), y(D13)), If[D13 ∈ c2, (x(D13), y(A)), (x(D13), y(C))]])
B14 = Ray(A14, v)
C14 = RemoveUndefined({Intersect[c1, B14], Intersect[c2, B14], Intersect[c3, B14], Intersect[c4, B14]})
D14 = If(C14(1) ≟ A14, C14(2), C14(1))
A15 = If(D14 ∈ c1, (x(C), y(D14)), If[D14 ∈ c3, (x(A), y(D14)), If[D14 ∈ c2, (x(D14), y(A)), (x(D14), y(C))]])
B15 = Ray(A15, v)
C15 = RemoveUndefined({Intersect[c1, B15], Intersect[c2, B15], Intersect[c3, B15], Intersect[c4, B15]})
D15 = If(C15(1) ≟ A15, C15(2), C15(1))
A16 = If(D15 ∈ c1, (x(C), y(D15)), If[D15 ∈ c3, (x(A), y(D15)), If[D15 ∈ c2, (x(D15), y(A)), (x(D15), y(C))]])
B16 = Ray(A16, v)
C16 = RemoveUndefined({Intersect[c1, B16], Intersect[c2, B16], Intersect[c3, B16], Intersect[c4, B16]})
D16 = If(C16(1) ≟ A16, C16(2), C16(1))
A17 = If(D16 ∈ c1, (x(C), y(D16)), If[D16 ∈ c3, (x(A), y(D16)), If[D16 ∈ c2, (x(D16), y(A)), (x(D16), y(C))]])
B17 = Ray(A17, v)
C17 = RemoveUndefined({Intersect[c1, B17], Intersect[c2, B17], Intersect[c3, B17], Intersect[c4, B17]})
D17 = If(C17(1) ≟ A17, C17(2), C17(1))
A18 = If(D17 ∈ c1, (x(C), y(D17)), If[D17 ∈ c3, (x(A), y(D17)), If[D17 ∈ c2, (x(D17), y(A)), (x(D17), y(C))]])
B18 = Ray(A18, v)
C18 = RemoveUndefined({Intersect[c1, B18], Intersect[c2, B18], Intersect[c3, B18], Intersect[c4, B18]})
D18 = If(C18(1) ≟ A18, C18(2), C18(1))
A19 = If(D18 ∈ c1, (x(C), y(D18)), If[D18 ∈ c3, (x(A), y(D18)), If[D18 ∈ c2, (x(D18), y(A)), (x(D18), y(C))]])
B19 = Ray(A19, v)
C19 = RemoveUndefined({Intersect[c1, B19], Intersect[c2, B19], Intersect[c3, B19], Intersect[c4, B19]})
D19 = If(C19(1) ≟ A19, C19(2), C19(1))
A20 = If(D19 ∈ c1, (x(C), y(D19)), If[D19 ∈ c3, (x(A), y(D19)), If[D19 ∈ c2, (x(D19), y(A)), (x(D19), y(C))]])
B20 = Ray(A20, v)
C20 = RemoveUndefined({Intersect[c1, B20], Intersect[c2, B20], Intersect[c3, B20], Intersect[c4, B20]})
D20 = If(C20(1) ≟ A20, C20(2), C20(1))
A21 = If(D20 ∈ c1, (x(C), y(D20)), If[D20 ∈ c3, (x(A), y(D20)), If[D20 ∈ c2, (x(D20), y(A)), (x(D20), y(C))]])
B21 = Ray(A21, v)
C21 = RemoveUndefined({Intersect[c1, B21], Intersect[c2, B21], Intersect[c3, B21], Intersect[c4, B21]})
D21 = If(C21(1) ≟ A21, C21(2), C21(1))
A22 = If(D21 ∈ c1, (x(C), y(D21)), If[D21 ∈ c3, (x(A), y(D21)), If[D21 ∈ c2, (x(D21), y(A)), (x(D21), y(C))]])
B22 = Ray(A22, v)
C22 = RemoveUndefined({Intersect[c1, B22], Intersect[c2, B22], Intersect[c3, B22], Intersect[c4, B22]})
D22 = If(C22(1) ≟ A22, C22(2), C22(1))
A23 = If(D22 ∈ c1, (x(C), y(D22)), If[D22 ∈ c3, (x(A), y(D22)), If[D22 ∈ c2, (x(D22), y(A)), (x(D22), y(C))]])
B23 = Ray(A23, v)
C23 = RemoveUndefined({Intersect[c1, B23], Intersect[c2, B23], Intersect[c3, B23], Intersect[c4, B23]})
D23 = If(C23(1) ≟ A23, C23(2), C23(1))
A24 = If(D23 ∈ c1, (x(C), y(D23)), If[D23 ∈ c3, (x(A), y(D23)), If[D23 ∈ c2, (x(D23), y(A)), (x(D23), y(C))]])
B24 = Ray(A24, v)
C24 = RemoveUndefined({Intersect[c1, B24], Intersect[c2, B24], Intersect[c3, B24], Intersect[c4, B24]})
D24 = If(C24(1) ≟ A24, C24(2), C24(1))
A25 = If(D24 ∈ c1, (x(C), y(D24)), If[D24 ∈ c3, (x(A), y(D24)), If[D24 ∈ c2, (x(D24), y(A)), (x(D24), y(C))]])
B25 = Ray(A25, v)
C25 = RemoveUndefined({Intersect[c1, B25], Intersect[c2, B25], Intersect[c3, B25], Intersect[c4, B25]})
D25 = If(C25(1) ≟ A25, C25(2), C25(1))
A26 = If(D25 ∈ c1, (x(C), y(D25)), If[D25 ∈ c3, (x(A), y(D25)), If[D25 ∈ c2, (x(D25), y(A)), (x(D25), y(C))]])
B26 = Ray(A26, v)
C26 = RemoveUndefined({Intersect[c1, B26], Intersect[c2, B26], Intersect[c3, B26], Intersect[c4, B26]})
D26 = If(C26(1) ≟ A26, C26(2), C26(1))
A27 = If(D26 ∈ c1, (x(C), y(D26)), If[D26 ∈ c3, (x(A), y(D26)), If[D26 ∈ c2, (x(D26), y(A)), (x(D26), y(C))]])
B27 = Ray(A27, v)
C27 = RemoveUndefined({Intersect[c1, B27], Intersect[c2, B27], Intersect[c3, B27], Intersect[c4, B27]})
D27 = If(C27(1) ≟ A27, C27(2), C27(1))
A28 = If(D27 ∈ c1, (x(C), y(D27)), If[D27 ∈ c3, (x(A), y(D27)), If[D27 ∈ c2, (x(D27), y(A)), (x(D27), y(C))]])
B28 = Ray(A28, v)
C28 = RemoveUndefined({Intersect[c1, B28], Intersect[c2, B28], Intersect[c3, B28], Intersect[c4, B28]})
D28 = If(C28(1) ≟ A28, C28(2), C28(1))
A29 = If(D28 ∈ c1, (x(C), y(D28)), If[D28 ∈ c3, (x(A), y(D28)), If[D28 ∈ c2, (x(D28), y(A)), (x(D28), y(C))]])
B29 = Ray(A29, v)
C29 = RemoveUndefined({Intersect[c1, B29], Intersect[c2, B29], Intersect[c3, B29], Intersect[c4, B29]})
D29 = If(C29(1) ≟ A29, C29(2), C29(1))
A30 = If(D29 ∈ c1, (x(C), y(D29)), If[D29 ∈ c3, (x(A), y(D29)), If[D29 ∈ c2, (x(D29), y(A)), (x(D29), y(C))]])
B30 = Ray(A30, v)
C30 = RemoveUndefined({Intersect[c1, B30], Intersect[c2, B30], Intersect[c3, B30], Intersect[c4, B30]})
D30 = If(C30(1) ≟ A30, C30(2), C30(1))
A31 = If(D30 ∈ c1, (x(C), y(D30)), If[D30 ∈ c3, (x(A), y(D30)), If[D30 ∈ c2, (x(D30), y(A)), (x(D30), y(C))]])
B31 = Ray(A31, v)
C31 = RemoveUndefined({Intersect[c1, B31], Intersect[c2, B31], Intersect[c3, B31], Intersect[c4, B31]})
D31 = If(C31(1) ≟ A31, C31(2), C31(1))
A32 = If(D31 ∈ c1, (x(C), y(D31)), If[D31 ∈ c3, (x(A), y(D31)), If[D31 ∈ c2, (x(D31), y(A)), (x(D31), y(C))]])
B32 = Ray(A32, v)
C32 = RemoveUndefined({Intersect[c1, B32], Intersect[c2, B32], Intersect[c3, B32], Intersect[c4, B32]})
D32 = If(C32(1) ≟ A32, C32(2), C32(1))
A33 = If(D32 ∈ c1, (x(C), y(D32)), If[D32 ∈ c3, (x(A), y(D32)), If[D32 ∈ c2, (x(D32), y(A)), (x(D32), y(C))]])
B33 = Ray(A33, v)
C33 = RemoveUndefined({Intersect[c1, B33], Intersect[c2, B33], Intersect[c3, B33], Intersect[c4, B33]})
D33 = If(C33(1) ≟ A33, C33(2), C33(1))
A34 = If(D33 ∈ c1, (x(C), y(D33)), If[D33 ∈ c3, (x(A), y(D33)), If[D33 ∈ c2, (x(D33), y(A)), (x(D33), y(C))]])
B34 = Ray(A34, v)
C34 = RemoveUndefined({Intersect[c1, B34], Intersect[c2, B34], Intersect[c3, B34], Intersect[c4, B34]})
D34 = If(C34(1) ≟ A34, C34(2), C34(1))
A35 = If(D34 ∈ c1, (x(C), y(D34)), If[D34 ∈ c3, (x(A), y(D34)), If[D34 ∈ c2, (x(D34), y(A)), (x(D34), y(C))]])
B35 = Ray(A35, v)
C35 = RemoveUndefined({Intersect[c1, B35], Intersect[c2, B35], Intersect[c3, B35], Intersect[c4, B35]})
D35 = If(C35(1) ≟ A35, C35(2), C35(1))
A36 = If(D35 ∈ c1, (x(C), y(D35)), If[D35 ∈ c3, (x(A), y(D35)), If[D35 ∈ c2, (x(D35), y(A)), (x(D35), y(C))]])
B36 = Ray(A36, v)
C36 = RemoveUndefined({Intersect[c1, B36], Intersect[c2, B36], Intersect[c3, B36], Intersect[c4, B36]})
D36 = If(C36(1) ≟ A36, C36(2), C36(1))
A37 = If(D36 ∈ c1, (x(C), y(D36)), If[D36 ∈ c3, (x(A), y(D36)), If[D36 ∈ c2, (x(D36), y(A)), (x(D36), y(C))]])
B37 = Ray(A37, v)
C37 = RemoveUndefined({Intersect[c1, B37], Intersect[c2, B37], Intersect[c3, B37], Intersect[c4, B37]})
D37 = If(C37(1) ≟ A37, C37(2), C37(1))
A38 = If(D37 ∈ c1, (x(C), y(D37)), If[D37 ∈ c3, (x(A), y(D37)), If[D37 ∈ c2, (x(D37), y(A)), (x(D37), y(C))]])
B38 = Ray(A38, v)
C38 = RemoveUndefined({Intersect[c1, B38], Intersect[c2, B38], Intersect[c3, B38], Intersect[c4, B38]})
D38 = If(C38(1) ≟ A38, C38(2), C38(1))
A39 = If(D38 ∈ c1, (x(C), y(D38)), If[D38 ∈ c3, (x(A), y(D38)), If[D38 ∈ c2, (x(D38), y(A)), (x(D38), y(C))]])
B39 = Ray(A39, v)
C39 = RemoveUndefined({Intersect[c1, B39], Intersect[c2, B39], Intersect[c3, B39], Intersect[c4, B39]})
D39 = If(C39(1) ≟ A39, C39(2), C39(1))
A40 = If(D39 ∈ c1, (x(C), y(D39)), If[D39 ∈ c3, (x(A), y(D39)), If[D39 ∈ c2, (x(D39), y(A)), (x(D39), y(C))]])
B40 = Ray(A40, v)
C40 = RemoveUndefined({Intersect[c1, B40], Intersect[c2, B40], Intersect[c3, B40], Intersect[c4, B40]})
D40 = If(C40(1) ≟ A40, C40(2), C40(1))
m: (y(v0) / x(v0) * b / r)
k: sqrt((R - r) / (R + r))
f(t) = (2 / m * atand((k * tan(t / 2))))
planoBitangente: ((-y) * r) + (z * sqrt(R^(2) - r^(2))) = 0
n = 1 (slider from 1 to 10, step 1)
lox = CurveCartesian(((R + (r * cos(t))) * cos(f(t))), ((R + (r * cos(t))) * sin(f(t))), (r * sin(t)), t, 0, (2 * π) - 0.001)
tP: ((2 * π) * anima)
Q: (((R + (r * cos(tP))) * cos(f(tP))), ((R + (r * cos(tP))) * sin(f(tP))), (r * sin(tP)))
P = Point(lista2, anima)
villarceau2 = CurveCartesian(((-(R + (r * cos(t)))) * cos(f(t))), ((R + (r * cos(t))) * sin(f(t))), (r * sin(t)), t, 0, (2 * π) - 0.001)
cerrado = true
T1: (0, R + (r * cos((2 * atand(1 / k)))), (r * sin((2 * atand(1 / k)))))
T2: (0, (-R) - (r * cos((2 * atand(1 / k)))), ((-r) * sin((2 * atand(1 / k)))))