Java - fill triangle function
This is overall pretty reasonable code. It's very straightforward. Here are some things that could be improved:

Readabality

I find a few things hard to read. For example, putting not only multiple variable declarations on the same line, but assigning each one to a function call result is not fun to read. I would write each on its own line so it's more clear:

Line2d ab = t.getAB();
Line2d bc = t.getBC();
Line2d ac = t.getAC();


Same with the startY and endY variables:

int startY = (int) t.getA().getY();
int endY = (int) t.getC().getY();


Also, even though it's legal to omit the braces on single line if and for statements, it's a good idea to include them to avoid future bugs. I've seen plenty of code where someone added a line to a 1-line if statement without the braces and that line ended up always being executed. It ends up looking like this:

if (foobar)
    callFunction()
    callOtherFunction()


Because there are no braces, callOtherFunction() is always called regardless of the value of foobar.

Naming

Most of your function and variable naming is pretty good, but I would rename the set() function to setPixelColor() to make it more clear what you're setting. The names set() and get() are very overused in programming today, so it helps to be more specific.

Use Points in set() Function

Why separate out the x and y values of the point when calling set()? You should just make it accept a point parameter and do the getX(), getY() and type casting inside the function.

In fact, you do actually pass separate x and y values that are calculated inside the loop, so you might even want to overload it and create 2 versions, 1 that takes a point, and one that takes 2 coordinates, like this:

void setPixelColor(int x, int y, Color pixColor);


and

void setPixelColor(Point2d p, Color pixColor)
{
    setPixelColor((int)p.getX(), (int)p.getY(), pixColor);
}


Renderer Stuff

Most 3D renderers, like OpenGL, DirectX, Metal, etc. make a guarantee to never draw the same pixel twice for triangles that share an edge. I notice that your loops are including the start and end points of each row and column of pixels in the triangle. You might want to change the end condition to just &lt; instead of &lt;= to get this same sort of functionality.

Also, why are you coloring the corners of every triangle red? Was that just for debugging purposes?