525666c31c
- C3d aggiornamento delle librerie ( 117968).
1112 lines
67 KiB
C++
1112 lines
67 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
\file
|
|
\brief \ru Отрисовка объектов.
|
|
\en Objects drawing. \~
|
|
|
|
*/
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __ALG_DRAW_H
|
|
#define __ALG_DRAW_H
|
|
|
|
#include <templ_s_array.h>
|
|
#include <templ_sptr.h>
|
|
#include <math_define.h>
|
|
#include <mesh.h>
|
|
#include <cur_contour.h>
|
|
|
|
|
|
#define TRGB_BLACK 0, 0, 0 ///< \ru Черный цвет. \en Black color. \~ \ingroup Drawing
|
|
#define TRGB_BLUE 0, 0, 192 ///< \ru Синий цвет. \en Blue color. \~ \ingroup Drawing
|
|
#define TRGB_GREEN 0, 128, 0 ///< \ru Зеленый цвет. \en Green color. \~ \ingroup Drawing
|
|
#define TRGB_CYAN 0, 128, 128 ///< \ru Голубой цвет. \en Cyan color. \~ \ingroup Drawing
|
|
#define TRGB_RED 192, 0, 0 ///< \ru Красный цвет. \en Red color. \~ \ingroup Drawing
|
|
#define TRGB_MAGENTA 96, 0, 192 ///< \ru Пурпурный цвет. \en Magenta color. \~ \ingroup Drawing
|
|
#define TRGB_BROWN 192, 128, 0 ///< \ru Коричневый цвет. \en Brown color. \~ \ingroup Drawing
|
|
#define TRGB_LIGHTGRAY 192, 192, 192 ///< \ru Светло-серый цвет. \en Light gray color \~ \ingroup Drawing
|
|
#define TRGB_DARKGRAY 128, 128, 128 ///< \ru Темно-серый цвет. \en Dark gray color \~ \ingroup Drawing
|
|
#define TRGB_LIGHTBLUE 0, 0, 255 ///< \ru Ярко-синий цвет. \en Light blue color. \~ \ingroup Drawing
|
|
#define TRGB_LIGHTGREEN 0, 255, 0 ///< \ru Ярко-зеленый цвет. \en Light green color. \~ \ingroup Drawing
|
|
#define TRGB_LIGHTCYAN 0, 96, 255 ///< \ru Светло-голубой цвет. \en Light cyan color \~ \ingroup Drawing
|
|
#define TRGB_LIGHTRED 255, 0, 0 ///< \ru Ярко-красный цвет. \en Light red color. \~ \ingroup Drawing
|
|
#define TRGB_LIGHTMAGENTA 96, 0, 255 ///< \ru Светло-пурпурный цвет. \en Light magenta color \~ \ingroup Drawing
|
|
#define TRGB_ORANGE 255, 128, 0 ///< \ru Оранжевый цвет. \en Orange color. \~ \ingroup Drawing
|
|
#define TRGB_YELLOW 255, 255, 0 ///< \ru Желтый цвет. \en Yellow color. \~ \ingroup Drawing
|
|
#define TRGB_WHITE 255, 255, 255 ///< \ru Белый цвет. \en White color. \~ \ingroup Drawing
|
|
|
|
#define TRGB_PURPLE 255, 0, 255 ///< \ru Светло-фиолетовый цвет. \en Purple color \~ \ingroup Drawing
|
|
#define TRGB_AZURE 0, 125, 255 ///< \ru Лазурный цвет. \en Azure color. \~ \ingroup Drawing
|
|
#define TRGB_TANGERINE 255, 136, 0 ///< \ru Мандариновый цвет. \en Tangerine color. \~ \ingroup Drawing
|
|
#define TRGB_CERISE 255, 0, 125 ///< \ru Светло-вишневый цвет. \en Cerise color. \~ \ingroup Drawing
|
|
#define TRGB_OLIVE 128, 128, 0 ///< \ru Оливковый цвет. \en Olive color. \~ \ingroup Drawing
|
|
#define TRGB_SPRINGGREEN 0, 255, 127 ///< \ru Весенне-зеленый цвет. \en Spring green color. \~ \ingroup Drawing
|
|
#define TRGB_AVIATION 125, 225, 255 ///< \ru Авиационный цвет. \en Aviation color. \~ \ingroup Drawing
|
|
#define TRGB_GOLD 205, 255, 25 ///< \ru Золотой цвет. \en Gold color. \~ \ingroup Drawing
|
|
|
|
#define TRGB_DELETE TRGB_GREEN // \ru цвет удаляемых объектов \en A color of deleted objects
|
|
#define TRGB_NEW TRGB_RED // \ru цвет вновь создаваемых объектов \en A color of new objects
|
|
#define TRGB_CLEAR TRGB_LIGHTGRAY // \ru Закрасить \en Clear
|
|
#define TRGB_SHOW TRGB_BLACK // \ru Показать \en Show
|
|
|
|
|
|
class MATH_CLASS MbSpaceItem;
|
|
class MATH_CLASS MbPlaneItem;
|
|
class MATH_CLASS MbTopItem;
|
|
class MATH_CLASS MbVertex;
|
|
class MATH_CLASS MbEdge;
|
|
class MATH_CLASS MbFace;
|
|
class MATH_CLASS MbCartPoint;
|
|
class MATH_CLASS MbPlaneItem;
|
|
class MATH_CLASS MbCartPoint;
|
|
class MATH_CLASS MbParamCurvePatch;
|
|
class MATH_CLASS MbMatrix3D;
|
|
class MATH_CLASS MbCartPoint3D;
|
|
class MATH_CLASS MbFloatPoint3D;
|
|
class MATH_CLASS MbMesh;
|
|
class MATH_CLASS MbCube;
|
|
class MATH_CLASS MbCurve3D;
|
|
class MATH_CLASS MbPolygon3D;
|
|
class MATH_CLASS MbVector3D;
|
|
class MATH_CLASS MbPlacement3D;
|
|
class MATH_CLASS MbVector;
|
|
class MATH_CLASS MbCartPoint;
|
|
class MATH_CLASS MbCurve;
|
|
class MATH_CLASS MbSurface;
|
|
class MATH_CLASS MbSurfaceCurve;
|
|
class MATH_CLASS MbContourOnSurface;
|
|
class MATH_CLASS MbSurfaceIntersectionCurve;
|
|
class MATH_CLASS MbCurveBoundedSurface;
|
|
class MATH_CLASS MbGrid;
|
|
class MATH_CLASS MbPlanarGrid;
|
|
class MATH_CLASS MbCollection;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Интерфейс отладочной отрисовки приложения.
|
|
\en Interface of debug drawing of application. \~
|
|
\details \ru Интерфейс отладочной отрисовки для CallBack связи с вызывающим приложением.
|
|
\en Interface of debug drawing for connection with the calling application using callbacks. \~
|
|
\ingroup Drawing
|
|
*/
|
|
// ---
|
|
class IfDrawGI {
|
|
public:
|
|
IfDrawGI() {}
|
|
virtual ~IfDrawGI() {}
|
|
|
|
public:
|
|
/// \ru Отрисовать объект. \en Draw an any object.
|
|
virtual void DrawItem( const MbRefItem * ri, int R, int G, int B, const MbMatrix3D & from = MbMatrix3D::identity, int width = 1 ) = 0;
|
|
/// \ru Отрисовать трехмерный геометрический объект. \en Draw a three-dimensional geometric object.
|
|
virtual void DrawItem( const MbSpaceItem * gi, int R, int G, int B, int width = 1 ) = 0;
|
|
// Отрисовать трехмерный геометрический объект с размещением по матрице.
|
|
virtual void DrawItem( const MbSpaceItem * gi, int R, int G, int B, const MbMatrix3D & from, int width = 1 ) = 0;
|
|
/// \ru Отрисовать полигональный геометрический объект. \en Draw a polygonal geometric object.
|
|
virtual void DrawMesh( const MbMesh * ms, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать полигон. \en Draw a polygon.
|
|
virtual void DrawPolygon( const MbPolygon3D * polygon, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать трехмерную точку. \en Draw a three-dimensional point.
|
|
virtual void DrawItem( const MbCartPoint3D & gi, int R, int G, int B, int width = 2 ) = 0;
|
|
/// \ru Отрисовать трехмерную точку. \en Draw a three-dimensional point.
|
|
virtual void DrawPoint( const MbCartPoint3D * gi, int R, int G, int B, int width = 2 ) = 0;
|
|
/// \ru Отрисовать трехмерный отрезок. \en Draw a three-dimensional segment.
|
|
virtual void DrawLine( const MbCartPoint3D & q1, const MbCartPoint3D & q2, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать полилинию. \en Draw a polyline.
|
|
virtual void DrawPolyline( SArray<MbCartPoint3D> & points, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать трехмерный отрезок. \en Draw a three-dimensional segment.
|
|
virtual void DrawLine( const MbCartPoint3D & p, const MbVector3D & v, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать трехмерный отрезок. \en Draw a three-dimensional segment.
|
|
virtual void DrawLine( const MbFloatPoint3D & q1, const MbFloatPoint3D & q2, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать участок трехмерной кривой. \en Draw a piece of a three-dimensional curve.
|
|
virtual void DrawCurve( const MbCurve3D & curve, double t1, double t2, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать часть двумерной кривой на плоскости. \en Draw a piece of a two-dimensional curve on a plane.
|
|
virtual void DrawCurve( const MbCurve & curve, const MbPlacement3D & place, double t1, double t2, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать двумерный геометрический объект. \en Draw a two-dimensional geometric object.
|
|
virtual void DrawItem( const MbPlaneItem * gi, int R, int G, int B, const MbMatrix3D & from, int width = 1 ) = 0;
|
|
/// \ru Отрисовать двумерный геометрический объект. \en Draw a two-dimensional geometric object.
|
|
virtual void DrawItem( const MbPlaneItem * gi, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать двумерную точку. \en Draw a two-dimensional point.
|
|
virtual void DrawPoint( const MbCartPoint * gi, int R, int G, int B, const MbMatrix3D & from, int width = 1 ) = 0;
|
|
/// \ru Отрисовать двумерную точку. \en Draw a two-dimensional point.
|
|
virtual void DrawPoint( const MbCartPoint * gi, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать двумерный отрезок. \en Draw a two-dimensional segment.
|
|
virtual void DrawLine( const MbCartPoint & q1, const MbCartPoint & q2, int R, int G, int B, const MbMatrix3D & from, int width = 1 ) = 0;
|
|
/// \ru Отрисовать двумерный отрезок. \en Draw a two-dimensional segment.
|
|
virtual void DrawLine( const MbCartPoint & q1, const MbCartPoint & q2, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать топологический объект. \en Draw a topological object.
|
|
virtual void DrawItem( const MbTopItem * ti, int R, int G, int B, const MbMatrix3D & from = MbMatrix3D::identity, int width = 1 ) = 0;
|
|
/// \ru Отрисовать ребро. \en Draw an edge.
|
|
virtual void DrawEdge( const MbEdge * edge, int r, int g, int b, bool drawVerts, int width = 1 ) = 0;
|
|
/// \ru Отрисовать патч двумерной кривой. \en Draw a patch of a two-dimensional curve.
|
|
virtual void PutPatch( const MbCartPoint & pnt, const MbVector & dir, double a, double b, int R, int G, int B, const MbMatrix3D & mapInto ) = 0;
|
|
/// \ru Отрисовать габаритный куб. \en Draw a bounding box.
|
|
virtual void PutCube( const MbCube & gab, int width = 1, bool bDrawRed = true ) = 0;
|
|
/// \ru Отрисовать систему координат. \en Draw a coordinate system.
|
|
virtual void DrawPlacement3D( const MbPlacement3D & place, double lenAxes, int width = 1 ) = 0;
|
|
/// \ru Очистить текущее окно. \en Clear the active window.
|
|
virtual void DrawClearMap() = 0;
|
|
/// \ru Отрисовать двумерную кривую на поверхности. \en Draw a two-dimensional curve on a surface.
|
|
virtual void DrawItem( const MbCurve * curve, const MbSurface * surface, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать карту кривой на поверхности. \en Draw a map of a curve on a surface.
|
|
virtual void DrawCurveMap( const MbCurve * curve, const MbSurface * surface, int R, int G, int B ) = 0;
|
|
// \ru Отрисовать карту кривой на поверхности в масштабе, определяемом так, чтобы активная область окна покрывалась заданным прямоугольником rect.
|
|
// Флаг isotropic отвечает за отрисовку объектов равных масштабах по осям. Если isotropic==false, окружность может отобразиться как эллипс, квадрат как прямоугольник и т.п.
|
|
// \en Draw a map of a curve on a surface with a specified scale determined as a way of covering an active window by the given rectangle rect.
|
|
// The flag isotropic is responsible for drawing in equal scales along the axes. If isotropic==false then a circle can be shown as an ellipsis, a square as an rectangle etc.
|
|
virtual void DrawCurveMap( const MbCurve * curve, const MbSurface * surface, const MbRect & rect, int R, int G, int B, const int boundaryWidth, const int curveWidth, const bool isotropic, const bool showSurfaceBoundaries ) = 0;
|
|
/// \ru Отрисовать кривую на поверхности. \en Draw a curve on a surface.
|
|
virtual void DrawSurfaceCurveMap( const MbSurfaceCurve * scurve, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать точку на поверхности. \en Draw a point on a surface.
|
|
virtual void DrawPointMap( const MbCartPoint * pnt, const MbSurface * surface, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать кривую пересечения на параметрической плоскости. \en Draw an intersection curve on a parametric plane.
|
|
virtual void DrawSurfaceIntersectionMap( const MbSurfaceIntersectionCurve * gi, int R1, int G1, int B1, int R2, int G2, int B2 ) = 0;
|
|
/// \ru Отрисовать контур на поверхности в параметрической плоскости. \en Draw a contour on a surface in a parametric plane.
|
|
virtual void DrawContourOnSurfaceMap( const MbContourOnSurface * gi, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать ограничивающие кривые усеченной поверхности в ее параметрической плоскости. \en Draw bounding curves of a trimmed surface in its parametric plane.
|
|
virtual void DrawCurveBoundedSurfaceMap( const MbCurveBoundedSurface * bnds, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать параметрическую плоскость поверхности. \en Draw a parametric plane of a surface.
|
|
virtual void DrawSurfaceMap( const MbSurface * surface, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать ограничивающие кривые грани в ее параметрической плоскости. \en Draw bounding curves of a face in its parametric plane.
|
|
virtual void DrawFaceMap( const MbFace *, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать параметрическую точку поверхности. \en Draw a parametric point of a surface.
|
|
virtual void DrawPoint( const MbSurface & surface, const MbCartPoint & uv, int R, int G, int B, int width = 2 ) = 0;
|
|
/// \ru Отрисовать массив 3d-точек по массиву 2d-точек и поверхности. \en Draw an array of 3D-points by an array of 2D-points and a surface.
|
|
virtual void DrawPoints( const MbSurface & surface, const SArray<MbCartPoint> & uvArr, int R, int G, int B, int width = 2 ) = 0;
|
|
/// \ru Отрисовать массив 3d-точек по массиву параметров и кривой. \en Draw an array of 3D-points by an array of parameters and a curve.
|
|
virtual void DrawPoints( const MbCurve3D & curve, const SArray<double> & tArr, int R, int G, int B, int width = 2 ) = 0;
|
|
/// \ru Отрисовать массив 3d-точек. \en Draw an array of 3D-points.
|
|
virtual void DrawPoints( const SArray<MbCartPoint3D> & pnts, int R, int G, int B, int width = 2 ) = 0;
|
|
/// \ru Отрисовать триангуляцию. \en Draw a triangulation.
|
|
virtual void PutGrid( const MbGrid & grid, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать треугольник. \en Draw a triangle.
|
|
virtual void PutTriangle( const MbGrid & grid, ptrdiff_t index, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать треугольник. \en Draw a triangle.
|
|
virtual void PutTriangle( const MbCollection & coll, ptrdiff_t index, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать треугольник. \en Draw a triangle.
|
|
virtual void PutTriangle( const MbSurface & surface,
|
|
const MbCartPoint & uv0, const MbCartPoint & uv1, const MbCartPoint & uv2,
|
|
int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать четырёхугольник. \en Draw a quadrangle.
|
|
virtual void PutQuadrangle( const MbGrid & grid, ptrdiff_t index, int R, int G, int B ) = 0;
|
|
/// \ru Отрисовать двумерную триангуляцию. \en Draw a two-dimensional triangulation.
|
|
virtual void PutPlanarGrid( MbPlanarGrid & grid, const MbPlacement3D & place, int R, int G, int B, int width = 1 ) = 0;
|
|
/// \ru Отрисовать триангуляционную сетку на поверхности. \en Draw a triangular mesh on a surface.
|
|
virtual void DrawGridMap( const MbGrid & grid, const MbSurface & surface, int R, int G, int B ) = 0;
|
|
/// \ru Стереть модель. \en Delete model.
|
|
virtual void EraseModel() = 0;
|
|
/// \ru Перерисовать модель. \en Redraw the model.
|
|
virtual void RedrawModel() = 0;
|
|
|
|
OBVIOUS_PRIVATE_COPY( IfDrawGI )
|
|
};
|
|
|
|
|
|
#if defined(_DRAWGI)
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Функции отладочной отрисовки объектов приложения.
|
|
\en Functions of debug drawing of application objects. \~
|
|
\details \ru Функции отладочной отрисовки геометрических объектов заданным цветом в текущем окне
|
|
используют интерфейс IfDrawGI, полученный через функцию SetDrawGI.
|
|
\en Functions of debug drawing of geometric objects by a given color in an active window
|
|
use the interface 'IfDrawGI' obtained by the function 'SetDrawGI'. \~
|
|
\ingroup Drawing
|
|
*/
|
|
// ---
|
|
class MATH_CLASS DrawGI {
|
|
public:
|
|
|
|
////////////////////// \ru Отрисовка трехмерных объектов. //////////////////////////
|
|
////////////////////// \en Drawing of three-dimensional objects. //////////////////////////
|
|
|
|
/** \brief \ru Отрисовать трехмерный геометрический объект.
|
|
\en Draw a three-dimensional geometric object. \~
|
|
\details \ru Функция геометрического объекта заданным цветом в текущем окне.
|
|
\en The function of geometric object drawing by a given color in an active window. \~
|
|
\param[in] gi - \ru Пространственный объект.
|
|
\en The spatial object. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawItem( const MbSpaceItem * gi, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать полигональный геометрический объект.
|
|
\en Draw a polygonal geometric object. \~
|
|
\details \ru Функция отрисовки полигонального геометрического объекта заданным цветом в текущем окне.
|
|
\en The function of the polygonal geometric object drawing by a given color in an active window. \~
|
|
\param[in] ms - \ru Фасетный объект.
|
|
\en The mesh. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawMesh( const MbMesh * ms, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать полигон.
|
|
\en Draw a polygon. \~
|
|
\details \ru Функция отрисовки полигона заданным цветом в текущем окне.
|
|
\en The function of polygon drawing by a given color in an active window. \~
|
|
\param[in] polygon - \ru Полигон.
|
|
\en The polygon. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPolygon( const MbPolygon3D * polygon, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать трехмерную точку.
|
|
\en Draw a three-dimensional point. \~
|
|
\details \ru Функция отрисовки точки заданным цветом в текущем окне.
|
|
\en The function of point drawing by a given color in an active window. \~
|
|
\param[in] gi - \ru Исходная точка.
|
|
\en The initial point. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawItem( const MbCartPoint3D & gi, int R, int G, int B, int width = 2 );
|
|
static void DrawPoint( const MbCartPoint3D * gi, int R, int G, int B, int width = 2 );
|
|
|
|
/** \brief \ru Отрисовать трехмерный отрезок.
|
|
\en Draw a three-dimensional segment. \~
|
|
\details \ru Функция отрисовки отрезка заданным цветом в текущем окне. Отрезок задается
|
|
крайними точками.
|
|
\en The function of segment drawing by a given color in an active window. A segment is specified
|
|
by the end points. \~
|
|
\param[in] q1, q2 - \ru Исходные точки.
|
|
\en Initial points. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawLine( const MbCartPoint3D & q1, const MbCartPoint3D & q2, int R, int G, int B, int width = 1 );
|
|
|
|
|
|
/** \brief \ru Отрисовать полилинию.
|
|
\en Draw a polyline. \~
|
|
\details \ru Функция отрисовки полилинии заданным цветом в текущем окне. Полилиния задается
|
|
массивом трехмерных точек.
|
|
\en The function of polyline drawing by a given color in an active window. Polyline is specified
|
|
by an array of three-dimensional points. \~
|
|
\param[in] points - \ru Исходный массив точек.
|
|
\en The initial array of points. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPolyline( SArray<MbCartPoint3D> & points, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать трехмерный отрезок.
|
|
\en Draw a three-dimensional segment. \~
|
|
\details \ru Функция отрисовки отрезка заданным цветом в текущем окне. Отрезок задается
|
|
точкой и вектором.
|
|
\en The function of segment drawing by a given color in an active window. A segment is specified
|
|
by point and vector. \~
|
|
\param[in] p - \ru Исходная точка.
|
|
\en The initial point. \~
|
|
\param[in] v - \ru Исходный вектор.
|
|
\en The initial vector. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawLine( const MbCartPoint3D & p, const MbVector3D & v, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать трехмерный отрезок.
|
|
\en Draw a three-dimensional segment. \~
|
|
\details \ru Функция отрисовки отрезка заданным цветом в текущем окне. Отрезок задается
|
|
крайними точками.
|
|
\en The function of segment drawing by a given color in an active window. A segment is specified
|
|
by the end points. \~
|
|
\param[in] q1, q2 - \ru Исходные точки.
|
|
\en Initial points. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawLine( const MbFloatPoint3D & q1, const MbFloatPoint3D & q2, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать участок трехмерной кривой.
|
|
\en Draw a piece of a three-dimensional curve. \~
|
|
\details \ru Функция отрисовки участка кривой заданным цветом в текущем окне. Участок
|
|
кривой задается параметрами начала и конца участка.
|
|
\en The function of curve piece drawing by a given color in an active window. A piece
|
|
of a curve is specified by start and end parameters of a piece. \~
|
|
\param[in] curve - \ru Исходная кривая.
|
|
\en An initial curve. \~
|
|
\param[in] t1, t2 - \ru Начало и конец участка кривой, который требуется отрисовать.
|
|
\en The start parameter and the end parameter of a curve piece which is required to draw. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawCurve( const MbCurve3D & curve, double t1, double t2, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать часть двумерной кривой на плоскости.
|
|
\en Draw a piece of a two-dimensional curve on a plane. \~
|
|
\details \ru Функция отрисовки участка кривой заданным цветом в текущем окне. Участок
|
|
кривой задается параметрами начала и конца участка.
|
|
\en The function of curve piece drawing by a given color in an active window. A piece
|
|
of a curve is specified by start and end parameters of a piece. \~
|
|
\param[in] curve - \ru Исходная кривая.
|
|
\en An initial curve. \~
|
|
\param[in] place - \ru Исходный плейсмент. Задает плоскость для отрисовки.
|
|
\en The initial placement. It specifies the plane for drawing. \~
|
|
\param[in] t1, t2 - \ru Начало и конец участка кривой, который требуется отрисовать.
|
|
\en The start parameter and the end parameter of a curve piece which is required to draw. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawCurve( const MbCurve & curve, const MbPlacement3D & place, double t1, double t2, int R, int G, int B, int width = 1 );
|
|
|
|
////////////////////// \ru Отрисовка двумерных объектов. /////////////////////////// \en Drawing of two-dimensional objects. ///////////////////////////
|
|
|
|
/** \brief \ru Отрисовать двумерный геометрический объект.
|
|
\en Draw a two-dimensional geometric object. \~
|
|
\details \ru Функция геометрического объекта заданным цветом в текущем окне.
|
|
\en The function of geometric object drawing by a given color in an active window. \~
|
|
\param[in] gi - \ru Исходный объект.
|
|
\en The initial object. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] from - \ru Матрица перехода из плейсмента объекта в глобальную систему координат.
|
|
\en The matrix of transformation from the object placement to the global coordinate system. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawItem( const MbPlaneItem * gi, int R, int G, int B, const MbMatrix3D & from, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать двумерный геометрический объект.
|
|
\en Draw a two-dimensional geometric object. \~
|
|
\details \ru Функция геометрического объекта заданным цветом в текущем окне.
|
|
\en The function of geometric object drawing by a given color in an active window. \~
|
|
\param[in] gi - \ru Исходный объект.
|
|
\en The initial object. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawItem( const MbPlaneItem * gi, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать двумерную точку.
|
|
\en Draw a two-dimensional point. \~
|
|
\details \ru Функция отрисовки точки заданным цветом в текущем окне.
|
|
\en The function of point drawing by a given color in an active window. \~
|
|
\param[in] gi - \ru Исходная точка.
|
|
\en The initial point. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] from - \ru Матрица перехода из плейсмента объекта в глобальную систему координат.
|
|
\en The matrix of transformation from the object placement to the global coordinate system. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPoint( const MbCartPoint * gi, int R, int G, int B, const MbMatrix3D & from, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать двумерную точку.
|
|
\en Draw a two-dimensional point. \~
|
|
\details \ru Функция отрисовки точки заданным цветом в текущем окне.
|
|
\en The function of point drawing by a given color in an active window. \~
|
|
\param[in] gi - \ru Исходная точка.
|
|
\en The initial point. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPoint( const MbCartPoint * gi, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать двумерный отрезок.
|
|
\en Draw a two-dimensional segment. \~
|
|
\details \ru Функция отрисовки отрезка заданным цветом в текущем окне. Отрезок задается
|
|
крайними точками.
|
|
\en The function of segment drawing by a given color in an active window. A segment is specified
|
|
by the end points. \~
|
|
\param[in] q1, q2 - \ru Исходные точки.
|
|
\en Initial points. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] from - \ru Матрица перехода из плейсмента объекта в глобальную систему координат.
|
|
\en The matrix of transformation from the object placement to the global coordinate system. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawLine( const MbCartPoint & q1, const MbCartPoint & q2, int R, int G, int B, const MbMatrix3D & from, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать трехмерный отрезок.
|
|
\en Draw a three-dimensional segment. \~
|
|
\details \ru Функция отрисовки отрезка заданным цветом в текущем окне. Отрезок задается
|
|
крайними точками.
|
|
\en The function of segment drawing by a given color in an active window. A segment is specified
|
|
by the end points. \~
|
|
\param[in] q1, q2 - \ru Исходные точки.
|
|
\en Initial points. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawLine( const MbCartPoint & q1, const MbCartPoint & q2, int R, int G, int B, int width = 1 );
|
|
|
|
////////////////////////// \ru Отрисовка топологических объектов. ////////////////// \en Drawing of topological objects. //////////////////
|
|
|
|
/** \brief \ru Отрисовать топологический объект.
|
|
\en Draw a topological object. \~
|
|
\details \ru Топологический объект отрисовывается заданным цветом в текущем окне.
|
|
\en A topological object is drawn by a given color in an active window. \~
|
|
\param[in] ti - \ru Исходный топологический объект.
|
|
\en The initial topological object. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] from - \ru Матрица перехода из плейсмента объекта в глобальную систему координат.
|
|
\en The matrix of transformation from the object placement to the global coordinate system. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawItem( const MbTopItem * ti, int R, int G, int B, const MbMatrix3D & from = MbMatrix3D::identity, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать ребро.
|
|
\en Draw an edge. \~
|
|
\details \ru Ребро отрисовывается заданным цветом в текущем окне. При установке соответствующего
|
|
флага отрисовываются вершины.
|
|
\en An edge is drawn by a given color in an active window. If the corresponding flag is set,
|
|
the vertices are drawn. \~
|
|
\param[in] edge - \ru Исходное ребро.
|
|
\en The initial edge. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] drawVerts - \ru Флаг отрисовки вершин ребра.
|
|
\en Whether edge vertices are drawn. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawEdge( const MbEdge * edge, int R, int G, int B, bool drawVerts, int width = 1 );
|
|
|
|
////////////////////// \ru Отрисовка вспомогательных объектов. ///////////////////// \en Drawing of assisting items. /////////////////////
|
|
|
|
/** \brief \ru Отрисовать патч двумерной кривой.
|
|
\en Draw a patch of a two-dimensional curve. \~
|
|
\details \ru Патч отрисовывается заданным цветом в текущем окне.
|
|
\en A patch is drawn by a given color in an active window. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] mapInto - \ru Матрица перехода в локальную систему координат.
|
|
\en The matrix of transformation to the local coordinate system. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutPatch( const MbCartPoint & pnt, const MbVector & dir, double a, double b, int R, int G, int B, const MbMatrix3D & mapInto );
|
|
|
|
/** \brief \ru Отрисовать габаритный куб в текущем окне.
|
|
\en Draw a bounding box in an active window. \~
|
|
\details \ru Куб отрисовывается либо красным, либо синим цветом в текущем окне.
|
|
\en A bounding box is drawn by the red color or by the blue color in an active window. \~
|
|
\param[in] gab - \ru Исходный габаритный куб.
|
|
\en The initial bounding box. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\param[in] bDrawRed - \ru Флаг отрисовки красным цветом. Если false, отрисовывается
|
|
синим цветом.
|
|
\en Whether the red color is used. If the value is 'false' then to draw by
|
|
the blue color. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutCube( const MbCube & gab, int width = 1, bool bDrawRed = true );
|
|
|
|
/** \brief \ru Отрисовать систему координат.
|
|
\en Draw a coordinate system. \~
|
|
\details \ru Система координат отрисовывается с заданными длинами осей.
|
|
\en A coordinate system is drawn with given axes lengths. \~
|
|
\param[in] place - \ru Исходная система координат.
|
|
\en The initial coordinate system. \~
|
|
\param[in] lenAxes - \ru Длина осей.
|
|
\en Axes lengths. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPlacement3D( const MbPlacement3D & place, double lenAxes, int width = 1 );
|
|
|
|
////////// \ru Отрисовка объектов в пространстве параметров поверхности. /////////// \en Drawing of objects in a surface parameter space. ///////////
|
|
|
|
/// \ru Очистить текущее окно. \en Clear the active window.
|
|
static void DrawClearMap();
|
|
|
|
/** \brief \ru Отрисовать двумерную кривую на поверхности.
|
|
\en Draw a two-dimensional curve on a surface. \~
|
|
\details \ru Отрисовка заданной двумерной кривой на заданной поверхности заданным цветом
|
|
в текущем окне.
|
|
\en Drawing of a given two-dimensional curve on a given surface by a given color
|
|
in an active window. \~
|
|
\param[in] curve - \ru Исходная двумерная кривая.
|
|
\en An initial two-dimensional curve. \~
|
|
\param[in] surface - \ru Исходная поверхность.
|
|
\en The initial surface. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawItem( const MbCurve * curve, const MbSurface * surface, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать карту кривой на поверхности.
|
|
\en Draw a map of a curve on a surface. \~
|
|
\details \ru Отрисовка карты заданной кривой на заданной поверхности заданным цветом
|
|
в текущем окне.
|
|
\en Drawing of a map of a given curve on a given surface by a given color
|
|
in an active window. \~
|
|
\param[in] curve - \ru Исходная кривая.
|
|
\en An initial curve. \~
|
|
\param[in] surface - \ru Исходная поверхность.
|
|
\en The initial surface. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawCurveMap( const MbCurve * curve, const MbSurface * surface, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать кривую на поверхности.
|
|
\en Draw a curve on a surface. \~
|
|
\details \ru Отрисовка кривой на поверхности в параметрической плоскости заданным цветом
|
|
в текущем окне.
|
|
\en Drawing of a curve on a surface in a parametric plane by a given color
|
|
in an active window. \~
|
|
\param[in] scurve - \ru Исходная кривая на поверхности.
|
|
\en The initial curve on a surface. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawSurfaceCurveMap( const MbSurfaceCurve * scurve, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать точку на поверхности.
|
|
\en Draw a point on a surface. \~
|
|
\details \ru Отрисовка точки на поверхности заданным цветом в текущем окне.
|
|
\en Drawing of point on a surface by a given color in an active window. \~
|
|
\param[in] pnt - \ru Исходная точка.
|
|
\en The initial point. \~
|
|
\param[in] surface - \ru Исходная поверхность.
|
|
\en The initial surface. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPointMap( const MbCartPoint * pnt, const MbSurface * surface, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать кривую пересечения на параметрической плоскости.
|
|
\en Draw an intersection curve on a parametric plane. \~
|
|
\details \ru Отрисовывается кривая 1 цветом 1 на поверхности 1 и кривая 2 цветом 2 на поверхности 2.
|
|
\en The curve 1 is drawn by the color 1 on the surface 1 and the curve 2 is drawn by the color 2 on the surface 2. \~
|
|
\param[in] gi - \ru Кривая пересечения.
|
|
\en The intersection curve \~
|
|
\param[in] R1, R2 - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G1, G2 - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B1, B2 - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawSurfaceIntersectionMap( const MbSurfaceIntersectionCurve * gi, int R1, int G1, int B1, int R2, int G2, int B2 );
|
|
|
|
/** \brief \ru Отрисовать контур на поверхности в параметрической плоскости.
|
|
\en Draw a contour on a surface in a parametric plane. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] gi - \ru Контур на поверхности.
|
|
\en The contour on a surface. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawContourOnSurfaceMap( const MbContourOnSurface * gi, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать ограничивающие кривые усеченной поверхности в ее параметрической плоскости.
|
|
\en Draw bounding curves of a trimmed surface in its parametric plane. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] bnds - \ru Ограниченная кривыми поверхность.
|
|
\en The surface bounded by curves. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawCurveBoundedSurfaceMap( const MbCurveBoundedSurface * bnds, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать параметрическую плоскость поверхности.
|
|
\en Draw a parametric plane of a surface. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] surface - \ru Исходная поверхность.
|
|
\en The initial surface. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawSurfaceMap( const MbSurface * surface, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать параметрическую точку поверхности.
|
|
\en Draw a parametric point of a surface. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] surface - \ru Исходная поверхность.
|
|
\en The initial surface. \~
|
|
\param[in] uv - \ru Исходная точка.
|
|
\en The initial point. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPoint( const MbSurface & surface, const MbCartPoint & uv, int R, int G, int B, int width = 2 );
|
|
|
|
/** \brief \ru Отрисовать массив 3d-точек по массиву 2d-точек и поверхности.
|
|
\en Draw an array of 3D-points by an array of 2D-points and a surface. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] surface - \ru Исходная поверхность.
|
|
\en The initial surface. \~
|
|
\param[in] uvArr - \ru Исходный массив двумерных точек.
|
|
\en The initial array of two-dimensional points. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPoints( const MbSurface & surface, const SArray<MbCartPoint> & uvArr, int R, int G, int B, int width = 2 );
|
|
|
|
/** \brief \ru Отрисовать массив 3d-точек по массиву параметров и кривой.
|
|
\en Draw an array of 3D-points by an array of parameters and a curve. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] curve - \ru Исходная кривая.
|
|
\en The initial curve. \~
|
|
\param[in] tArr - \ru Исходный массив точек на кривой.
|
|
\en The initial array of points on a curve. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPoints( const MbCurve3D & curve, const SArray<double> & tArr, int R, int G, int B, int width = 2 );
|
|
|
|
/** \brief \ru Отрисовать массив 3d-точек.
|
|
\en Draw an array of 3D-points. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] pnts - \ru Исходный массив трехмерных точек.
|
|
\en The initial array of three-dimensional points. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawPoints( const SArray<MbCartPoint3D> & pnts, int R, int G, int B, int width = 2 );
|
|
|
|
///////////////////////// \ru Отрисовка триангуляции. ////////////////////////////// \en Drawing of a triangulation. //////////////////////////////
|
|
|
|
/** \brief \ru Отрисовать триангуляцию.
|
|
\en Draw a triangulation. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] grid - \ru Триангуляционная сетка.
|
|
\en The triangular mesh. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutGrid( const MbGrid & grid, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать треугольник.
|
|
\en Draw a triangle. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне. Нужный треугольник из триангуляции
|
|
задается индексом.
|
|
\en Drawing by a given color in an active window. A necessary triangle from triangulation
|
|
is specified by an index. \~
|
|
\param[in] grid - \ru Триангуляционная сетка.
|
|
\en The triangular mesh. \~
|
|
\param[in] index - \ru Индекс треугольника.
|
|
\en The index of triangle. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutTriangle( const MbGrid & grid, ptrdiff_t index, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать треугольник.
|
|
\en Draw a triangle. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне. Нужный треугольник из триангуляции
|
|
задается индексом.
|
|
\en Drawing by a given color in an active window. A necessary triangle from triangulation
|
|
is specified by an index. \~
|
|
\param[in] grid - \ru Триангуляционная сетка.
|
|
\en The triangular mesh. \~
|
|
\param[in] index - \ru Индекс треугольника.
|
|
\en The index of triangle. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutTriangle( const MbCollection & coll, ptrdiff_t index, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать треугольник.
|
|
\en Draw a triangle. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] surface - \ru Поверхность.
|
|
\en The surface. \~
|
|
\param[in] uv0, uv1, uv2 - \ru Точки в параметрах поверхности.
|
|
\en Points in surface parameters. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutTriangle( const MbSurface & surface,
|
|
const MbCartPoint & uv0, const MbCartPoint & uv1, const MbCartPoint & uv2,
|
|
int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать четырёхугольник.
|
|
\en Draw a quadrangle. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне. Нужный четырёхугольник из триангуляции
|
|
задается индексом.
|
|
\en Drawing by a given color in an active window. A necessary quadrangle from triangulation
|
|
is specified by an index. \~
|
|
\param[in] grid - \ru Триангуляционная сетка.
|
|
\en The triangular mesh. \~
|
|
\param[in] index - \ru Индекс четырёхугольник.
|
|
\en The index of quadrangle. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutQuadrangle( const MbGrid & grid, ptrdiff_t index, int R, int G, int B );
|
|
|
|
/** \brief \ru Отрисовать двумерную триангуляцию.
|
|
\en Draw a two-dimensional triangulation. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] grid - \ru Триангуляционная сетка.
|
|
\en The triangular mesh. \~
|
|
\param[in] place - \ru Исходная плоскость.
|
|
\en The initial plane. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\param[in] width - \ru Ширина линий рисования.
|
|
\en The width of the draw lines. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void PutPlanarGrid( MbPlanarGrid & grid, const MbPlacement3D & place, int R, int G, int B, int width = 1 );
|
|
|
|
/** \brief \ru Отрисовать триангуляционную сетку на поверхности.
|
|
\en Draw a triangular mesh on a surface. \~
|
|
\details \ru Отрисовывается заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\param[in] grid - \ru Триангуляционная сетка.
|
|
\en The triangular mesh. \~
|
|
\param[in] surface - \ru Исходная поверхность.
|
|
\en The initial surface. \~
|
|
\param[in] R - \ru Красный цвет [0,255].
|
|
\en Red color [0,255]. \~
|
|
\param[in] G - \ru Зеленый цвет [0,255].
|
|
\en Green color [0,255]. \~
|
|
\param[in] B - \ru Синий цвет [0,255].
|
|
\en Blue color [0,255]. \~
|
|
\ingroup Drawing
|
|
*/
|
|
static void DrawGridMap( const MbGrid & grid, const MbSurface & surface, int R, int G, int B );
|
|
|
|
/** \brief Стереть модель.
|
|
\ingroup Drawing
|
|
*/
|
|
static void EraseModel();
|
|
|
|
/** \brief Перерисовать модель.
|
|
\ingroup Drawing
|
|
*/
|
|
static void RedrawModel();
|
|
|
|
}; // class DrawGI
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Отрисовать объект.
|
|
\en Draw an object. \~
|
|
\details \ru Отрисовать объект заданным цветом в текущем окне.
|
|
\en Drawing by a given color in an active window. \~
|
|
\ingroup Drawing
|
|
*/
|
|
// ---
|
|
template <class Type>
|
|
void DrawItem( SPtr<Type> & item, int R, int G, int B ) {
|
|
DrawGI::DrawItem( item.get(), R, G, B );
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Отрисовать множество объектов.
|
|
\en Draw a set of objects. \~
|
|
\details \ru Отрисовать множество объектов заданным цветом в текущем окне.
|
|
\en Draw a set of objects by a given color in an active window. \~
|
|
\ingroup Drawing
|
|
*/
|
|
// ---
|
|
template <class PtrArray>
|
|
void DrawItems( const PtrArray & items, int R, int G, int B )
|
|
{
|
|
for ( size_t k = 0, cnt = items.size(); k < cnt; ++k )
|
|
DrawGI::DrawItem( items[k], R, G, B );
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Отрисовать вершину с прилегающими ребрами.
|
|
\en Draw a vertex with adjacent edges. \~
|
|
\details \ru Отрисовать вершину с прилегающими ребрами заданным цветом в текущем окне.
|
|
\en Draw a vertex with adjacent edges by a given color in an active window. \~
|
|
\ingroup Drawing
|
|
*/
|
|
// ---
|
|
template <class Vertex, class Edges>
|
|
void DrawVertexEdges( const Vertex * vertex, int vR, int vG, int vB,
|
|
const Edges & edges, int eR, int eG, int eB )
|
|
{
|
|
DrawGI::DrawItem( vertex, vR, vG, vB );
|
|
MbMesh edgeMesh;
|
|
MbStepData stepData( ist_SpaceStep, Math::visualSag );
|
|
MbFormNote note(true, false);
|
|
for ( size_t k = 0, cnt = edges.size(); k < cnt; ++k ) {
|
|
if ( edges[k] != nullptr ) {
|
|
edges[k]->GetCurve().CalculateMesh( stepData, note, edgeMesh );
|
|
DrawGI::DrawMesh( &edgeMesh, TRGB_WHITE );
|
|
DrawGI::DrawMesh( &edgeMesh, eR, eG, eB );
|
|
edgeMesh.Flush();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Функция имплементации интерфейса IfDrawGI.
|
|
\en The function of 'IfDrawGI' interface implementarion. \~
|
|
\details \ru Функция установки указателя на имплементацию интерфейса IfDrawGI.
|
|
\en The function of setting a pointer to the 'IfDrawGI' interface implementarion. \~
|
|
\ingroup Drawing
|
|
*/
|
|
// ---
|
|
MATH_FUNC (void) SetDrawGI( const IfDrawGI * iDrawGIImpl );
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// отрисовка контуров прямоугольной области
|
|
//---
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Функция отрисовки контуров прямоугольной области.
|
|
\en Rectangular area contour drawing function. \~
|
|
\details \ru Отрисовка прямоугольной области на поверхности по четырем точкам.
|
|
\en Drawing a rectangular area on the surface by four points. \~
|
|
\ingroup Drawing
|
|
*/
|
|
// ---
|
|
template <class Rect>
|
|
static void DrawRectangle( const Rect & rect, const MbSurface & surf, int r, int g, int b )
|
|
{
|
|
SArray<MbCartPoint> corners( 4, 1 );
|
|
MbCartPoint corner;
|
|
rect.GetVertex( 0, corner );
|
|
corners.Add( corner );
|
|
rect.GetVertex( 1, corner );
|
|
corners.Add( corner );
|
|
rect.GetVertex( 2, corner );
|
|
corners.Add( corner );
|
|
rect.GetVertex( 3, corner );
|
|
corners.Add( corner );
|
|
MbContour contour;
|
|
contour.InitByPoints( corners );
|
|
DrawGI::DrawItem( &contour, &surf, r, g, b );
|
|
}
|
|
|
|
#endif // defined(_DRAWGI)
|
|
|
|
|
|
#endif // __ALG_DRAW_H
|