40 lines
697 B
C++
40 lines
697 B
C++
|
#pragma once
|
||
|
|
||
|
#include "shape.hpp"
|
||
|
#include "vertex.hpp"
|
||
|
|
||
|
|
||
|
namespace hpr::csg
|
||
|
{
|
||
|
|
||
|
class Edge : public Shape
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
|
||
|
Edge() = default;
|
||
|
|
||
|
~Edge() override = default;
|
||
|
|
||
|
explicit
|
||
|
Edge(const Shape& shape) :
|
||
|
Shape {shape.type() == Type::Edge ? shape : throw std::runtime_error("")}
|
||
|
{}
|
||
|
|
||
|
Edge(const vec3& p1, const vec3& p2) :
|
||
|
Shape {BRepBuilderAPI_MakeEdge(gp_Pnt(p1[0], p1[1], p1[2]), gp_Pnt(p2[0], p2[1], p2[2])).Shape()}
|
||
|
{}
|
||
|
|
||
|
Edge(const Vertex& v1, const Vertex& v2) :
|
||
|
Shape {BRepBuilderAPI_MakeEdge(v1.tcast(), v2.tcast()).Shape()}
|
||
|
{}
|
||
|
|
||
|
[[nodiscard]]
|
||
|
TopoDS_Edge tcast() const
|
||
|
{
|
||
|
return TopoDS::Edge(p_shape);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
}
|