6

I am trying to draw a triangle in space, given its three vertices, using asymptote.

A minimal example is

import grid3;
import graph3;

size(12cm,0);

currentprojection=orthographic(1,-2,1);
currentlight=(1,-1,0.5);

triple p0=(0,0,0);
triple p1=(0,1,1);
triple p2=(1,1,1);

grid3(new grid3routines [] {XYXgrid(0)},
      pGrid=new pen[] {0.5blue},
      pgrid=new pen[] {0.5blue});

draw(p0--p1--p2--cycle);

This yields the boundary of the polygon. However, I fail to fill the triangle. I assume I could parameterize it and plot it as a parameterized surface, but this didn't work for me as well. I tried to use the following

triple f(pair t) {return((1-t.x)*((1-t.y)*p0+t.y*p1)+t.x*p2);}
surface s=surface(f,(0,1),(0,1),10,10,Spline);
s.colors(palette(s.map(zpart),Rainbow()));
draw(s,render(merge=true));

instead of the last draw in the previous snippet. This attempt yields an empty page.

How can I fill (and draw its boundary?) a triangle in space using asymptote?

1 Answer 1

8

To fill the triangle replace

draw(p0--p1--p2--cycle);

by

draw(surface(p0--p1--p2--cycle),yellow);
draw(p0--p1--p2--cycle);

That's it.

1
  • yes, that's it, that's what I am looking for! thank @Alex!
    – Black Mild
    Commented Dec 13, 2020 at 2:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .