Tangentenpunkte auf eine gedrehte Ellipse vom AußenpunktPython

Python-Programme
Anonymous
 Tangentenpunkte auf eine gedrehte Ellipse vom Außenpunkt

Post by Anonymous »

c = Bekannter äußerer Punkt, erwartete Ergebnisse A (x, y), b (x1, y1) < /p>

Ich denke, die Antwort könnte hier in der ersten Antwort versteckt werden, wodurch Tangentenhänge und Abschnitte berechnet werden. Ich nehme an.

Code: Select all

from typing import Tuple

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
import numpy as np

def find_tangent_lines(
center: Tuple[float, float],
semi_axes: Tuple[float, float],
rotation: float,
reference_point: Tuple[float, float],
):
"""Find the Ellipse's two tangents that go through a reference point.

Args:
center: The center of the ellipse.
semi_axes: The semi-major and semi-minor axes of the ellipse.
rotation: The counter-clockwise rotation of the ellipse in radians.
reference_point: The coordinates of the reference point.

Returns:
(m1, h1): Slope and intercept of the first tangent.
(m2, h2): Slope and intercept of the second tangent.
"""
x0, y0 = center
a, b = semi_axes
s, c = np.sin(rotation), np.cos(rotation)
p0, q0 = reference_point

A = (-a**2*s**2 - b**2*c**2 + (y0-q0)**2)
B = 2*(c*s*(a**2-b**2) - (x0-p0)*(y0-q0))
C = (-a**2*c**2 - b**2*s**2 + (x0-p0)**2)

if B**2 - 4*A*C < 0:
raise ValueError('Reference point lies inside the ellipse')

t1, t2 = (
(-B + np.sqrt(B**2 - 4*A*C))/(2*A),
(-B - np.sqrt(B**2 - 4*A*C))/(2*A),
)
return (
(1/t1, q0 - p0/t1),
(1/t2, q0 - p0/t2),
)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post