# Graphs

#### Chocobo

##### White-Flower
I'm trying to create a system (for myself xd) so instead of putting the parametric equation of the graph (that's too long to parse it), I put some checkpoints (that makes a graph closes to what I want).

however, it seems to not to work correctly, it also doesn't show anything.

JASS:
``````globals
real array udg_List1
real array udg_List2
real array udg_List3
real array udg_List4
integer udg_DimList
endglobals

function GraphB takes integer degree, real duration returns nothing
local integer T = 0
local integer Tpitch = 38-4*degree
local integer Tmax = 1
local integer i = 0
local lightning array Lightning
loop
exitwhen T &gt;= 1
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if T+Tmax &lt; 1 then
set Tmax = 1
endif
if degree == 2 then
set Lightning<i> = AddLightning(&quot;CLPB&quot;, true, udg_List1[1]*T*T-2*udg_List1[2]*T+udg_List1[3], udg_List2[1]*T*T-2*udg_List2[2]*T+udg_List2[3], udg_List3[1]*Tmax*Tmax-2*udg_List3[2]*Tmax+udg_List3[3], udg_List4[1]*Tmax*Tmax-2*udg_List4[2]*Tmax+udg_List4[3])
endif
endloop
call TriggerSleepAction(duration)
loop
exitwhen i == 0
call DestroyLightning(Lightning<i>)
set Lightning<i> = null
set i = i - 1
endloop
endfunction

function GraphN takes integer degree, real duration returns nothing
local integer T = 0
local integer Tpitch = 38-4*degree
local integer Tmax = 1
local integer i = 0
local lightning array Lightning
loop
exitwhen T &gt;= 1
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if T+Tmax &lt; 1 then
set Tmax = 1
endif
if degree == 2 then
set Lightning<i> = AddLightning(&quot;CLPB&quot;, true, udg_List3[1]*T*T+udg_List3[2]*T+udg_List3[3] ,udg_List4[1]*T*T+udg_List4[2]*T+udg_List4[3], udg_List3[1]*Tmax*Tmax+udg_List3[2]*Tmax+udg_List3[3] ,udg_List4[1]*Tmax*Tmax+udg_List4[2]*Tmax+udg_List4[3])
endif
endloop
call TriggerSleepAction(duration)
loop
exitwhen i == 0
call DestroyLightning(Lightning<i>)
set Lightning<i> = null
set i = i - 1
endloop
endfunction

function Calculate takes integer degree, real duration, integer which, real delay returns nothing
local integer Z = 0
loop
set Z = Z + 1
call UnitApplyTimedLife(CreateUnit(Player(0), 'hfoo', udg_List1[Z], udg_List2[Z], 0.0), 'BTLF', duration)
if degree == 2 then
if which == 1 then
set udg_List3[1] = 2*(udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2])
set udg_List3[2] = -3*udg_List1[Z]+4*udg_List1[Z+1]-udg_List1[Z+2]
set udg_List3[3] = udg_List1[Z]
set udg_List4[1] = 2*(udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2])
set udg_List4[2] = -3*udg_List2[Z]+4*udg_List2[Z+1]-udg_List2[Z+2]
set udg_List4[3] = udg_List2[Z]
call GraphN(degree, duration)
else
set udg_List3[1] = udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2]
set udg_List3[2] = -2*udg_List1[Z]-2*udg_List1[Z+2]
set udg_List3[3] = udg_List1[Z]
set udg_List4[1] = udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2]
set udg_List4[2] = -2*udg_List2[Z]-2*udg_List2[Z+2]
set udg_List4[3] = udg_List2[Z]
call GraphB(degree, duration)
endif
endif
exitwhen Z == udg_DimList - degree
call TriggerSleepAction(delay)
endloop
endfunction

