3 coloured triangles with influence factors for edges

Previous topic - Next topic

Kitty Hello

Code (glbasic) Select
WHILE TRUE

MOUSESTATE mx, my, b1, b2
infl = mx / 640  /2
Tri(0,200, 200,100,  50,0,  0x0000ff, 0x00ff00, 0xff0000, 0xffffff, infl)
PRINT infl, 0,0
SHOWSCREEN
WEND



FUNCTION intpl: x1, x2, infl
RETURN (x2-x1) * infl + x1
ENDFUNCTION


FUNCTION Tri: x1,y1,x2,y2,x3,y3, c1,c2,c3, c_center, infl
// draw c1-edge

LOCAL x12, x21, y12, y21
LOCAL x23, x32, y23, y32
LOCAL x31, x13, y31, y13

x12 = intpl(x1,x2,infl)
x21 = intpl(x2,x1,infl)
x23 = intpl(x2,x3,infl)
x32 = intpl(x3,x2,infl)
x31 = intpl(x3,x1,infl)
x13 = intpl(x1,x3,infl)

y12 = intpl(y1,y2,infl)
y21 = intpl(y2,y1,infl)
y23 = intpl(y2,y3,infl)
y32 = intpl(y3,y2,infl)
y31 = intpl(y3,y1,infl)
y13 = intpl(y1,y3,infl)


// c1 corner
STARTPOLY -1
POLYVECTOR x1 ,y1 , 0,0,c1
POLYVECTOR x12,y12, 0,0,c1
POLYVECTOR x13,y13, 0,0,c1
ENDPOLY

// c2 corner
STARTPOLY -1
POLYVECTOR x2 ,y2 , 0,0,c2
POLYVECTOR x23,y23, 0,0,c2
POLYVECTOR x21,y21, 0,0,c2
ENDPOLY

// c3 corner
STARTPOLY -1
POLYVECTOR x3 ,y3 , 0,0,c3
POLYVECTOR x31,y31, 0,0,c3
POLYVECTOR x32,y32, 0,0,c3
ENDPOLY

// inner part
STARTPOLY -1
POLYVECTOR (x1+x2+x3)/3, (y1+y2+y3)/3,0,0,c_center
POLYVECTOR x12,y12, 0,0,c1
POLYVECTOR x21,y21, 0,0,c2
POLYVECTOR x23,y23, 0,0,c2
POLYVECTOR x32,y32, 0,0,c3
POLYVECTOR x31,y31, 0,0,c3
POLYVECTOR x13,y13, 0,0,c1
POLYVECTOR x12,y12, 0,0,c1
ENDPOLY

ENDFUNCTION
Set the infl - influence factor from 0,0 (3-noded triangle) to 0.5 (very hard edges, shaded 6-faced core).
Move the mouse left-right to see what I mean.

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard