#include "vector3.h" namespace stingray_plugin_foundation { inline void line_shapes::line(const Vector3 &p1, const Vector3 &p2, Color8 color, PointList & out_starts, PointList & out_ends, ColorList & out_colors) { out_starts.push_back(p1); out_ends.push_back(p2); out_colors.push_back(color); } inline void line_shapes::xyz_cross(const Vector3 &pos, float radius, Color8 color, PointList & out_starts, PointList & out_ends, ColorList & out_colors) { line(pos - vector3(radius,0,0), pos + vector3(radius,0,0), color, out_starts, out_ends, out_colors); line(pos - vector3(0,radius,0), pos + vector3(0,radius,0), color, out_starts, out_ends, out_colors); line(pos - vector3(0,0,radius), pos + vector3(0,0,radius), color, out_starts, out_ends, out_colors); } inline void line_shapes::circle(const Vector3 &pos, float radius, const Vector3 &normal, Color8 color, PointList & out_starts, PointList & out_ends, ColorList & out_colors, int segments) { Vector3 x, y; make_axes(normal, x, y); x *= radius; y *= radius; Vector3 prev; for( int i = 0; i <= segments; ++i ) { float t = ((math::pi*2.0f) / ((float)segments)) * (float)i; Vector3 point = pos + x * cosf(t) + y * sinf(t); if (i != 0) line(prev, point, color, out_starts, out_ends, out_colors); prev = point; } } inline void line_shapes::cone(const Vector3 &p1, const Vector3 &p2, float radius, Color8 color, PointList & out_starts, PointList & out_ends, ColorList & out_colors, int segments, int bars) { Vector3 n = normalize(p1 - p2); Vector3 x, y; make_axes(n, x, y); circle(p2, radius, n, color, out_starts, out_ends, out_colors, segments); for (int i=0; i