function Setup takes nothing returns nothing
local integer i = 0
set udg_List1[1] = 1
set udg_List2[1] = 3
set udg_List1[2] = 1/3
set udg_List2[2] = 7/3
set udg_List1[3] = 3/2
set udg_List2[3] = 2
set udg_List1[4] = 7/3
set udg_List2[4] = 5/2
set udg_List1[5] = 11/5
set udg_List2[5] = 13/5
set udg_List1[6] = 7/4
set udg_List2[6] = 5/2
set udg_List1[7] = 3/2
set udg_List2[7] = 2
set udg_List1[8] = 3/2
set udg_List2[8] = 5/4
set udg_List1[9] = 6/5
set udg_List2[9] = 2/5
set udg_List1[10] = 1/3
set udg_List2[10] = 0
set udg_List1[11] = 2/3
set udg_List2[11] = 3/4
set udg_List1[12] = 6/5
set udg_List2[12] = 2/4
set udg_List1[13] = 9/5
set udg_List2[13] = 1/5
set udg_List1[14] = 11/4
set udg_List2[14] = 0
set udg_DimList = 14
loop
set i = i + 1
set udg_List1<i> = udg_List1<i> * 1000
exitwhen i == udg_DimList
endloop
call Calculate(2, 10.00, 1, 0.30)
call TriggerSleepAction(10.00 + (udg_DimList-2)*3*0.3)
call Calculate(2, 10.00, 2, 0.30)
endfunction</i></i></i></i></i></i></i></i>``````

as there are massive leaks in the trigger, I could notice the function was still running however nothing (no unit, no lightning in the function Calculate and GraphN/B) have shown up in the map (with coordinates -3000, -3000, 3000, 3000).

note : the udg_List1 and udg_List2 contains the checkpoints for the letter "L".

it's supposed to do something like that (done with a calculator)

#### saw792

##### Is known to say things. That is all.
You are doing a lot of integer division there. I think you probably wanted a real answer, so try changing 11/5 to 11./5. etc.

That has caused troubles for me in the past.

#### Chocobo

##### White-Flower
hmm it didn't solve the problem.

I noticed the Calculate function is used only once -> i decide to use ExecuteFunc.

JASS:
``````globals
real array udg_List1
real array udg_List2
real array udg_List3
real array udg_List4
integer udg_DimList
integer udg_degree
real udg_duration
endglobals

function GraphB takes nothing returns nothing
local integer T = 0
local integer Tpitch = 38-4*udg_degree
local integer Tmax = 1
local integer i = 0
local lightning array Lightning
loop
exitwhen T &gt;= 1
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if T+Tmax &lt; 1 then
set Tmax = 1
endif
if udg_degree == 2 then
set Lightning<i> = AddLightning(&quot;CLPB&quot;, true, udg_List1[1]*T*T-2*udg_List1[2]*T+udg_List1[3], udg_List2[1]*T*T-2*udg_List2[2]*T+udg_List2[3], udg_List3[1]*Tmax*Tmax-2*udg_List3[2]*Tmax+udg_List3[3], udg_List4[1]*Tmax*Tmax-2*udg_List4[2]*Tmax+udg_List4[3])
endif
endloop
call TriggerSleepAction(udg_duration)
loop
exitwhen i == 0
call DestroyLightning(Lightning<i>)
set Lightning<i> = null
set i = i - 1
endloop
endfunction

function GraphN takes nothing returns nothing
local integer T = 0
local integer Tpitch = 38-4*udg_degree
local integer Tmax = 1
local integer i = 0
local lightning array Lightning
loop
exitwhen T &gt;= 1
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if T+Tmax &lt; 1 then
set Tmax = 1
endif
if udg_degree == 2 then
set Lightning<i> = AddLightning(&quot;CLPB&quot;, true, udg_List3[1]*T*T+udg_List3[2]*T+udg_List3[3], udg_List4[1]*T*T+udg_List4[2]*T+udg_List4[3], udg_List3[1]*Tmax*Tmax+udg_List3[2]*Tmax+udg_List3[3], udg_List4[1]*Tmax*Tmax+udg_List4[2]*Tmax+udg_List4[3])
endif
endloop
call TriggerSleepAction(udg_duration)
loop
exitwhen i == 0
call DestroyLightning(Lightning<i>)
set Lightning<i> = null
set i = i - 1
endloop
endfunction

