Exemplo n.º 1
0
half_edge tetraedron(gl_vertex *v1, gl_vertex *v2, gl_vertex *v3, gl_vertex *v4) {
  half_edge e12 = create_triangle(v1, v2, v3);
  half_edge e21 = e12 -> opp;
  half_edge e13 = e12 -> next;
  half_edge e31 = e13 -> opp;
  half_edge e32 = e31 -> next;
  add_vertex_to_edge(e21,v4);
  half_edge e24 = e21 -> next;
  half_edge e42 = e24 -> opp;
  half_edge e41 = e42 -> next;
  close_triangle(e32,e24);
  half_edge e34 = e32 -> next;
  fill_triangle(e13,e34,e41);

  return e12;
}
Exemplo n.º 2
0
DEF_TEST(Vertices_clipping, reporter) {
    // A very large triangle has to be geometrically clipped (since its "fast" clipping is
    // normally done in after building SkFixed coordinates). Check that we handle this.
    // (and don't assert).
    auto surf = SkSurface::MakeRasterN32Premul(3, 3);

    SkPoint pts[] = { { -10, 1 }, { -10, 2 }, { 1e9f, 1.5f } };
    fill_triangle(surf->getCanvas(), pts, SK_ColorBLACK);

    sk_tool_utils::PixelIter iter(surf.get());
    SkIPoint loc;
    while (void* addr = iter.next(&loc)) {
        SkPMColor c = *(SkPMColor*)addr;
        if (loc.fY == 1) {
            REPORTER_ASSERT(reporter, c == 0xFF000000);
        } else {
            REPORTER_ASSERT(reporter, c == 0);
        }
    }
}
Exemplo n.º 3
0
int wmain(int argc, wchar_t* argv[])
{
    Point2d points[3] = {
            { 100, 0 },
            { 0, 200 },
            { 200, 300 }
    };

    Points2dv pdv1({ {100, 0}, { 0, 200 }, { 200, 300 } });
    Points2dv pdv2({ {100, 0}, { 200, 300 }, { 0, 200 } });
    Points2dv pdv3({ {0, 200}, { 100, 0 }, { 200, 300 } });
    Points2dv pdv4({ {0, 200}, { 200, 300 }, { 100, 0 } });
    Points2dv pdv5({ {200, 300}, { 100, 0 }, { 0, 200 } });
    Points2dv pdv6({ {200, 300}, { 0, 200 }, { 100, 0 } });

    fill_triangle(pdv1);
    fill_triangle(pdv2);
    fill_triangle(pdv3);
    fill_triangle(pdv4);
    fill_triangle(pdv5);
    fill_triangle(pdv6);

    return 0;
}
Exemplo n.º 4
0
void Canvas::fill_triangle(const Trianglef &dest_triangle, const Colorf &color)
{
	fill_triangle(dest_triangle.p, dest_triangle.q, dest_triangle.r, color);
}
Exemplo n.º 5
0
/* Remplit un triangle dont les sommets sont les points (x1, y1),
   (x2, y2) et (x3, y3) */
void TrianglePlein(int x1, int y1, int x2, int y2, int x3, int y3) {
   fill_triangle(fenetreCourante, x1, y1, x2, y2, x3, y3);
}