Shape Drawing Help

killingdyl

Active Member
Reaction score
6
Ok so im no great mathematician but i copied this equation down from wikipedia and used it to create hypocycloids, but im trying to make a hypocycloid pentagram which is using a repeating decimal (5/3 = 1. 6666...) When i do that it doesnt work and i just get a dot. Someone want to help?
P.s. the 5/3 i got from this website http://mathworld.wolfram.com/Hypocycloid.html, its about half way down the page. Thanks

this is the code:

JASS:
function Trig_Test_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A004' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Test_Actions takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local unit array dummy
    local player p = GetOwningPlayer(caster)
    local real x = GetUnitX(caster)
    local real y = GetUnitY(caster)
    local real xx
    local real yy
    local real r = 200
    local real k = 4
    local integer i = 1
    local unit fog = null
    local group g = CreateGroup()
    loop
        exitwhen i > 360
        set xx = (r * (k - 1) * Cos((i) * bj_DEGTORAD)) + (r * Cos(((k - 1) * (i)) * bj_DEGTORAD))
        set yy = (r * (k - 1) * Sin((i) * bj_DEGTORAD)) - (r * Sin(((k - 1) * (i)) * bj_DEGTORAD))
        call CreateUnit(p, 'h004', xx, yy, 0)
        set i = i + 1
    endloop
endfunction

//===========================================================================
function InitTrig_Test takes nothing returns nothing
    set gg_trg_Test = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Test, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Test, Condition( function Trig_Test_Conditions ) )
    call TriggerAddAction( gg_trg_Test, function Trig_Test_Actions )
endfunction


P.S. Not fixing leaks or anything, i just want my pentagram to work.
 

uberfoop

~=Admiral Stukov=~
Reaction score
177
Seems like wc3 is treating the 5/3 as an integer and truncating it into 1 before assigning the value to the variable "k". Just use 1.66666666...etc... instead.

By the way, those shapes need to sweep over an angle set of 6pi radians, so you'll have to go up to 1080 instead of 360. If you only use 360, you'll wind up with a curvy "V"-shaped object.

Another thing... Readability. Personally I find your use of spaces and parenthesis in math code horrifying. You don't have to take my advice, by I find using space as a tool to separate large terms much more beautiful and maintainable than sticking space and parenthesis everywhere. For example:
JASS:
        set xx = r*((k-1)*Cos(i*bj_DEGTORAD) + Cos((k-1)*i*bj_DEGTORAD))
        set yy = r*((k-1)*Sin(i*bj_DEGTORAD) - Sin((k-1)*i*bj_DEGTORAD))



Finally, your condition:
JASS:
function Trig_Test_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A004' ) ) then
        return false
    endif
    return true
endfunction

==>
JASS:

function Trig_Test_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A004'
endfunction
 

uberfoop

~=Admiral Stukov=~
Reaction score
177
Hmm, I tried 1.666.. with my moderately modified copy of your math code and it worked fine. I'm not really sure what to say, except to suggest you try this function out, which works fine for me (though note that I adjusted the i interval to 10 because otherwise this would be compdeath on my machine; it shouldn't cause it to function any differently):

JASS:

scope bleh initializer Init
function Init takes nothing returns nothing
    local real x = 0
    local real y = 0
    local real xx
    local real yy
    local real r = 200
    local real k = 1.6666
    local integer i = 1
    loop
        exitwhen i > 1080
        set xx = r*((k-1)*Cos(i*bj_DEGTORAD) + Cos((k-1)*i*bj_DEGTORAD))
        set yy = r*((k-1)*Sin(i*bj_DEGTORAD) - Sin((k-1)*i*bj_DEGTORAD))
        call CreateUnit(Player(0), 'hfoo', xx, yy, 0)
        set i = i + 10
    endloop
endfunction
endscope
 

killingdyl

Active Member
Reaction score
6
ok really really weird, i didnt change my equation but today it worked perfectly!?!?! wtf happend lol
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      • Ghan
        Administrator - Servers are fun

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top