本文整理汇总了C++中Vector2D::lengthSquared方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector2D::lengthSquared方法的具体用法?C++ Vector2D::lengthSquared怎么用?C++ Vector2D::lengthSquared使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector2D
的用法示例。
在下文中一共展示了Vector2D::lengthSquared方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: filter
void PinchEventFilter::filter(GestureTouchEvent *ev)
{
if (!ev)
return;
if (ev->numTouchPoints != 2) {
reset();
return;
}
Vector2D p0(ev->touchPoints[0].x, ev->touchPoints[0].y);
Vector2D p1(ev->touchPoints[1].x, ev->touchPoints[1].y);
if (m_p0.isNull() && m_p1.isNull()) {
m_p0 = p0;
m_p1 = p1;
}
Vector2D diffA = (m_p0 - p0);
Vector2D diffB = (m_p1 - p1);
if (diffA.lengthSquared() > MIN_MOVEMENT_LENGTH_SQUARED
&& diffB.lengthSquared() > MIN_MOVEMENT_LENGTH_SQUARED)
ev->flags |= GestureTouchEvent::GESTURE_EVENT_CAN_RECOGNIZE_DIRECTION;
else
ev->flags &= ~GestureTouchEvent::GESTURE_EVENT_CAN_RECOGNIZE_DIRECTION;
}
示例2: score
double User::score(const PacketValue& value, const Vector2D& reference)
{
const Actor *actor = value.first;
const Vector2D actorPosition = actor->getPosition();
// Score based on x and y distance
const Vector2D ASPECT(20.0 / 25.0, 15.0 / 25.0);
const double DISTANCE_FACTOR = 20;
Vector2D distance = ASPECT.memberwiseMult(reference - actorPosition);
double distanceScore = DISTANCE_FACTOR * distance.lengthSquared();
const double TIME_FACTOR = 100;
double time = FrameTimer::current().frameTime() - value.second.time;
double timeScore = -TIME_FACTOR * (time * time);
const double DISPLACEMENT_FACTOR = 5;
const double VELOCITY_FACTOR = 10;
Vector2D displacement = ASPECT.memberwiseMult(actorPosition - value.second.position);
Vector2D velocity = ASPECT.memberwiseMult(actor->getVelocity() - value.second.velocity);
double displacementScore = -DISPLACEMENT_FACTOR * displacement.lengthSquared();
double velocityScore = -VELOCITY_FACTOR * velocity.lengthSquared();
return distanceScore + timeScore + displacementScore + velocityScore;
}
示例3: saveParticleDataXy
JET_END_TEST_F
JET_BEGIN_TEST_F(FlipSolver2, Rotation) {
// Build solver
auto solver = FlipSolver2::builder()
.withResolution({10, 10})
.withDomainSizeX(1.0)
.makeShared();
solver->setGravity({0, 0});
solver->setPressureSolver(nullptr);
// Build emitter
auto box = Sphere2::builder()
.withCenter({0.5, 0.5})
.withRadius(0.4)
.makeShared();
auto emitter = VolumeParticleEmitter2::builder()
.withSurface(box)
.withSpacing(1.0 / 20.0)
.withIsOneShot(true)
.makeShared();
solver->setParticleEmitter(emitter);
Array1<double> r;
for (Frame frame; frame.index < 360; ++frame) {
auto x = solver->particleSystemData()->positions();
auto v = solver->particleSystemData()->velocities();
r.resize(x.size());
for (size_t i = 0; i < x.size(); ++i) {
r[i] = (x[i] - Vector2D(0.5, 0.5)).length();
}
solver->update(frame);
if (frame.index == 0) {
x = solver->particleSystemData()->positions();
v = solver->particleSystemData()->velocities();
for (size_t i = 0; i < x.size(); ++i) {
Vector2D rp = x[i] - Vector2D(0.5, 0.5);
v[i].x = rp.y;
v[i].y = -rp.x;
}
} else {
for (size_t i = 0; i < x.size(); ++i) {
Vector2D rp = x[i] - Vector2D(0.5, 0.5);
if (rp.lengthSquared() > 0.0) {
double scale = r[i] / rp.length();
x[i] = scale * rp + Vector2D(0.5, 0.5);
}
}
}
saveParticleDataXy(solver->particleSystemData(), frame.index);
}
}
示例4: closestPointLocal
Vector2D CustomImplicitSurface2::closestNormalLocal(
const Vector2D& otherPoint) const {
Vector2D pt = closestPointLocal(otherPoint);
Vector2D g = gradientLocal(pt);
if (g.lengthSquared() > 0.0) {
return g.normalized();
} else {
return g;
}
}