feat(tdcgal/plane/plane.cpp-tdcgal/plane/objects.py): add Triangle2d
BREAKING CHANGE:
This commit is contained in:
parent
596c000ed6
commit
d7e0e3e8f8
|
|
@ -410,4 +410,29 @@ class Circle2D(Shape2D, Circle_2):
|
|||
def general_equation(self) -> str:
|
||||
return f"{str(self._expression.expand())} = 0"
|
||||
|
||||
# 三角形类
|
||||
class Triangle2D(Shape2D, Triangle_2):
|
||||
def __init__(
|
||||
self,
|
||||
points: Tuple[
|
||||
Union[Point2D, Tuple[float, float]],
|
||||
Union[Point2D, Tuple[float, float]],
|
||||
Union[Point2D, Tuple[float, float]],
|
||||
] = None,
|
||||
**kwargs,
|
||||
):
|
||||
"""
|
||||
三角形Triangle2D的初始化方法
|
||||
|
||||
Args:
|
||||
points: 三个端点
|
||||
"""
|
||||
Shape2D.__init__(self, **kwargs)
|
||||
points = [point_maker(p) for p in points]
|
||||
Triangle_2.__init__(self, *points)
|
||||
|
||||
# 重载`repr`方法,返回Triangle2D的字符串表示
|
||||
def __repr__(self) -> str:
|
||||
return f"Triangle2D(points: {[self.vertex(i) for i in range(3)]})"
|
||||
|
||||
|
||||
|
|
@ -204,6 +204,32 @@ void init_plane(py::module_ &m) {
|
|||
.def("opposite", &Circle_2::opposite, "返回反向的圆")
|
||||
.def("orthogonal_transform", &Circle_2::orthogonal_transform)
|
||||
.def("bbox", &Circle_2::bbox, "返回圆的边界框");
|
||||
|
||||
py::module_<Triangle_2>(m, "Triangle_2")
|
||||
.def(py::init<Point_2, Point_2, Point_2>())
|
||||
.def("vertex", &Triangle_2::vertex, "返回第`i % 3`个顶点, `i`是参数")
|
||||
.def("vertices", &Triangle_2::vertices, "返回三角形的三个顶点")
|
||||
.def(py::self == py::self)
|
||||
.def(py::self != py::self)
|
||||
.def("area", &Triangle_2::area, "返回三角形的面积")
|
||||
.def("is_degenerate", &Triangle_2::is_degenerate, "判断三角形是否退化")
|
||||
.def("orientation", &Triangle_2::orientation, "返回三角形的方向")
|
||||
.def("oriented_side", &Triangle_2::oriented_side,
|
||||
"判断点和三角形之间的位置关系")
|
||||
.def("bounded_side", &Triangle_2::bounded_side, "判断点和三角形的边界位置关系"
|
||||
"判断点是否在三角形的边上")
|
||||
.def("has_on_positive_side", &Triangle_2::has_on_positive_side,
|
||||
"判断点是否在三角形的正面上")
|
||||
.def("has_on_negative_side", &Triangle_2::has_on_negative_side,
|
||||
"判断点是否在三角形的负面上")
|
||||
.def("has_on_boundary", &Triangle_2::has_on_boundary)
|
||||
.def("has_on_bounded_side", &Triangle_2::has_on_bounded_side,
|
||||
"判断点是否在三角形的边界上")
|
||||
.def("has_on_unbounded_side", &Triangle_2::has_on_unbounded_side,
|
||||
"判断点是否在三角形的内部")
|
||||
.def("opposite", &Triangle_2::opposite, "返回反向的三角形")
|
||||
.def("bbox", &Triangle_2::bbox, "返回三角形的边界框")
|
||||
.def("transform", &Triangle_2::transform, "返回经过变换后的三角形")
|
||||
|
||||
m.def("squared_distance", &squared_distance<Point_2, Point_2>,
|
||||
"返回两个点的平方距离");
|
||||
|
|
|
|||
Loading…
Reference in New Issue