procedure elementlist.Ajouter_chemin_lumineux(x,y,nombre_d_etape,espace_projection:integer; var modification:boolean; dans_cette_colection:u_object.metalist; utilisation_transparence:TR_Transparent_Methode; de_la_couleur_de_element:Tcolorref); var i,iparcours:integer; premier_point:tpoint; un_plot,deux_plot,trois_plot:font_ob1.testnode; angle_entre_ces_deux_point, angle_suplementaire:real; position_zero,position_un,position_deux:tpoint; espace_distribuer:real; dist_x,dist_y:integer; alpha:real; begin if dans_cette_colection=nil then exit; if not (dans_cette_colection.classtype=col_plan.TCalque) then exit; for i:=1 to nombre_d_etape do begin for iparcours:=1 to pred(self.count) do begin {Inventer par copyright denis bertin 6.10.2010} espace_distribuer:=1.0*(i/nombre_d_etape)*espace_projection; un_plot:=self.at(pred(iparcours)); deux_plot:=self.at(iparcours); if iparcours<pred(self.count) then trois_plot:=self.at(succ(iparcours)) else trois_plot:=nil; angle_entre_ces_deux_point:=utile.angle_radian_single(un_plot.x,un_plot.y,deux_plot.x,deux_plot.y)+utile.pisur2; dist_x:=round(cos(angle_entre_ces_deux_point)*espace_distribuer); dist_y:=round(sin(angle_entre_ces_deux_point)*espace_distribuer); position_un.x:=x+un_plot.x+dist_x; position_un.y:=y+un_plot.y-dist_y; if trois_plot<>nil then begin angle_suplementaire:=utile.angle_radian_single(deux_plot.x,deux_plot.y,trois_plot.x,trois_plot.y)+utile.pisur2; angle_entre_ces_deux_point:=(angle_entre_ces_deux_point+angle_suplementaire)/2; dist_x:=round(cos(angle_entre_ces_deux_point)*espace_distribuer); dist_y:=round(sin(angle_entre_ces_deux_point)*espace_distribuer); position_deux.x:=x+deux_plot.x+dist_x; position_deux.y:=y+deux_plot.y-dist_y; end else if self.count>2 then begin trois_plot:=self.at(1); angle_suplementaire:=utile.angle_radian_single(trois_plot.x,trois_plot.y,deux_plot.x,deux_plot.y)+utile.pisur2; angle_entre_ces_deux_point:=(angle_entre_ces_deux_point+angle_suplementaire)/2; dist_x:=round(cos(angle_entre_ces_deux_point)*espace_distribuer); dist_y:=round(sin(angle_entre_ces_deux_point)*espace_distribuer); position_deux.x:=x+deux_plot.x+dist_x; position_deux.y:=y+deux_plot.y-dist_y; end else begin position_deux.x:=x+deux_plot.x+dist_x; position_deux.y:=y+deux_plot.y-dist_y; end; if iparcours=1 then begin position_zero.x:=position_un.x; position_zero.y:=position_un.y; col_plan.TCalque(dans_cette_colection).Ds_Start_path(position_zero.x,position_zero.y); col_plan.TCalque(dans_cette_colection).Ds_Add_ligne(position_deux.x-position_zero.x,position_deux.y-position_zero.y); end else begin col_plan.TCalque(dans_cette_colection).Ds_Add_ligne(position_deux.x-position_zero.x,position_deux.y-position_zero.y); end; end; col_plan.TCalque(dans_cette_colection).Ds_de_cette_couleur(de_la_couleur_de_element); case utilisation_transparence of TTM_alpha: begin alpha:=i/nombre_d_etape; {dans ce cas alpha varie entre ]0 et 1]} end; TTM_xdeux: begin alpha:=i/nombre_d_etape; {entre ]0 et 1]} alpha:=alpha*alpha; {alpha varie toujours entre ]0 et 1] même avec la fonction x²} end; TTM_un_moins_x_deux: begin alpha:=i/nombre_d_etape; {entre ]0 et 1]} alpha:=alpha*alpha; alpha:=1-alpha; {1 mois le calcul précédant oscile vers le noir} end; end; {case} col_plan.TCalque(dans_cette_colection).Ds_Set_transparence(round(255*alpha)); col_plan.TCalque(dans_cette_colection).Ds_Add_ce_chemin; modification:=true; end; end; {elementlist.Ajouter_chemin_lumineux}


Copyright Denis Beelog pour Denis-Draw le 6.10.2010