// File: /workspace/github_cpp_makefile_star2_O2/carlos-urena[P]svg-gen/svgobjects.cpp
// Function: EllipseSectorRadial::EllipseSectorRadial(unsigned int, float, float)
EllipseSectorRadial::EllipseSectorRadial( unsigned n, real plonX, real plonY )
{


  // initialize parámetros de este sector
  alpha0 = 0.0;
  alpha1 = pi*0.5*0.7 ;
  lonX = plonX ;
  lonY = plonY ;

  const vec3 center = vec3(0.0,0.0,1.0),
             eje1   = vec3(lonX,0.0,0.0),
             eje2   = vec3(0.0,lonY,0.0) ;

  // crear poligono
  ppol = new Polygon();

  // extremo del radius en alpha0
  const real c0 = real(cos(alpha0)),
             s0 = real(sin(alpha0));
  vec3 extremo0 = center + c0*eje1 + s0*eje2 ;

  // extremo del radius en alpha1
  const real c1 = real(cos(alpha1)),
             s1 = real(sin(alpha1));
  vec3 extremo1 = center + c1*eje1 + s1*eje2 ;

  // radius desde center (incluido) hasta extremo0 (sin incluir)
  const int nprad = n ;
  for( unsigned i = 0 ; i < nprad ; i++ )
     ppol->points3D.push_back( center + real(i)/real(nprad)*extremo0 );


  // arco de elipse (desde extremo0, incluido, hasta extremo1, sin incluir)
  for( unsigned i= 0 ; i < n ; i++ )
  {
    const real ang = alpha0 + (alpha1-alpha0)*real(i)/real(n) ;
    const real c = cos(double(ang)),
               s = sin(double(ang));
    ppol->points3D.push_back( center + c*eje1 + s*eje2 ) ;
  }

  // radius desde extremo1 (incluido) hasta center (sin incluir)
  for( unsigned i = nprad ; i > 0 ; i-- )
    ppol->points3D.push_back( center + real(i)/real(nprad)*extremo1 );


  // style del polígono (da igual pq luego esto no se dibuja: se dibujan sus proyecciones)
  ppol->style.draw_filled = false ;
  ppol->style.draw_lines = true ;
  ppol->style.close_lines = true ;
  ppol->style.lines_width = 0.006 ;
  ppol->style.lines_color  = vec3( 0.0, 1.0, 0.0 );

  // points
  const vec3 colpoint = vec3(0.0, 1.0, 0.0);
  //ppun0 = new Point( p0, colpoint );
  //ppun1 = new Point( p1, colpoint );

  // añadir objetos
  add( ppol );

  // añadir las posiciones del point0 y el point1 (extremos del segmento en alpha1)

  const vec3 extremo1esf = extremo1.normalized();
  real r = real(sqrt(extremo1esf[0]*extremo1esf[0]+extremo1esf[1]*extremo1esf[1]));
  point0 = vec3( extremo1esf[0]/r, extremo1esf[1]/r, extremo1esf[2] );
  point1 = vec3( point0[0], point0[1], 1.0 );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movl %esi, %r15d
movq %rdi, %rbx
movb $0x0, 0x8(%rdi)
xorps %xmm2, %xmm2
movups %xmm2, 0x20(%rdi)
andq $0x0, 0x30(%rdi)
leaq 0x827d(%rip), %rax      # 0xf918
movq %rax, (%rdi)
movabsq $0x3f8cbe4c00000000, %rax # imm = 0x3F8CBE4C00000000
movq %rax, 0x50(%rdi)
movss %xmm0, 0x58(%rdi)
movss %xmm1, 0x5c(%rdi)
andq $0x0, -0x6c(%rbp)
movss %xmm0, -0x94(%rbp)
andq $0x0, -0x90(%rbp)
movl $0x3f800000, -0x64(%rbp) # imm = 0x3F800000
andl $0x0, -0x88(%rbp)
movss %xmm1, -0x84(%rbp)
andl $0x0, -0x80(%rbp)
movl $0x98, %edi
callq 0x31b0
movq %rax, %r12
movq %rax, %rdi
callq 0x6332
movq %r12, 0x38(%rbx)
cvtss2sd 0x50(%rbx), %xmm0
callq 0x3270
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
cvtss2sd 0x50(%rbx), %xmm0
callq 0x3050
movsd %xmm0, -0x50(%rbp)
leaq -0x94(%rbp), %rdi
movss -0x2c(%rbp), %xmm0
callq 0x52f1
leaq -0x38(%rbp), %rsi
movlps %xmm0, (%rsi)
movss %xmm1, 0x8(%rsi)
leaq -0x6c(%rbp), %rdi
callq 0x988e
cvtsd2ss -0x50(%rbp), %xmm2
movlps %xmm0, -0x60(%rbp)
movss %xmm1, -0x58(%rbp)
leaq -0x88(%rbp), %rdi
movaps %xmm2, %xmm0
callq 0x52f1
leaq -0x48(%rbp), %rsi
movlps %xmm0, (%rsi)
movss %xmm1, 0x8(%rsi)
leaq -0x60(%rbp), %rdi
callq 0x988e
movss %xmm0, -0xac(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0xa8(%rbp)
movss %xmm1, -0xa4(%rbp)
cvtss2sd 0x54(%rbx), %xmm0
callq 0x3270
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
cvtss2sd 0x54(%rbx), %xmm0
callq 0x3050
movsd %xmm0, -0x50(%rbp)
leaq -0x94(%rbp), %rdi
movss -0x2c(%rbp), %xmm0
callq 0x52f1
leaq -0x48(%rbp), %rsi
movlps %xmm0, (%rsi)
movss %xmm1, 0x8(%rsi)
leaq -0x6c(%rbp), %rdi
callq 0x988e
cvtsd2ss -0x50(%rbp), %xmm2
movlps %xmm0, -0x38(%rbp)
movss %xmm1, -0x30(%rbp)
leaq -0x88(%rbp), %rdi
movaps %xmm2, %xmm0
callq 0x52f1
leaq -0xa0(%rbp), %rsi
movlps %xmm0, (%rsi)
movss %xmm1, 0x8(%rsi)
leaq -0x38(%rbp), %rdi
callq 0x988e
movss %xmm0, -0x60(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x5c(%rbp)
movss %xmm1, -0x58(%rbp)
cvtsi2ss %r15d, %xmm0
movss %xmm0, -0x2c(%rbp)
xorl %r13d, %r13d
leaq -0x38(%rbp), %r14
cmpl %r13d, %r15d
je 0x7894
movq 0x38(%rbx), %r12
movl %r13d, %eax
cvtsi2ss %rax, %xmm0
divss -0x2c(%rbp), %xmm0
leaq -0xac(%rbp), %rdi
callq 0x52f1
movlps %xmm0, -0x48(%rbp)
movss %xmm1, -0x40(%rbp)
leaq -0x6c(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x988e
addq $0x68, %r12
movss %xmm0, -0x38(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x34(%rbp)
movss %xmm1, -0x30(%rbp)
movq %r12, %rdi
movq %r14, %rsi
callq 0x9f14
incl %r13d
jmp 0x7835
movl %r15d, %eax
cvtsi2ss %rax, %xmm0
movss %xmm0, -0x7c(%rbp)
xorl %r13d, %r13d
leaq -0x38(%rbp), %r14
cmpl %r13d, %r15d
je 0x7994
movss 0x50(%rbx), %xmm0
movss 0x54(%rbx), %xmm1
subss %xmm0, %xmm1
movl %r13d, %eax
cvtsi2ss %rax, %xmm2
mulss %xmm1, %xmm2
divss -0x7c(%rbp), %xmm2
addss %xmm0, %xmm2
cvtss2sd %xmm2, %xmm0
movsd %xmm0, -0x78(%rbp)
callq 0x3270
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x50(%rbp)
movsd -0x78(%rbp), %xmm0
callq 0x3050
movsd %xmm0, -0x78(%rbp)
movq 0x38(%rbx), %r12
movss -0x50(%rbp), %xmm0
leaq -0x94(%rbp), %rdi
callq 0x52f1
movlps %xmm0, -0xa0(%rbp)
movss %xmm1, -0x98(%rbp)
leaq -0x6c(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x988e
cvtsd2ss -0x78(%rbp), %xmm2
movlps %xmm0, -0x48(%rbp)
movss %xmm1, -0x40(%rbp)
movaps %xmm2, %xmm0
leaq -0x88(%rbp), %rdi
callq 0x52f1
movlps %xmm0, -0xb8(%rbp)
movss %xmm1, -0xb0(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x988e
addq $0x68, %r12
movss %xmm0, -0x38(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x34(%rbp)
movss %xmm1, -0x30(%rbp)
movq %r12, %rdi
movq %r14, %rsi
callq 0x9f14
incl %r13d
jmp 0x78a8
leaq -0x38(%rbp), %r13
movl %r15d, %r14d
movq 0x38(%rbx), %r12
subl $0x1, %r14d
jb 0x79f8
movl %r15d, %eax
cvtsi2ss %rax, %xmm0
divss -0x2c(%rbp), %xmm0
leaq -0x60(%rbp), %rdi
callq 0x52f1
movlps %xmm0, -0x48(%rbp)
movss %xmm1, -0x40(%rbp)
leaq -0x6c(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x988e
addq $0x68, %r12
movss %xmm0, -0x38(%rbp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movss %xmm0, -0x34(%rbp)
movss %xmm1, -0x30(%rbp)
movq %r12, %rdi
movq %r13, %rsi
callq 0x9f14
movl %r14d, %r15d
jmp 0x799b
movb $0x0, 0x3a(%r12)
movw $0x101, 0x38(%r12)      # imm = 0x101
movl $0x3bc49ba6, 0x3c(%r12) # imm = 0x3BC49BA6
movabsq $0x3f80000000000000, %rax # imm = 0x3F80000000000000
movq %rax, 0x20(%r12)
andl $0x0, 0x28(%r12)
movq 0x38(%rbx), %rsi
movq %rbx, %rdi
callq 0x664c
leaq -0x60(%rbp), %rdi
callq 0x5372
movaps %xmm0, %xmm2
shufps $0x55, %xmm0, %xmm2     # xmm2 = xmm2[1,1],xmm0[1,1]
movaps %xmm2, %xmm3
mulss %xmm2, %xmm3
movaps %xmm0, %xmm4
mulss %xmm0, %xmm4
addss %xmm3, %xmm4
sqrtss %xmm4, %xmm3
divss %xmm3, %xmm0
divss %xmm3, %xmm2
movss %xmm0, 0x60(%rbx)
movss %xmm2, 0x64(%rbx)
movss %xmm1, 0x68(%rbx)
movss %xmm0, 0x6c(%rbx)
movss %xmm2, 0x70(%rbx)
movl $0x3f800000, 0x74(%rbx) # imm = 0x3F800000
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7ab1
jmp 0x7ab1
movq %rax, %r14
movq %r12, %rdi
callq 0x3190
jmp 0x7ab4
jmp 0x7ab1
jmp 0x7ab1
jmp 0x7ab1
jmp 0x7ab1
jmp 0x7ab1
jmp 0x7ab1
jmp 0x7ab1
jmp 0x7ab1
movq %rax, %r14
movq %rbx, %rdi
callq 0x971e
movq %r14, %rdi
callq 0x3250