function Calculate takes integer degree, real duration, integer which, real delay returns nothing
local integer Z = 0
set udg_degree = degree
set udg_duration = duration
loop
set Z = Z + 1
call UnitApplyTimedLife(CreateUnit(Player(0), 'hfoo', udg_List1[Z], udg_List2[Z], 0.0), 'BTLF', duration)
call BJDebugMsg(&quot;x=&quot;+R2S(udg_List1[Z]))
call BJDebugMsg(&quot;y=&quot;+R2S(udg_List2[Z]))
if degree == 2 then
if which == 1 then
set udg_List3[1] = 2*(udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2])
set udg_List3[2] = -3*udg_List1[Z]+4*udg_List1[Z+1]-udg_List1[Z+2]
set udg_List3[3] = udg_List1[Z]
set udg_List4[1] = 2*(udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2])
set udg_List4[2] = -3*udg_List2[Z]+4*udg_List2[Z+1]-udg_List2[Z+2]
set udg_List4[3] = udg_List2[Z]
call ExecuteFunc(&quot;GraphN&quot;)
else
set udg_List3[1] = udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2]
set udg_List3[2] = -2*udg_List1[Z]-2*udg_List1[Z+2]
set udg_List3[3] = udg_List1[Z]
set udg_List4[1] = udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2]
set udg_List4[2] = -2*udg_List2[Z]-2*udg_List2[Z+2]
set udg_List4[3] = udg_List2[Z]
call ExecuteFunc(&quot;GraphB&quot;)
endif
endif
exitwhen Z == udg_DimList - degree
call TriggerSleepAction(delay)
endloop
endfunction

function Setup takes nothing returns nothing
local integer i = 0
set udg_List1[1] = 1.
set udg_List2[1] = 3.
set udg_List1[2] = 1./3.
set udg_List2[2] = 7./3.
set udg_List1[3] = 3./2.
set udg_List2[3] = 2.
set udg_List1[4] = 7./3.
set udg_List2[4] = 5./2.
set udg_List1[5] = 11./5.
set udg_List2[5] = 13./5.
set udg_List1[6] = 7./4.
set udg_List2[6] = 5./2.
set udg_List1[7] = 3./2.
set udg_List2[7] = 2.
set udg_List1[8] = 3./2.
set udg_List2[8] = 5./4.
set udg_List1[9] = 6./5.
set udg_List2[9] = 2./5.
set udg_List1[10] = 1./3.
set udg_List2[10] = 0
set udg_List1[11] = 2./3.
set udg_List2[11] = 3./4.
set udg_List1[12] = 6./5.
set udg_List2[12] = 2./4.
set udg_List1[13] = 9./5.
set udg_List2[13] = 1./5.
set udg_List1[14] = 11./4.
set udg_List2[14] = 0
set udg_DimList = 14
loop
set i = i + 1
set udg_List1<i> = udg_List1<i> * 1000.
exitwhen i == udg_DimList
endloop
call Calculate(2, 10.00, 1, 0.30)
call TriggerSleepAction(10.00 + (udg_DimList-2)*3*0.3)
call Calculate(2, 10.00, 2, 0.30)
endfunction</i></i></i></i></i></i></i></i>``````

but this seems to be ugly and laggy and crashes at end. I think i'll give up on it for a while.

General chit-chat
Help Users
• No one is chatting at the moment.
• jonas:
Oh, I see. I thought Chinese version of A-levels
• jonas:
I've been using the translate app a lot on my phone. take a photo, translate. take another photo, translate again
• jonas:
it also has voice translation, my colleagues sometimes use that
• jonas:
You came during the 0 covid policy right? How'd you get through quarantine? Did you have some help with the apps and green codes?
• tom_mai78101:
If you have any Chinese you need help with, let me know.
+1
• vypur85:
@jonas Those were the things I did too. Translate app and VPN are always the most important things to have to survive. Lol.
• vypur85:
Yea I came last year. I was quarantined for about 30 days. Fml. The first day of my quarantine was the eve of Chinese new year last year. Fml again... Lol.
• vypur85:
@tom_mai78101 IIRC you're from Taiwan right.
• The Helper:
I thought China had cracked down on having any foreign teachers?
• vypur85:
Yeah I've heard of the news before. My school is still actively hiring foreign teachers. Not sure how things work now.
• The Helper:
yeah it is hard to get reliable information about that kind of stuff
• The Helper:
but you are doing it so it is still doable
• vypur85:
I think it doesn't affect existing foreign teachers. Then again, its still weird that my school is hiring.
• The Helper:
Happy Monday people hope everyone has a fantastic week!
• Ghan:
• jonas:
• jonas:
please put this in the news section, it's crazy
• tom_mai78101:
Technically, you can post in the Headline News. Just posted your news there.
• tom_mai78101:
I'm not aware of you not being able to post news.
• jonas:
I think technically I can I just forget how
+1
• The Helper:
Happy Thursday!
• The Helper:
Happy Friday Night!
+1
• V-SNES:
Happy Friday night!
+1
• vypur85:
Happy Sunday. Sigh. Work day tomorrow.
+1