コード例 #1
0
ファイル: j4cbo.c プロジェクト: enricmcalvo/virtexsquared
int h0(int bitpos)
{
	if (getbit(bitpos))
		return h01(bitpos+1);
	else
		return h00(bitpos+1);
}
コード例 #2
0
ファイル: R3Cont.C プロジェクト: acplus/peptalk
RNBoolean R3Contains(const R3Triangle& triangle, const R3Point& point)
{
    // Check whether triangle bounding shape contains point
    if (!R3Contains(triangle.Box(), point)) return FALSE;

    // Check whether triangle plane contains point
    if (!R3Contains(triangle.Plane(), point)) return FALSE;

    // Compute whether point is on correct side of each edge
    const R3Point& p0 = triangle.Vertex(0)->Position();
    const R3Point& p1 = triangle.Vertex(1)->Position();
    const R3Point& p2 = triangle.Vertex(2)->Position();
    R3Plane h01(p1, triangle.Normal(), p1 - p0);
    if (RNIsNegative(R3SignedDistance(h01, point))) return FALSE;
    R3Plane plane01(p1, triangle.Normal(), p1 - p0);
    if (RNIsNegative(R3SignedDistance(plane01, point))) return FALSE;
    R3Plane plane12(p2, triangle.Normal(), p2 - p1);
    if (RNIsNegative(R3SignedDistance(plane12, point))) return FALSE;
    R3Plane plane20(p0, triangle.Normal(), p0 - p2);
    if (RNIsNegative(R3SignedDistance(plane20, point))) return FALSE;

    // Triangle contains point
    return TRUE;
}
コード例 #3
0
ファイル: CardinalSpline.cpp プロジェクト: Poulpy21/3d
Vec CardinalSpline::operator() (unsigned int n, float t) {
    assert(n < points.size());
    assert(t >= 0 && t <= 1);

    return (points[n] * h00(t) + tangents[n] * h10(t) + points[n+1] * h01(t) + tangents[n+1] * h11(t));
}