17 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
20 Point(
double _x,
double _y,
double _z )
49 bool operator ==(
const Point &rhs)
51 return (this->x == rhs.x) && (this->y == rhs.y) && (this->z == rhs.z);
54 static bool CompareDraught(
const struct Point &lhs,
const struct Point &rhs )
63 double Lpp = std::numeric_limits<double>::quiet_NaN();
64 double T = std::numeric_limits<double>::quiet_NaN();
65 double B = std::numeric_limits<double>::quiet_NaN();
66 double Sink = std::numeric_limits<double>::quiet_NaN();
67 double Trim = std::numeric_limits<double>::quiet_NaN();
68 double Disp = std::numeric_limits<double>::quiet_NaN();
69 double VCB = std::numeric_limits<double>::quiet_NaN();
70 double VCG = std::numeric_limits<double>::quiet_NaN();
71 double LCB = std::numeric_limits<double>::quiet_NaN();
72 double LCG = std::numeric_limits<double>::quiet_NaN();
73 double Cb = std::numeric_limits<double>::quiet_NaN();
74 double GMt = std::numeric_limits<double>::quiet_NaN();
75 double GMl = std::numeric_limits<double>::quiet_NaN();
80 std::vector<Eigen::Vector3d> Vertices;
81 Eigen::Vector3d Normal;
82 Eigen::Vector3d Center;
83 Eigen::Vector3d BodyPressure;
84 Eigen::Vector3d NEDPressure;
92 std::vector<Eigen::Vector3d> Vertices;
93 std::vector<Eigen::Vector3d> Normals;
94 std::vector<Eigen::Vector3d> Color;
95 std::vector<int> VertexStation;
96 std::vector< HullFace > Faces;
102 void SetPosition(
double n,
double e,
double d)
109 void SetPosition(
const Eigen::Vector3d &vec )
111 SetPosition(vec(0),vec(1),vec(2));
114 void SetRotation(
const Eigen::Quaterniond &q)
119 void SetRotation(
double w,
double x,
double y,
double z)
121 q = Eigen::Quaterniond(w,x,y,z);
124 virtual void ReadHullGeometry( std::string& fname )=0;
125 virtual void ReadWaterLine( std::string& fname )=0;
127 void CalculateHullSectionData();
129 void AddStation(
const std::vector<double> & x,
const std::vector<double> & y,
const std::vector<double> & z );
130 void GetStation(
int StationNr, std::vector<Eigen::Vector3d> &Out);
131 double GetStationArea(
int SectionNr );
132 double GetStationArea(
int SectionNr,
double T);
133 double GetStationDraught(
int SectionNr,
double T);
134 double GetStationMaxBredth(
int SectionNr,
double T);
135 double GetStationBredth(
int SectionNr,
double T);
136 unsigned int GetNumberOfStations();
137 int GetStationNr(
double DistanceFromZeroStation );
138 double GetStationPosition(
int SectionNr );
139 void GetStationLewisData(
int SectionNr,
double B,
double T,
double &LewisA1,
double &LewisA3,
double &LewisScaleFactor );
140 int GetStationSkegPoint(
int SectionNr);
142 double GetStationInstentaneousDraught(
int SecitonNr );
143 void GetVertexGlobalPosition(
int vertex, Eigen::Vector3d &vertexpos );
147 void AddToHull( std::vector<Eigen::Vector3d> &side1, std::vector<Eigen::Vector3d> side2 ,
bool mirror =
true);
149 void SetInterpolationParameters(
double HullTop,
double HullBottom,
double VerticalStep,
double HorizontalStep);
151 virtual double GetParam(std::string p );
153 struct MainDimensions Main;
154 struct HullGeometry Geomtery;
159 Eigen::Quaterniond q;
163 double HullVerticalStep;
164 double HullHorizontalStep;
166 static bool CompareSections(
struct Section
const &lhs,
struct Section
const &rhs );
168 std::vector< struct Section > Sections;
169 std::map<std::string,double> param;