I need to create a triangle which called a duval triangle. It looks like this:
I need to do it with canvas. so far I succeed to create a triangle. But I don\'t know
The final answer(all credits to @markE for his greater efforts)
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
// https://www.researchgate.net/publication/4345236_A_Software_Implementation_of_the_Duval_Triangle_Method
var v0={x:114,y:366};
var v1={x:306,y:30};
var v2={x:498,y:366};
var triangle=[v0,v1,v2];
// Define all your segments here
var segments=[
{
points:[{x:114,y:366},{x:281,y:76},{x:324,y:150},{x:201,y:366}],
fill:'rgb(172,236,222)',
label:{text:'D1',cx:200,cy:290,withLine:false,endX:null,endY:null},
},
{
points:[{x:385,y:366},{x:201,y:366},{x:324,y:150},{x:356,y:204},{x:321,y:256}],
fill:'deepskyblue',
label:{text:'D2',cx:290,cy:290,withLine:false,endX:null,endY:null},
},
{
points:[{x:297,y:46},{x:392,y:214},{x:372,y:248},{x:441,y:366},{x:385,y:366},{x:321,y:256},{x:356,y:204},{x:281,y:76}],
fill:'lightCyan',
label:{text:'DT',cx:370,cy:290,withLine:false,endX:366,endY:120},
},
{
points:[{x:306,y:30},{x:312,y:40},{x:300,y:40}],
fill:'black',
label:{text:'PD',cx:356,cy:40,withLine:true,endX:321,endY:40},
},
{
points:[{x:312,y:40},{x:348,y:103},{x:337,y:115},{x:297,y:46},{x:300,y:40}],
fill:'navajoWhite',
label:{text:'T1',cx:375,cy:70,withLine:true,endX:340,endY:75},
},
{
points:[{x:348,y:103},{x:402,y:199},{x:392,y:214},{x:337,y:115}],
fill:'tan',
label:{text:'T2',cx:400,cy:125,withLine:true,endX:366,endY:120},
},
{
points:[{x:402,y:199},{x:498,y:366},{x:441,y:366},{x:372,y:248}],
fill:'peru',
label:{text:'T3',cx:425,cy:290,withLine:false,endX:null,endY:null},
},
];
// label styles
var labelfontsize=12;
var labelfontface='verdana';
var labelpadding=3;
// pre-create a canvas-image of the arrowhead
var arrowheadLength=10;
var arrowheadWidth=8;
var arrowhead=document.createElement('canvas');
premakeArrowhead();
var legendTexts=['PD = Partial Discharge','T1 = Thermal fault < 300 celcius','...'];
// start drawing
/////////////////////
// draw colored segments inside triangle
for(var i=0;i
body{ background-color: ivory; padding:10px; }
#canvas{border:1px solid red; margin:0 auto; }