本文整理汇总了C++中Point::Norm方法的典型用法代码示例。如果您正苦于以下问题:C++ Point::Norm方法的具体用法?C++ Point::Norm怎么用?C++ Point::Norm使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Point
的用法示例。
在下文中一共展示了Point::Norm方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: itos
Line2::Line2(const Side* side)
{
try {
if (side->getNbNodes() != 2)
THROW_RT("Line2(Side *): Illegal number of side nodes: " + itos(side->getNbNodes()));
}
CATCH("Line2");
_sh.resize(2);
_node.resize(2);
_x.resize(2);
_dsh.resize(2);
_dshl.resize(2);
for (size_t i=0; i<2; i++) {
Node *node = side->getPtrNode(i+1);
_x[i] = node->getCoord();
_node[i] = node->n();
}
_c = 0.5*(_x[0] + _x[1]);
_sd = side;
_el = NULL;
Point<real_t> dl = 0.5*(_x[1] - _x[0]);
_det = dl.Norm();
try {
if (_det == 0.0)
THROW_RT("Line2(Side *): Determinant of jacobian is null");
}
CATCH("Line2");
_length = 2*_det;
}
示例2: CATCH
Line2::Line2(const Edge* edge)
{
_sh.resize(2);
_node.resize(2);
_x.resize(2);
_dsh.resize(2);
_dshl.resize(2);
for (size_t i=0; i<2; i++) {
Node *node = edge->getPtrNode(i+1);
_x[i] = node->getCoord();
_node[i] = node->n();
}
_c = 0.5*(_x[0] + _x[1]);
_ed = edge;
_sd = NULL;
_el = NULL;
Point<real_t> dl = 0.5*(_x[1] - _x[0]);
_det = dl.Norm();
try {
if (_det == 0.0)
THROW_RT("Line2(Edge *): Determinant of jacobian is null");
}
CATCH("Line2");
_length = 2*_det;
}
示例3: GetAngle
double Point::GetAngle(const Point& p_in) const
{
double loc;
double norm = Norm()*p_in.Norm();
if (norm > 0.0) {
loc = this->Dot(p_in) / norm;
return std::acos(loc);
}
else
return 0.0; // returning unvalid value
}
示例4: ForceRepWall
Point VelocityModel::ForceRepWall(Pedestrian* ped, const Line& w, const Point& centroid, bool inside) const
{
Point F_wrep = Point(0.0, 0.0);
Point pt = w.ShortestPoint(ped->GetPos());
Point dist = pt - ped->GetPos(); // x- and y-coordinate of the distance between ped and p
const double EPS = 0.000; // molified see Koester2013
double Distance = dist.Norm() + EPS; // distance between the centre of ped and point p
//double vn = w.NormalComp(ped->GetV()); //normal component of the velocity on the wall
Point e_iw; // x- and y-coordinate of the normalized vector between ped and pt
//double K_iw;
double l = ped->GetEllipse().GetBmax();
double R_iw;
double min_distance_to_wall = 0.001; // 10 cm
if (Distance > min_distance_to_wall) {
e_iw = dist / Distance;
}
else {
Log->Write("WARNING:\t Velocity: forceRepWall() ped %d is too near to the wall (dist=%f)", ped->GetID(), Distance);
Point new_dist = centroid - ped->GetPos();
new_dist = new_dist/new_dist.Norm();
printf("new distance = (%f, %f) inside=%d\n", new_dist._x, new_dist._y, inside);
e_iw = (inside ? new_dist:new_dist*-1);
}
//-------------------------
const Point& pos = ped->GetPos();
double distGoal = ped->GetExitLine()->DistToSquare(pos);
if(distGoal < J_EPS_GOAL*J_EPS_GOAL)
return F_wrep;
//-------------------------
R_iw = - _aWall * exp((l-Distance)/_DWall);
F_wrep = e_iw * R_iw;
return F_wrep;
}
示例5: Init
bool VelocityModel::Init (Building* building)
{
if(dynamic_cast<DirectionFloorfield*>(_direction)){
Log->Write("INFO:\t Init DirectionFloorfield starting ...");
//fix using defaults; @fixme ar.graf (pass params from argument parser to ctor?)
double _deltaH = 0.0625;
double _wallAvoidDistance = 0.4;
bool _useWallAvoidance = true;
dynamic_cast<DirectionFloorfield*>(_direction)->Init(building, _deltaH, _wallAvoidDistance, _useWallAvoidance);
Log->Write("INFO:\t Init DirectionFloorfield done");
}
if(dynamic_cast<DirectionLocalFloorfield*>(_direction)){
Log->Write("INFO:\t Init DirectionLOCALFloorfield starting ...");
//fix using defaults; @fixme ar.graf (pass params from argument parser to ctor?)
double _deltaH = 0.0625;
double _wallAvoidDistance = 0.4;
bool _useWallAvoidance = true;
dynamic_cast<DirectionLocalFloorfield*>(_direction)->Init(building, _deltaH, _wallAvoidDistance, _useWallAvoidance);
Log->Write("INFO:\t Init DirectionLOCALFloorfield done");
}
if(dynamic_cast<DirectionSubLocalFloorfield*>(_direction)){
Log->Write("INFO:\t Init DirectionSubLOCALFloorfield starting ...");
//fix using defaults; @fixme ar.graf (pass params from argument parser to ctor?)
double _deltaH = 0.0625;
double _wallAvoidDistance = 0.4;
bool _useWallAvoidance = true;
dynamic_cast<DirectionSubLocalFloorfield*>(_direction)->Init(building, _deltaH, _wallAvoidDistance, _useWallAvoidance);
Log->Write("INFO:\t Init DirectionSubLOCALFloorfield done");
}
const vector< Pedestrian* >& allPeds = building->GetAllPedestrians();
size_t peds_size = allPeds.size();
for(unsigned int p=0;p < peds_size;p++)
{
Pedestrian* ped = allPeds[p];
double cosPhi, sinPhi;
//a destination could not be found for that pedestrian
if (ped->FindRoute() == -1) {
Log->Write(
"ERROR:\tVelocityModel::Init() cannot initialise route. ped %d is deleted.\n",ped->GetID());
building->DeletePedestrian(ped);
p--;
peds_size--;
continue;
}
Point target = ped->GetExitLine()->LotPoint(ped->GetPos());
Point d = target - ped->GetPos();
double dist = d.Norm();
if (dist != 0.0) {
cosPhi = d._x / dist;
sinPhi = d._y / dist;
} else {
Log->Write(
"ERROR: \tallPeds::Init() cannot initialise phi! "
"dist to target is 0\n");
return false;
}
ped->InitV0(target);
JEllipse E = ped->GetEllipse();
E.SetCosPhi(cosPhi);
E.SetSinPhi(sinPhi);
ped->SetEllipse(E);
}
return true;
}