POV-Ray : Newsgroups : povray.newusers : Sphere_sweep doubt : Sphere_sweep doubt Server Time
4 Jul 2024 13:40:32 EDT (-0400)
  Sphere_sweep doubt  
From: a galli
Date: 4 Oct 2010 12:05:01
Message: <web.4ca9fa775bdef7053a1866be0@news.povray.org>
I am trying to draw several bonding wires between electronics components. I
opted to use sphere_sweep because the wires should roughly follow a parabola.
However, when I add too many instances to my design, only a small part of the
wires is represented.
Here is the code to reproduce the problem:


//#version 3.6;

#include "colors.inc"

global_settings {
  assumed_gamma 1.0
  max_trace_level 10
}

camera{
 location <-20,10, -4>
 direction 1.5*z
 right x*image_width/image_height
 look_at <4,0,-4>
}

background {color rgb <1,1,1>}

light_source {
  <0, 0, 0>            // light's position (translated below)
  color rgb <1, 1, 1>  // light's color
  translate <-30, 30, -30>
}



#macro Bonding(Inizio,Fine)
 #local Distanza= vlength(Fine-Inizio);
 #local Raggio = 0.020;
 sphere_sweep{
  cubic_spline
  4,
  Inizio + <0,-Distanza,0>, Raggio
  Inizio, Raggio
  Fine, Raggio
  Fine + <0,-Distanza,0>, Raggio
  tolerance 0.1
  texture{pigment{Red}}
 }
#end


#declare Altezza_base = 0.5;
#declare Altezza_gradino = 1;
#declare Altezza_cima_package = Altezza_base+Altezza_gradino;
#declare Altezza_ceramica = 0.5;
#declare Altezza_pellet = 0.5;
#declare Altezza_peltier = Altezza_ceramica*3+Altezza_pellet*2;
#declare Altezza_Base = 0.63;
#declare Altezza_scheda = 1.2;
#declare Quota_scheda =
Altezza_cima_package+Altezza_peltier-Altezza_scheda+Altezza_Base;
#declare Pos_x_ceramica = 0;
#declare Pos_z_ceramica = 0;

// Posizione pad
#declare Pad_Ceramica_base_esterni_1 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-3.40, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_2 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-2.60, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_3 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-2.20, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_4 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-1.80, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_5 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-1.40, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_6 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-1.00, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_7 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-0.60, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_8 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <-0.20, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_9 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <0.20, 0, -3.15>;
#declare Pad_Ceramica_base_esterni_10 = <Pos_x_ceramica,
Quota_scheda+Altezza_scheda, Pos_z_ceramica> + <0.60, 0, -3.15>;

// Posizione pad
#declare Pad_Ceramica_scheda_1 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <-0.0, 0, 0>;
#declare Pad_Ceramica_scheda_2 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <0.8, 0, 0>;
#declare Pad_Ceramica_scheda_3 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <1.2, 0, 0>;
#declare Pad_Ceramica_scheda_4 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <1.6, 0, 0>;
#declare Pad_Ceramica_scheda_5 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <2.0, 0, 0>;
#declare Pad_Ceramica_scheda_6 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <2.4, 0, 0>;
#declare Pad_Ceramica_scheda_7 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <2.8, 0, 0>;
#declare Pad_Ceramica_scheda_8 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <3.2, 0, 0>;
#declare Pad_Ceramica_scheda_9 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <3.6, 0, 0>;
#declare Pad_Ceramica_scheda_10 = <Pos_x_ceramica-3.40,
Quota_scheda+Altezza_scheda, Pos_z_ceramica-4.70> + <4.0, 0, 0>;


object{Bonding(Pad_Ceramica_base_esterni_1, Pad_Ceramica_scheda_1)}
object{Bonding(Pad_Ceramica_base_esterni_2, Pad_Ceramica_scheda_2)}
object{Bonding(Pad_Ceramica_base_esterni_3, Pad_Ceramica_scheda_3)}
object{Bonding(Pad_Ceramica_base_esterni_4, Pad_Ceramica_scheda_4)}
object{Bonding(Pad_Ceramica_base_esterni_5, Pad_Ceramica_scheda_5)}
object{Bonding(Pad_Ceramica_base_esterni_6, Pad_Ceramica_scheda_6)}
object{Bonding(Pad_Ceramica_base_esterni_7, Pad_Ceramica_scheda_7)}
object{Bonding(Pad_Ceramica_base_esterni_8, Pad_Ceramica_scheda_8)}
object{Bonding(Pad_Ceramica_base_esterni_9, Pad_Ceramica_scheda_9)}
object{Bonding(Pad_Ceramica_base_esterni_10, Pad_Ceramica_scheda_10)}


If I comment out the last line, however, the wires are drawn in their entirety.
Could someone explain what am I doing wrong here?
Thank you in advance


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.