Odd and Even numbers



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/06/2010 at 16:50, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   11.5 
    Platform:   Windows  ;   
    Language(s) :     C++  ;

    ---------
    Is it possible to determine if an index is odd or even?

    ~Shawn



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/06/2010 at 17:02, xxxxxxxx wrote:

    Figured this out...  ended up using ...

    if (Modulo(i, 2) != 0)



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 08/06/2010 at 05:44, xxxxxxxx wrote:

    Don't do that if you're handling Integers and high volume, because Modulo is a Real function.

    Easier using the C++ modulo operator:

    if (i%2) {
    }

    Hope it helps!

    Kabe



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 08/06/2010 at 05:57, xxxxxxxx wrote:

    Please use LModulo() for integers.

    cheers,
    Matthias



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 08/06/2010 at 09:06, xxxxxxxx wrote:

    Anything wrong with the C++ operator?

    Kabe



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 08/06/2010 at 10:04, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    Anything wrong with the C++ operator?

    Kabe

    Nothing wrong, in fact LModulo just wraps % with a special condition if a<0.

    from c4d_tools.h

      
    inline Real Modulo(Real a, Real b)  
    {  
      if (b==0.0) return 0.0;  
      LONG n = (LONG) (a/b);  
      
      a -= n*b;  
      if (a<0.0) a+= b;  
      
      return a;  
    }  
      
    inline LONG LModulo(LONG a, LONG b)  
    {  
      if (!b) return 0;  
      if (a >= 0) return a%b;  
      
      a -= (a/b)*b;  
      if (a<0) a+= b;  
      
      return a;  
    }  
      
    inline LLONG LModulo(LLONG a, LLONG b)  
    {  
      if (!b) return 0;  
      if (a >= 0) return a%b;  
      
      a -= (a/b)*b;  
      if (a<0) a+= b;  
      
      return a;  
    }  
    

    cheers,
    Matthias


Log in to reply