//---------------------------------------------------------------------------

#ifndef Point_dvutavrH
#define Point_dvutavrH
#include "Data_Gen.h"
#define RADIAN 57.29577951308232087684


//---------------------------------------------------------------------------
void  Point_stand_dvutavr(int zero, int zero1, int zero2, SECT_DVUTAVR *sect, double rad, float scale, TPoint *vertices);
void  Point_weld_dvutavr(int zero, int zero1, int zero2, SECT_DVUTAVR *sect, float scale, TPoint *vertices);
void  Point_stand_dvutavr_n(int zero, int zero1, int zero2, SECT_DVUTAVR *sect, double rad, float scale, TPoint *vertices);
void  Coor_stand_dvutavr(SECT_DVUTAVR *sect, double rad, double coor[][3]);
void  Coor_stand_tavr(SECT_TAVR *sect, double rad, double coor[][3], int index_composed);
// Добавить координаты пластины
void  Coor_plate(double width_prof, double height_prof, double plate_thick, double plate_width, int shift, double coor[][3],
                 int index_composed);

// Получить координаты сварного двутавра
void  Coor_weld_dvutavr(SECT_DVUTAVR *sect, double coor[][3]);
// Точки прямоугольной трубы
void Coor_rect(double h_c, double b_c, double r_c, double r2_c, double t_, double coor[][3]);
// Точки круглой трубы
void Coor_circ(int n, double rad, double t_, double coor[][3]);

void CalcNorm(float *normal, float ax, float ay, float az, float bx, float by, float bz);
extern float  **Coor_vertex1, **Coor_vertex2;   // Вершины гексаэдров
void NormalHex(int *point_m, float **Coor_vertex1, float **Coor_vertex2, float *normal);
// установить вид и вычислить матрицу преобразования
void SetView_(double t_conv[][4], double * z_mod, int Item, bool *Sign, int VertAx);
// преобразовать координаты в экранную систему
void  Set_coorg_(double t_conv[][4], double coor[][3], int n_coor, double coorg[][3]);
void formt_conv(double* x0, double* x1, double Teta, double t_conv[][4],
			 double *z_mod);
void Set_scale(int Width, int Height, double zmod, double coor_1g[][3], double coor_2g[][3],
			   int n, double *Scale, double *X_shift, double *Y_shift, int pole);
void Get_scale(double *scale, double *x_shift, double *y_shift);

void get_point_load(double load, double direction[3], double force_scale, double *coor_load,
					double *x0, double *x1, double *x2, double *Sign);
void get_point_moment(double load, double *direction, double *coor_load, double coor_g[][3], double length);
void get_point_q(double coor_g[][3]);
void get_point_load_ar(double load, double direction[3], double force_scale, double *coor_load, double t_ar, double l_ar,
					   double coor_g[][3], double *Sign);
void get_point_arc(int n_point, double coor_g[][3], double rad, double angle, double angle_null);
void get_point_constr(double direction[3], double *coor_constr, double t_ar, double l_ar,
					   double coor_g[][3]);
double get_scale_mod();
void get_point_dim(double direction[3], double *coor_load, double coor_g[][3]);
// получить точки контура сварного тавра
void  Point_tavr(int zero, int zero1, int zero2, SECT_TAVR *sect, float scale, TPoint *vertices);
// Получить точки тавровых профилей - проволочная модель
void  Point_tavr_wire(double *coor0, double alf, COMMON_SECT *sect, double scale, double **vertices, int *n_point);
// Получить точки контура прокатного тавра (
void  Point_stand_tavr(int zero, int zero1, int zero2, SECT_TAVR *sect, double rad, float scale, TPoint *vertices, int index_comp);



#endif
