xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
line.hpp
浏览该文件的文档.
1#pragma once
2
3#include <xcal/public.h>
4
8
9namespace xcal::mobject {
10
11class XCAL_API Line : public ComposedMObject<Line, BaseTransformableMobject,
12 StrokeableMObject> {
14 public:
17
18 private:
20
21 public:
23 : Line({x1, y1, z1}, {x2, y2, z2}) {}
24 Line(const vec& start, const vec& end)
25 : ComposedMObject{}, direct_(end - start) {
26 set_pos({(start.x() + end.x()) / 2, (start.y() + end.y()) / 2, 0});
27 }
28 explicit Line(float_t length) : direct_(vec{length, 0.0f}) {}
29
30 const vec4 start() const {
31 return vec4{pos().value() - (direct_.value() / 2.f), 1.0f};
32 }
33 const vec4 end() const {
34 return vec4{pos().value() + (direct_.value() / 2.f), 1.0f};
35 }
36 const vec& direct() const { return direct_.value(); }
37 property::Vec<float_t, 3>& direct() { return direct_; }
38 vec4 center() const { return vec4{pos().value(), 1.0f}; }
39
40 ~Line() override = default;
41};
42
43} // namespace xcal::mobject
const vec & direct() const
Definition line.hpp:36
const vec4 end() const
Definition line.hpp:33
vec4 center() const
Definition line.hpp:38
property::Vec< float_t, 3 > & direct()
Definition line.hpp:37
const vec4 start() const
Definition line.hpp:30
Line(const vec &start, const vec &end)
Definition line.hpp:24
~Line() override=default
Line(float_t x1, float_t y1, float_t z1, float_t x2, float_t y2, float_t z2)
Definition line.hpp:22
Line(float_t length)
Definition line.hpp:28
data_t & value()
Definition vec.hpp:26
Vector class template
Definition vec.hpp:206
constexpr _Tp & x()
Get the item at index 0
Definition vec.hpp:454
constexpr _Tp & y()
Get the item at index 1
Definition vec.hpp:465
基础图形对象类
#define XCAL_MOBJECT_TYPE(type)
float float_t
Definition public.h:27
#define XCAL_API
Definition public.h:69