JSFiddle - React, Tailwind, and code Playground

HTML

<div id='test' style='margin:auto;position:relative;width:400px;height:400px;border-style:solid;border-width:1px;border-color:black;'></div>

JavaScript

var drawLimit = 1;
function drawTriangle(t,x1,y1,x2,y2,x3,y3,c){
    //line
    if((x1==x2&&x2==x3)||(y1==y2&&y2==y3)) return false;
    if(sPoint(x1,y1,x2,y2)||sPoint(x3,y3,x2,y2)||sPoint(x1,y1,x3,y3)) return false;
    //point
    if((Math.abs(x1-x2)+Math.abs(x2-x3)+Math.abs(x3-x1)<=drawLimit)&&(Math.abs(y1-y2)+Math.abs(y2-y3)+Math.abs(y3-y1)<=drawLimit))
        return drawPixel(t,Math.min(x1,x2,x3),Math.min(y1,y2,y3),c);
    if(y1>y2) return drawTriangle(t,x2,y2,x1,y1,x3,y3,c);
    if(y1>y3) return drawTriangle(t,x3,y3,x2,y2,x1,y1,c);
    if(y2>y3) return drawTriangle(t,x1,y1,x3,y3,x2,y2,c);
    x1=Math.round(x1);x2=Math.round(x2);x3=Math.round(x3);
    y1=Math.round(y1);y2=Math.round(y2);y3=Math.round(y3);
    //y1<=y2<=y3
    if(y1==y2){
        if(x1>x2) return drawTriangle(t,x2,y2,x1,y1,x3,y3,c);
        if(x3>=x1&&x3<=x2) return drawLineTriangle(t,x1,y1,x2-x1,x3-x1,y3-y1,3,c);
        if(x3>x2){
            var yc=y1+(y3-y1)/(x3-x1)*(x2-x1);
            return (drawLineTriangle(t,x1,y1,x2-x1,x2-x1,yc-y1,3,c)+drawTriangle(t,x2,y2,x2,yc,x3,y3,c))>0;
        }else{
            var yc=y2+(y3-y2)/(x2-x3)*(x2-x1);
            return (drawLineTriangle(t,x1,y1,yc-y1,0,x2-x1,2,c)+drawTriangle(t,x1,y1,x3,y3,x1,yc,c))>0;
        }
    }
    //y1<y2<=y3
    if(y2==y3){
        if(x2>x3) return drawTriangle(t,x1,y1,x3,y3,x2,y2,c);
        if(x1>=x2&&x1<=x3) return drawLineTriangle(t,x2,y1,x3-x2,x1-x2,y2-y1,1,c);
        if(x1>x3){
            var yc=y1+(y2-y1)/(x1-x2)*(x1-x3);
            return (drawLineTriangle(t,x2,yc,x3-x2,x3-x2,y3-yc,1,c)+drawTriangle(t,x1,y1,x3,yc,x3,y3,c))>0;
        }else{
            var yc=y1+(y3-y1)/(x3-x1)*(x2-x1);
            return (drawLineTriangle(t,x2,yc,x3-x2,0,y2-yc,1,c)+drawTriangle(t,x1,y1,x2,yc,x2,y2,c))>0;
        }
    }
    //y1<y2<y3
    if(x2<=x1&&x1<x3){
        var xc=x1+(x3-x1)/(y3-y1)*(y2-y1);
        return (drawLineTriangle(t,x2,y1,xc-x2,x1-x2,y2-y1,1,c)+drawTriangle(t,x2,y2,xc,y2,x3,y3,c))>0;
    }
   ...