10000 add Ellipse class · songhyonkim/spatialmath-python@5ac7c90 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5ac7c90

Browse files
committed
add Ellipse class
1 parent 48f164f commit 5ac7c90

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

spatialmath/geom2d.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,8 +584,52 @@ class LineSegment2(Line2):
584584
# has hom line + 2 values of lambda
585585
pass
586586

587+
class Ellipse:
588+
589+
def __init__(self, centre, radii, orientation=0):
590+
xc, yc = centre
591+
alpha = 1.0 / radii[0]
592+
beta = 1.0 / radii[1]
593+
gamma = 0
594+
595+
e0 = alpha
596+
e1 = beta
597+
e2 = 2 * gamma
598+
e3 = -2 * (alpha * xc + gamma * yc)
599+
e4 = -2 * (beta * yc + gamma * xc)
600+
e5 = alpha * xc**2 + beta * yc**2 + 2 * gamma * xc * yc - 1
601+
602+
self.e0 = e1 / e0
603+
self.e1 = e2 / e0
604+
self.e2 = e3 / e0
605+
self.e3 = e4 / e0
606+
self.e4 = e5 / e0
607+
608+
def __str__(self):
609+
return f"Ellipse({self.e0}, {self.e1}, {self.e2}, {self.e3}, {self.e4})"
610+
611+
def E(self):
612+
# return 3x3 ellipse matrix
613+
pass
614+
615+
def centre(self):
616+
# return centre
617+
pass
618+
619+
# alpha, beta, gamma, xc, yc, e0, e1, e2, e3, e4, e5 = symbols("alpha, beta, gamma, xc, yc, e0, e1, e2, e3, e4, e5")
620+
# solve(eq, [alpha, beta, gamma, xc, yc])
621+
# eq = [
622+
# alpha - e0,
623+
# beta- e1,
624+
# 2 * gamma - e2,
625+
# -2 * (alpha * xc + gamma * yc) - e3,
626+
# -2 * (beta * yc + gamma * xc) - e4,
627+
# alpha * xc**2 + beta * yc**2 + 2 * gamma * xc * yc - 1 - e5
628+
# ]
629+
587630
if __name__ == "__main__":
588631

632+
print(Ellipse((500, 500), (100, 200)))
589633
p = Polygon2([[1, 3, 2], [2, 2, 4]])
590634
p.transformed(SE2(0, 0, np.pi/2)).vertices()
591635

0 commit comments

Comments
 (0)
0