optgeo-2.21/0000755000175000017500000000000012257101136013127 5ustar georgeskgeorgeskoptgeo-2.21/saisiefant.lfm0000750000175000017500000000461312247333133015762 0ustar georgeskgeorgeskobject saisiefantomes: Tsaisiefantomes Left = 200 Height = 222 Top = 108 Width = 670 BorderIcons = [] BorderStyle = bsDialog Caption = 'Pour cacher des segments de rayon' ClientHeight = 222 ClientWidth = 670 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object GroupBox1: TGroupBox Left = 16 Height = 209 Top = 8 Width = 521 Caption = 'Saisie des fantomes' ClientHeight = 191 ClientWidth = 517 TabOrder = 0 object StaticText1: TLabel Left = 32 Height = 14 Top = 24 Width = 399 Caption = 'Pour des raisons de commodité, la possibilité vous est offerte de "cacher" certaines' ParentColor = False end object StaticText2: TLabel Left = 24 Height = 14 Top = 40 Width = 428 Caption = 'parties des rayons lumineux calculés. Pour ce faire, cocher la case "Créer des fantomes",' ParentColor = False end object StaticText3: TLabel Left = 24 Height = 14 Top = 56 Width = 418 Caption = 'et donner la liste des segments à cacher. Les numéros des segments sont actuellement' ParentColor = False end object StaticText4: TLabel Left = 144 Height = 14 Top = 72 Width = 129 Caption = 'visualisés sur la simulation.' ParentColor = False end object StaticText5: TLabel Left = 8 Height = 14 Top = 120 Width = 445 Caption = 'Liste des fantomes (liste entre parenthéses, numéro des segments séparés par des virgules,' ParentColor = False end object StaticText6: TLabel Left = 8 Height = 14 Top = 144 Width = 179 Caption = 'sans espaces); exemple: (1,5,10,12)' ParentColor = False end object cochefantomes: TCheckBox Left = 112 Height = 17 Top = 96 Width = 115 Caption = 'Créer des fantomes' TabOrder = 0 end object editfantomes: TEdit Left = 8 Height = 21 Top = 168 Width = 441 TabOrder = 1 end end object BitBtn1: TBitBtn Left = 552 Height = 200 Top = 15 Width = 116 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 1 end end optgeo-2.21/optgeo.lrs0000750000175000017500000000527612247333133015161 0ustar georgeskgeorgeskLazarusResources.Add('MAINICON','ICO',[ #0#0#1#0#1#0' '#16#0#1#0#4#0#232#2#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#4#0#0#0#0#0#128#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0 +#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#128#128#128#0#192#192 +#192#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255 +#255#255#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#240#0#15#255 +#255#255#255#255#255#255#255#255#255#255#255#255#15#0#240#255#255#255#255#255 +#255#255#255#255#255#255#255#240#255#0#255#15#255#255#255#255#255#255#255#255 +#255#255#255#255#255#0#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#0#255#255#255#255#255#255#240#15#255#255#255#255#255#255#255#0#255 +#255#255#255#255#255#0#0#255#255#255#255#255#255#255#0#255#255#255#255#255 +#240#240#15#15#255#255#255#255#255#255#0#255#255#255#255#255#255#240#15#255 +#255#255#204#204#204#204#0#207#255#255#255#255#255#240#15#255#255#255#255#255 +#255#255#0#252#207#255#255#255#255#144#9#153#153#153#255#255#255#255#0#255 +#252#207#255#255#153#240#15#255#255#255#255#255#255#255#0#255#255#252#255#249 +#255#240#15#255#255#255#170#170#170#170#0#170#170#170#170#170#170#160#10#170 +#170#170#255#255#255#255#0#255#255#255#153#204#255#240#15#255#255#255#255#255 +#255#255#0#255#255#249#255#255#204#240#15#255#255#255#255#255#255#255#0#255 +#255#159#255#255#255#192#12#204#204#204#255#255#255#255#0#255#153#255#255#255 +#240#240#15#15#255#255#255#255#255#255#0#249#255#255#255#255#255#0#0#255#255 +#255#153#153#153#153#0#159#255#255#255#255#255#240#15#255#255#255#255#255#255 +#255#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#0#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#0#255#255#255#255#255#255#255#255 +#255#255#255#255#255#240#255#0#255#15#255#255#255#255#255#255#255#255#255#255 +#255#255#15#0#240#255#255#255#255#255#255#255#255#255#255#255#255#255#240#0 +#15#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 ]); optgeo-2.21/unit_imp.pas0000750000175000017500000001020212247333133015454 0ustar georgeskgeorgeskunit Unit_imp; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, Spin, Buttons,UnitScaleFont,Printers,UChaines; type { Tconfigimpression } tgraphehorizontal=(tgauche,tdroite,tcentreh); tgraphevertical=(thaut,tbas,tcentrev); Tconfigimpression = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; CheckBoxrespect: TCheckBox; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; RadioGrouporientation: TRadioGroup; RadioGroupevertical: TRadioGroup; radiogroupehorizontal: TRadioGroup; spinpourcentagevertical: TSpinEdit; spinpourcentagehorizontal: TSpinEdit; Spinnombrecopies: TSpinEdit; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { private encreation:boolean; declarations } public { public declarations } end; var configimpression: Tconfigimpression; abandonimpression,respect_imprimante:boolean; graphehorizontal:tgraphehorizontal; graphevertical:tgraphevertical; taillegraphehorizontal,taillegraphevertical,nombrecopies:integer; implementation uses ray1; { Tconfigimpression } procedure Tconfigimpression.BitBtn1Click(Sender: TObject); begin abandonimpression:=false; if radiogroupehorizontal.itemindex=1 then graphehorizontal:=tgauche; if radiogroupehorizontal.itemindex=0 then graphehorizontal:=tdroite; if radiogroupehorizontal.itemindex=2 then graphehorizontal:=tcentreh; if radiogroupevertical.itemindex=0 then graphevertical:=thaut; if radiogroupevertical.itemindex=1 then graphevertical:=tbas; if radiogroupevertical.itemindex=2 then graphevertical:=tcentrev; taillegraphehorizontal:=spinpourcentagehorizontal.value; taillegraphevertical:=spinpourcentagevertical.value; nombrecopies:=spinnombrecopies.value; if radiogrouporientation.ItemIndex=0 then orientation_impression:=poportrait else orientation_impression:=polandscape; respect_imprimante:=checkboxrespect.Checked; end; procedure Tconfigimpression.BitBtn2Click(Sender: TObject); begin end; procedure Tconfigimpression.FormCreate(Sender: TObject); begin encreation:=true; CHECKBOXRESPECT.CAPTION :=rsRespecterLes; GROUPBOX1.CAPTION :=rsPosition; GROUPBOX2.CAPTION :=rsNombreDeCopi; GROUPBOX3.CAPTION :=rsTailleEnDeLa; GROUPBOX4.CAPTION :=rsRapportHaute; LABEL1.CAPTION :=rsNombre; LABEL2.CAPTION :=rsHorizontalem; LABEL3.CAPTION :=rsVerticalemen; RADIOGROUPORIENTATION.CAPTION :=rsOrientation; configimpression.Caption :=rsConfiguratio; GroupBox1.Caption := rsPosition; radiogroupehorizontal.Caption := rsHorizontale; // radiogroupehorizontal.Items.clear; radiogroupehorizontal.Items[0]:=rsDroite; radiogroupehorizontal.Items[1]:=rsGauche; radiogroupehorizontal.Items[2]:=rsCentr; RadioGroupevertical.Caption := rsVerticale; //RadioGroupevertical.Items.clear; RadioGroupevertical.Items[0]:=rsHaut; RadioGroupevertical.Items[1]:=rsBas; RadioGroupevertical.Items[2]:=rsCentr; GroupBox2.Caption := rsNombreDeCopi; Label1.Caption := rsNombre; GroupBox3.Caption := rsTailleEnDeLa; Label2.Caption := rsHorizontalem; Label3.Caption := rsVerticalemen; RadioGrouporientation.Caption := rsOrientation; //RadioGrouporientation.Items.clear; RadioGrouporientation.Items[0]:=rsPortrait; RadioGrouporientation.Items[1]:= rsPaysage; BitBtn2.Caption := rsAnnuler; BitBtn1.Caption := rsOK; end; procedure Tconfigimpression.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$I unit_imp.lrs} grapheHorizontal:=tcentreh; graphevertical:=tcentrev; taillegraphehorizontal:=90; taillegraphevertical:=90; nombrecopies:=1; orientation_impression:=polandscape; end. optgeo-2.21/saisiereseau.pas0000750000175000017500000001400712247333133016321 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiereseau; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, Colorbox, ExtCtrls, Buttons,unit222, LResources,LCLType,UnitScaleFont, UChaines; type { TsaisieReseau } { Tsaisiereseau } Tsaisiereseau = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Colorgrid1: TColorBox; FloatSpinEdit1: TFloatSpinEdit; GroupBox6: TGroupBox; GroupBox7: TGroupBox; Image1: TImage; GroupBox1: TGroupBox; GroupBox2: TGroupBox; cochehachures: TCheckBox; GroupBox3: TGroupBox; editepaisseur: TSpinEdit; GroupBox4: TGroupBox; RadioGroup1: TRadioGroup; SpinEdit_ordre_max: TSpinEdit; SpinEdit_ordre_min: TSpinEdit; StaticText1: TLabel; editx1: TEdit; StaticText2: TLabel; edity1: TEdit; GroupBox5: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; StaticText5: TStaticText; StaticText6: TStaticText; StaticText7: TStaticText; StaticText8: TStaticText; procedure BitBtn1Click(Sender: TObject); procedure boutonsupClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var Fsaisiereseau: Tsaisiereseau; mp_hachuresReseau:boolean; mp_epaisseurReseau:integer; mp_couleurReseau:tcolor; mp_x1,mp_x2,mp_y1,mp_y2:extended; implementation procedure Tsaisiereseau.BitBtn1Click(Sender: TObject); begin mp_hachuresReseau:=cochehachures.Checked; mp_epaisseurReseau:=editepaisseur.Value; mp_couleurReseau:=colorgrid1.Selected; try mp_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; if ((mp_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try mp_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((mp_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try mp_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((mp_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try mp_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((mp_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; ReTaillePreseau(Listereseau,nombrereseau,nombrereseau+1); inc(nombrereseau); if not (Listereseau[-1+nombrereseau].create(mp_x1,mp_y1,mp_x2,mp_y2, mp_epaisseurReseau, mp_couleurReseau, 1e-3/floatspinedit1.Value, radiogroup1.ItemIndex=0, mp_hachuresReseau,spinedit_ordre_min.value,spinedit_ordre_max.Value)) then begin ReTaillePreseau(Listereseau,nombrereseau,nombrereseau-1); dec(nombrereseau); application.messagebox(pchar(rsTailleDuRSea), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisiereseau.boutonsupClick(Sender: TObject); begin end; procedure Tsaisiereseau.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeR2; radiogroup1.caption:=rsTypeDeRSeau; radiogroup1.Items.Clear; radiogroup1.Items.Add(rsEnTransmissi); radiogroup1.Items.Add(rsEnRFlexion); groupbox6.Caption:=rsNombreDeTrai; statictext8.Caption:=rsLesLongueurs; CAPTION :=rsAjoutDUnRSea2; COCHEHACHURES.CAPTION :=rsHachuresSiRS; GROUPBOX1.CAPTION :=rsCouleurLCran6; GROUPBOX2.CAPTION :=rsAspect; GROUPBOX3.CAPTION :=rsEpaisseurTra5; GROUPBOX4.CAPTION :=rsPoint1; GROUPBOX5.CAPTION :=rsPoint2; groupbox7.Caption:=rsOrdresPrendr; statictext5.Caption:=rsOrdreMinimum; statictext6.Caption:=rsOrdreMaximum; statictext7.Caption:= rsRemarqueImpo; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; STATICTEXT1.CAPTION :=rsX; STATICTEXT2.CAPTION :=rsY; STATICTEXT3.CAPTION :=rsX; STATICTEXT4.CAPTION :=rsY; end; procedure Tsaisiereseau.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiereseau.lrs} end. optgeo-2.21/unit_indices_milieu_ambiant.lfm0000750000175000017500000000726312247333133021354 0ustar georgeskgeorgeskobject saisie_indices_milieu_ambiant: Tsaisie_indices_milieu_ambiant Left = 631 Height = 275 Top = 209 Width = 592 BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'Indices du milieu ambiant' ClientHeight = 275 ClientWidth = 592 OnCreate = FormCreate OnShow = FormShow LCLVersion = '1.0.10.0' object StaticText3: TLabel Left = 8 Height = 21 Top = 16 Width = 86 Caption = 'Pour le vert:' Color = clGreen Font.Style = [fsBold] ParentColor = False ParentFont = False Transparent = False end object StaticText4: TLabel Left = 8 Height = 21 Top = 48 Width = 99 Caption = 'Pour le rouge:' Color = clRed Font.Style = [fsBold] ParentColor = False ParentFont = False Transparent = False end object StaticText5: TLabel Left = 8 Height = 21 Top = 79 Width = 88 Caption = 'Pour le bleu:' Color = clBlue Font.Style = [fsBold] ParentColor = False ParentFont = False Transparent = False end object Edit_indice_vert_par_defaut: TEdit Left = 112 Height = 28 Top = 9 Width = 65 TabOrder = 0 Text = '1' end object Edit_indice_rouge_par_defaut: TEdit Left = 112 Height = 28 Top = 41 Width = 65 TabOrder = 1 Text = '1' end object Edit_indice_bleu_par_defaut: TEdit Left = 112 Height = 28 Top = 72 Width = 65 TabOrder = 2 Text = '1' end object BitBtn1: TBitBtn Left = 207 Height = 86 Top = 8 Width = 151 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 3 end object StaticText1: TStaticText Left = 12 Height = 24 Top = 156 Width = 244 Caption = 'Longueur d''onde pour le vert:' Font.Color = clGreen Font.Style = [fsBold] ParentFont = False TabOrder = 4 end object StaticText2: TStaticText Left = 12 Height = 24 Top = 121 Width = 244 Caption = 'Longueur d''onde pour le rouge:' Font.Color = clRed Font.Style = [fsBold] ParentFont = False TabOrder = 5 end object StaticText6: TStaticText Left = 12 Height = 24 Top = 188 Width = 244 Caption = 'Longueur d''onde pour le bleu:' Font.Color = clBlue Font.Style = [fsBold] ParentFont = False TabOrder = 6 end object FloatSpinEditvert: TFloatSpinEdit Left = 272 Height = 28 Top = 152 Width = 86 Increment = 1 MaxValue = 780 MinValue = 380 TabOrder = 7 Value = 520 end object FloatSpinEditrouge: TFloatSpinEdit Left = 269 Height = 28 Top = 117 Width = 87 Increment = 1 MaxValue = 780 MinValue = 380 TabOrder = 8 Value = 632 end object FloatSpinEditbleu: TFloatSpinEdit Left = 269 Height = 28 Top = 184 Width = 89 Increment = 1 MaxValue = 780 MinValue = 380 TabOrder = 9 Value = 450 end object StaticText7: TStaticText Left = 14 Height = 23 Top = 233 Width = 538 Caption = 'Les valeurs de longueur d''onde sont utilisées pour les réseaux de diffraction' TabOrder = 10 end object StaticText8: TStaticText Left = 368 Height = 26 Top = 119 Width = 45 Caption = 'nm' Font.Style = [fsBold] ParentFont = False TabOrder = 11 end object StaticText9: TStaticText Left = 368 Height = 26 Top = 152 Width = 45 Caption = 'nm' Font.Style = [fsBold] ParentFont = False TabOrder = 12 end object StaticText10: TStaticText Left = 368 Height = 26 Top = 184 Width = 45 Caption = 'nm' Font.Style = [fsBold] ParentFont = False TabOrder = 13 end end optgeo-2.21/unitconfigpostscript.pas0000750000175000017500000001153412247333133020141 0ustar georgeskgeorgeskunit UnitConfigPostScript; {$mode objfpc} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, Spin, Buttons,UChaines,UnitScaleFont,MonPostscript; type tgraphehorizontal=(tgauche,tdroite,tcentreh); tgraphevertical=(thaut,tbas,tcentrev); { TFormConfigPostScript } TFormConfigPostScript = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; CheckBoxrespect: TCheckBox; ComboBox1: TComboBox; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; GroupBox5: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; RadioGrouporientation: TRadioGroup; RadioGroupevertical: TRadioGroup; radiogroupehorizontal: TRadioGroup; SpinEdit_resx: TSpinEdit; SpinEdit_resy: TSpinEdit; spinpourcentagevertical: TSpinEdit; spinpourcentagehorizontal: TSpinEdit; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private encreation:boolean; { private declarations } public { public declarations } end; var FormConfigPostScript: TFormConfigPostScript; graphehorizontal:tgraphehorizontal; graphevertical:tgraphevertical; taillegraphehorizontal,taillegraphevertical:integer; implementation uses Ray1; { TFormConfigPostScript } procedure TFormConfigPostScript.FormCreate(Sender: TObject); begin encreation:=true; CHECKBOXRESPECT.CAPTION :=rsRespecterLes; GROUPBOX1.CAPTION :=rsPosition; GROUPBOX3.CAPTION :=rsTailleEnDeLa; GROUPBOX4.CAPTION :=rsRapportHaute; LABEL1.CAPTION :=rsNombre; LABEL2.CAPTION :=rsHorizontalem; LABEL3.CAPTION :=rsVerticalemen; groupbox5.Caption:=rsRSolutions; label1.Caption:=rsHorizontale2; label4.Caption:=rsVerticale2; combobox1.Items.Clear; combobox1.Items.Add(rsA4); combobox1.Items.Add(rsA3); combobox1.Items.Add(rsA22); combobox1.Items.Add(rsA1); combobox1.Items.Add(rsA0); combobox1.Items.Add(rsA5); combobox1.Items.Add(rsLetter); combobox1.Items.Add(rsLegal); combobox1.Items.Add(rsLedger); RADIOGROUPORIENTATION.CAPTION :=rsOrientation; FormConfigPostScript.caption :=rsPropriTSDuFi; radiogroupehorizontal.Caption := rsHorizontale; // radiogroupehorizontal.Items.clear; radiogroupehorizontal.Items[0]:=rsDroite; radiogroupehorizontal.Items[1]:=rsGauche; radiogroupehorizontal.Items[2]:=rsCentr; RadioGroupevertical.Caption := rsVerticale; //RadioGroupevertical.Items.clear; RadioGroupevertical.Items[0]:=rsHaut; RadioGroupevertical.Items[1]:=rsBas; RadioGroupevertical.Items[2]:=rsCentr; Label1.Caption := rsNombre; GroupBox3.Caption := rsTailleEnDeLa; Label2.Caption := rsHorizontalem; Label3.Caption := rsVerticalemen; RadioGrouporientation.Caption := rsOrientation; //RadioGrouporientation.Items.clear; RadioGrouporientation.Items[0]:=rsPortrait; RadioGrouporientation.Items[1]:= rsPaysage; BitBtn2.Caption := rsAnnuler; BitBtn1.Caption := rsOK; end; procedure TFormConfigPostScript.BitBtn1Click(Sender: TObject); begin if radiogroupehorizontal.itemindex=1 then graphehorizontal:=tgauche; if radiogroupehorizontal.itemindex=0 then graphehorizontal:=tdroite; if radiogroupehorizontal.itemindex=2 then graphehorizontal:=tcentreh; if radiogroupevertical.itemindex=0 then graphevertical:=thaut; if radiogroupevertical.itemindex=1 then graphevertical:=tbas; if radiogroupevertical.itemindex=2 then graphevertical:=tcentrev; taillegraphehorizontal:=spinpourcentagehorizontal.value; taillegraphevertical:=spinpourcentagevertical.value; if radiogrouporientation.ItemIndex=0 then or_ps:=portrait else or_ps:=paysage; respect_ps:=checkboxrespect.Checked; if combobox1.Items[combobox1.ItemIndex]=rsA4 then p_ps:=A4; if combobox1.Items[combobox1.ItemIndex]=rsA3 then p_ps:=A3; if combobox1.Items[combobox1.ItemIndex]=rsA22 then p_ps:=A2; if combobox1.Items[combobox1.ItemIndex]=rsA1 then p_ps:=A1; if combobox1.Items[combobox1.ItemIndex]=rsA0 then p_ps:=A0; if combobox1.Items[combobox1.ItemIndex]=rsA5 then p_ps:=A5; if combobox1.Items[combobox1.ItemIndex]=rsLegal then p_ps:=Legal; if combobox1.Items[combobox1.ItemIndex]=rsLetter then p_ps:=Letter; if combobox1.Items[combobox1.ItemIndex]=rsLedger then p_ps:=Ledger; res_ps_x:=spinedit_resx.Value; res_ps_y:=spinedit_resy.Value; end; initialization {$I unitconfigpostscript.lrs} grapheHorizontal:=tcentreh; graphevertical:=tcentrev; taillegraphehorizontal:=90; taillegraphevertical:=90; or_ps:=paysage; p_ps:=A4; res_ps_x:=72; res_ps_y:=72; end. optgeo-2.21/unit17b.pas0000750000175000017500000000310412247333133015124 0ustar georgeskgeorgeskunit Unit17b; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,UChaines,translations,UnitScaleFont; type { Tsplashscreen } Tsplashscreen = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private { private declarations } encreation:boolean; public { public declarations } end; var splashscreen: Tsplashscreen; Lang, FallbackLang: String; implementation { Tsplashscreen } procedure Tsplashscreen.FormCreate(Sender: TObject); var PODirectory: String; f:textfile; nom_ini_file:string; label 1888; begin encreation:=true; Caption := rsSplashscreen; Label1.Caption := rsOptgeo2; Label2.Caption := rsLogicielLibr; Label3.Caption := rsVersion205Du; Label4.Caption := rsAuteurJeanMa; end; procedure Tsplashscreen.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; label1.Left:=(splashscreen.ClientWidth div 2)- (label1.Canvas.TextWidth(label1.Caption) div 2); label2.Left:=(splashscreen.ClientWidth div 2)- (label2.Canvas.TextWidth(label2.Caption) div 2); label3.Left:=(splashscreen.ClientWidth div 2)- (label3.Canvas.TextWidth(label3.Caption) div 2); label4.Left:=(splashscreen.ClientWidth div 2)- (label4.Canvas.TextWidth(label4.Caption) div 2); end; initialization {$I unit17b.lrs} end. optgeo-2.21/historique.html0000750000175000017500000004673112247333352016230 0ustar georgeskgeorgesk Historique Optgeo:        historique des versions
                         compatibilit des fichiers de simulation
                        dsinstallation des versions Windows
                         installation rseau Windows


Historique des versions

-Version 2.21 du 02/12/2013

- Correction d'un bug: modification des longueurs d'onde non pris en compte dans le menu "options", "indice du milieu ambiant et longueurs d'onde"; et non enregistres avec la simulation.

-Version 2.20 du 30/11/2013

- Ajout de l'objet rseau diffractant

- modif du  rpertoire d'accueil des simulations pour qu'il ne soit pas cach par dfaut sous linux et OSX:

/home/${USER}/MesSimulations sous linux
Mes Documents\MesSimulations sous windows
/Users/user/MesSimulations sous Mac OSX

- compilable avec Lazarus 1.0

- correction du bug de refus d'ouverture ou de sauvegarde depuis un dossier comportant des caractres accentus

-Version 2.15 du 24/11/2012

- La version anglaise de l'interface est dsormais  acheve: un grand merci Robert Steed pour son travail !

-Version 2.14 du 20/11/2012

- Correction d'un bug: lorsque les indices du milieu ambiant taient modifis, il n'en tait pas tenu compte lors de la sortie des rayons des matriaux !

-Version 2.13 du 23/08/2012

- Correction d'un bug (le dernier j'espre) pouvant affecter la dtection de la langue du systme d'exploitation.

-Version 2.12 du 11/08/2012

- Correction d'un bug sous linux concernant le changement de langue l'xcution, et meilleure dtection de la langue du systme d'exploitation (si optgeo traduit dans cette langue).
- English translation: ~60%

-Version 2.11 du 01/01/2012

- Modification des rpertoires:
    le rpertoire de configuration d'optgeo est maintenant  :
/home/${USER}/.config/optgeo sous linux
%appdata%\optgeo sous windows
/Users/user/.config/optgeo sous Mac OSX

- Dmarrage sous la langue du systme d'exploitation ( condition que optgeo soit traduit dans cette langue).

-Version 2.10 du 19/10/2011

- Correction de plusieurs bugs importants dans l'objet polycercle: changements intempestifs de forme en cours de dplacement, intersections impossibles acceptes la construction, mauvaise dtermination de l'indice.

-Version 2.05 du 05/10/2011

- Modification de l'objet "polycercle" pour qu'il accepte de n'avoir que deux points, afin de crer des lentilles plan-convexe proprement.
-  Correction bug: l'extension .opt n'tait plus rajoute lors de la sauvegarde.

-Version 2.04 du 13/02/2011

- Ajout de la possibilit de superposer plusieurs simulations; pour la dernire charge, une cration de groupe se fait automatiquement.
- Ajout d'un bouton "grouper tout"

-Version 2.03 du 02/11/2010

- Ajout de la possibilit la simulation au format vectoriel PostScript (fichier .ps).

-Version 2.02 du 02/10/2010

- Correction d'un bug d'affichage dans la fentre des proprits de la sphre rfractante.

-Version 2.01 du 16/07/2010

- Ajout de la possibilit de changer les indices du milieu "ambiant" (celui dans lequel plnge la simulation)

-Version 2.00 bta 4 du 08/05/2010

- Correction d'un bug bloquant dans l'affichage des angles dbordant de l'espace de travail
- Correction d'un bug de calcul des rayons en prsence de prismes et d'autres surfaces rfractantes en recouvrement
- Correction d'un bug empchant l'ouverture de fichiers dont le nom contient des caractres accentus dans la version Windows.


-Version 2.00 bta 3 du 12/03/2010

-Version prte pour l'internationalisation: menu Options, Langue.
- Pour le moment,  il n'y a qu'un dbut de traduction en anglais.
- Je cherche des volontaires pour la traduction. Pour traduire, c'est trs facile; par exemple pour l'espagnol (es), il faut complter dans le fichier optgeo.es.po qui est dans le repertoire \lang toutes les lignes contenant msgstr "  ". Pas besoin de recompiler Optgeo. Pour traduire l'aide, il faut traduire les fichiers html qui sont dans le sous-repertoire du repertoire aide (par exemple \aide\es pour l'espagnol.

-Version 2.00 bta 2 du 10/02/2010

-Modification version Linux uniquement: rsolution du problme de lenteur de dplacement des objets sous Linux/GTK2.

-Version 2.00 bta 1 du 08/02/2010

-1re version crite en Lazarus

- ajout d'un objet "prisme" (avec en particulier rotation autour du centre d'inertie)

-lors de la slection d'un point correspondant plusieurs points possibles, le programme propose de choisir 

- modification de l'interface: regroupement des boutons sur une palette

-correction de bugs dans les polycercles

- les fichiers .rtf de commentaires sont remplacs par des fichiers .txt moins riches mais multi plateforme

- les fichiers .opt et .txt sont encods en UTF-8 afin d'tre multi plateforme

-  amlioration de l'impression

- possibilit d'exporter la simulation en PNG et JPG

- possibilit de limiter le nombre de segments pour chaque rayon lumineux

- Attention: ceci est une version bta; en raison du travail de rcriture trs important, il y a surement des bugs rsiduels, merci de me les signaler.

- Version 1.32 du 03/01/2010: permet de limiter le nombre maximal de segments que peut avoir un rayon lumineux; le choix se fait sur la fentre de cration de la simulation; permet d'avoir la cardiode qu'on voit au fond d'une tasse ou d'une casserolle (exemple rajout dans "exemples classiques"); augmentation du nombre maximal de rayons lumineux par source (ponctuelle ou plane) 500

- Version 1.31 du 16/02/2009: amlioration du trac des miroirs coniques en cas de zoom

- Version 1.30 du 14/11/2008: possibilit d'afficher les coordonnes des extrmits des segments

-Linux uniquement: version 1.27 du 01/01/2008: possibilit d'ouvrir une simulation depuis la ligne de commande

-Linux uniquement: version 1.26 du 20/03/2005: ajout d'une fonction d'exportation du graphe aux formats PNG, JPEG et BMP; et la copier-coller devrait thoriquement mieux fonctionner...

- Version 1.25 du 28/10/2004: OptGeo passe au libre ! Il est dsormais disponible sous license GNU GPL. Les sources sont disponibles, et modifiables sous les termes de la license GNU GPL.

- Linux uniquement: version 1.24.1 du 16/10/2004: correction d'un bug qui lors du premier lancement de Optgeo signalait l'inexistence du repertoire /home/moimoi (rsidu malheureux d'un essai...)

- Version 1.24 du 06/10/2004: ajout d'un menu permettant d'ouvrir depuis le dernier rpertoire utilis; correction d'un bug pouvant survenir fugitivement lors de la suppression d'un miroir cnique; correction d'un bug sur l'affichage des angles de rfraction.

- Version 1.23 du 01/10/2004: corrige un autre bug de trac des polyhdres qui pouvait donner une erreur "division par zro"; ajoute de la prise en compte des modifications d'empennage et de couleur de fond dans la fonction Annuler/Rtablir; correction d'un bug de modification de police quand on modifie un texte; correction du bug de disparition de commentaire en cas d'utilisation de la fonction Annuler/Rtablir.

- Version 1.22 du 26/09/2004: corrige un bug de trac avec les polyhdres (rayons rflchis pas toujours affichs).

- Version 1.21 du 21/09/2004: amlioration de la fonction d'annulation; correction d'un bug dans l'affichage du rpertoire des boites dialogues d'ouverture de fichier; ajout de la possibilit de modifier le rpertoire perso de simulation; pour la version Linux, le niveau d'annulation passe bien 50 (il tait btement 4 dans la version 1.20).

- Version 1.20 du 17/09/2004: ajout d'une fonction d'annulation/rtablissement 50 niveaux.

- Version 1.10 du 22/10/2003

- possibilit d'aligner les points sur une mme verticale verticale ou horizontale avec les touches Alt et Ctrl (document dans l'aide)

- possibilit redimensionner l'espace de travail en cours de simulation

- possibilit de configurer les rpertoires de simulation

- possibilit de changer la couleur de fond de la simulation

- on peut dsormais fixer la position et la taille de l'empennage des rayons

- les attributs par dfaut des lments peuvent tre rgls, et cette configuration peut tre enregistr sur disque

Merci au collgue (il se reconnatra) qui m'a suggr toutes ces amliorations !
 

 

- Version 1.05 du 17/05/2003:
                                                         - ajout de la possibilit de grouper des lments pour pouvoir les translater ensemble
                                                         - possibilit d'associer les fichiers .opt OptGeo pour pouvoir les ouvrir directement par double-clic
                                                         - correction d'un bug qui empchait les sauvegardes des objets "mesures de distance"

- Version 1.04 du 02/05/2003:
                                                        - ajout d'un objet "oeil stylis"
                                                        - le dinstalleur automatique remarche !

- Version 1.03: ajout d'un objet "trait" qui permet de rajouter trait, flche,... sur la simulation (objet inerte du point de vue optique); ajout d'une liste de matriau pour les rgions rfractantes, qui vite la saisie des indices la main (mais c'est toujours possible bien-sr); la fentre des commentaires reste rduite l'ouverture d'une simulation si le commentaire est vide; affichage du nom de la simulation dans le bandeau de la fentre du logiciel.; correction d'un bug qui empchait la visualisation des bords des lentilles paisses en cours de construction; ajout de nombreux exemples rangs par catgories.

- Version 1.02: rajoute la possibilit de translater l'objet "mesure de distance", et l'interface subit des amliorations cosmtiques mineures.

- Version 1.01: corrige quelques bugs dans les boutons de l'interface, et amliore un peu l'ergonomie du logiciel.


Compatibilit des fichiers de simulation (.opt)

- Les dernires versions de Optgeo utilisent l'encodage en UTF8. Il se peut que de vieux fichiers .doz encods en ANSI ne puissent tre relus par Optgeo.

- Solution dans ce cas: ouvrir le fichier .doz avec Notepad++, convertir en "UTF8 sans BOM", sauver; le fichier devrait ensuite tre lisible.


Dsinstallation des versions Windows

Versions postrieures la 1.10  La dsinstallation par Ajout/Suppression de programmes ne supprime pas le rpertoire d'installation d'OptGeo; si on installe une nouvelle version dans le mme rpertoire, la configuration d'OptGeo sera conserve. Si on veut repartir de zro, supprimer le rpertoire d'installation.

Versions antrieures la 1.04Suite un bug d'InstallShield, les versions antrieures la 1.04 ne peuvent pas tre dsinstalles en passant par Panneau de configuration, Ajout/Suppression de programmes. Pour dsinstaller ces versions, procder de la faon suivante:
- supprimer le rpertoire d'installation d'OptGeo (en gnral: c:\Program Files\OptGeo, vrifier); attention si vous y avez sauvegard des fichiers .opt, mettez les ailleurs avant !
- supprimer le raccourci dans le menu Dmarrer: pour cela, aller dans le menu Dmarrer, OptGeo, clic droit, Supprimer.

Le problme ne se pose plus partir de la 1.04.


Installation rseau (modifi le 21/09/2004)

Si vous tes en rseau, avec un serveur, il est inutile de faire l'install sur tous les postes. Faites l'install partir d'une station, sur un lecteur rseau mapp sur un rpertoire du serveur (exemple: acadmie de Toulouse, rseau d'tablissement sous Magret, faire l'install dans j:\optgeo o j: est associ Winappli du serveur).Lancer un premire fois Optgeo; il demande le rpertoire des exemples: on peut laisser celui propos (j:\optgeo\exemples), ce qui vitera que les lves les modifient; il demande aussi un rpertoire de configuration personnelle, qui doit tre accessible en lecture, et un rpertoire de simulation personnelles: lui mettre par exemple p:\travail\monoptgeo.

Il suffit ensuite d'avoir sur chaque station un raccourci vers le optgeo.exe (avec Magret, mettre le raccourci dans le modle souhait).



 
 
  optgeo-2.21/saisiesphere.lfm0000750000175000017500000001634112247333133016321 0ustar georgeskgeorgeskobject saisiesph: Tsaisiesph Left = 110 Height = 436 Top = 111 Width = 647 BorderIcons = [] BorderStyle = bsDialog Caption = 'Propriétés de cette sphère' ClientHeight = 436 ClientWidth = 647 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object radiosortant: TRadioGroup Left = 8 Height = 97 Top = 304 Width = 296 AutoFill = True Caption = 'Rayon réfléchi (sens sortant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 79 ClientWidth = 292 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 0 end object radioentrant: TRadioGroup Left = 8 Height = 97 Top = 200 Width = 296 AutoFill = True Caption = 'Rayon réfléchi (sens entrant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 79 ClientWidth = 292 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 1 end object GroupBox2: TGroupBox Left = 211 Height = 192 Top = 0 Width = 305 Caption = 'Indice de réfraction du milieu' ClientHeight = 174 ClientWidth = 301 TabOrder = 2 object StaticText2: TLabel Left = 8 Height = 14 Top = 24 Width = 69 Caption = 'Pour le rouge:' ParentColor = False end object StaticText3: TLabel Left = 8 Height = 14 Top = 56 Width = 61 Caption = 'Pour le vert:' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 88 Width = 61 Caption = 'Pour le bleu:' ParentColor = False end object StaticText7: TLabel Left = 16 Height = 14 Top = 128 Width = 47 Caption = 'Matériau:' ParentColor = False end object editnrouge: TEdit Left = 80 Height = 21 Top = 24 Width = 49 TabOrder = 3 Text = '1,5' end object editnvert: TEdit Left = 80 Height = 21 Top = 56 Width = 49 TabOrder = 0 Text = '1,6' end object editnbleu: TEdit Left = 80 Height = 21 Top = 88 Width = 49 TabOrder = 1 Text = '1,7' end object combomateriaux: TComboBox Left = 72 Height = 21 Top = 120 Width = 185 ItemHeight = 13 OnChange = combomateriauxChange Style = csDropDownList TabOrder = 2 end end object GroupBox3: TGroupBox Left = 8 Height = 97 Top = 0 Width = 161 Caption = 'Coordonnées du centre' ClientHeight = 79 ClientWidth = 157 TabOrder = 3 object StaticText5: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editx: TEdit Left = 22 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity: TEdit Left = 24 Height = 21 Top = 49 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 408 Width = 505 Caption = 'Supprimer cette sphère' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 4 end object GroupBox1: TGroupBox Left = 8 Height = 65 Top = 120 Width = 161 Caption = 'Rayon de courbure' ClientHeight = 47 ClientWidth = 157 TabOrder = 5 object StaticText1: TLabel Left = 16 Height = 14 Top = 24 Width = 16 Caption = 'R=' ParentColor = False end object log3: TLabel Left = 112 Height = 14 Top = 24 Width = 21 Caption = 'log3' ParentColor = False end object editrayon: TEdit Left = 38 Height = 21 Top = 16 Width = 57 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 312 Height = 137 Top = 200 Width = 209 Caption = 'Couleur à l''écran' ClientHeight = 119 ClientWidth = 205 TabOrder = 6 object Colorgrid1: TColorBox Left = 30 Height = 22 Top = 34 Width = 133 ItemHeight = 16 TabOrder = 0 end end object BitBtn2: TBitBtn Left = 312 Height = 54 Top = 343 Width = 204 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 7 end object BitBtn1: TBitBtn Left = 528 Height = 425 Top = 8 Width = 111 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 8 end end optgeo-2.21/saisieop1.lfm0000750000175000017500000005560512247333133015540 0ustar georgeskgeorgeskobject saisieop: Tsaisieop Left = 551 Height = 636 Top = 155 Width = 696 BorderIcons = [] BorderStyle = bsDialog Caption = 'Saisie d''une onde plane' ClientHeight = 636 ClientWidth = 696 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF0FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFF0FFFFFFFFFFF0000000000000000000000000000000000000000000 0000000000000000000000000000000F0000FFFFFFFFFFFFF0FFFFFFFFFFF000 0000000000000000000000000000000000000000000000000000000000000000 000000000000FFFFFFFFFFF0F0FFFFFFFFFFF000000000000000000000000000 0000000000000000000000000000000000000000000000000000FFFFFFFFFFFF 00FFFFFFFFFFF000000000000000000000000000000000000000000000000000 0000000000000000000000000000FFFFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFF FFFFFF000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF0FFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFFF0FFF0FFFFF0000FFFFFFFFFFFFFFFFFFFFFFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F FF0FFFFF0000FFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF0FFFFF0000FFFFFFFFFFFF FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF0FFF0FFFFF0000FFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF0FFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFF0000FFFFFFFFFFFFFFFFFFFF FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000FFFFFFFFFFFF FFFF000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000FFFFFFFFFFFFFFFF0F000000000000000000 000000000000000000000000000000000000000000000000000000000000000F 0000FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFF0FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0000FFFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000F0FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFF0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFF000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000FFFF0FFFF000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000FFFF0FFFF00000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000F0FF0FFFFFF000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000F0000FF00 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 105 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 87 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 63 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 440 Height = 105 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 87 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log5: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log5' ParentColor = False end object log6: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log6' ParentColor = False end object editx2: TEdit Left = 23 Height = 21 Top = 17 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 57 Width = 97 TabOrder = 1 end end object radiocouleur: TRadioGroup Left = 8 Height = 121 Top = 112 Width = 129 AutoFill = True Caption = 'Couleur des rayons' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 103 ClientWidth = 125 ItemIndex = 0 Items.Strings = ( 'Rouge' 'Vert' 'Bleu' 'Lumière blanche' ) TabOrder = 2 end object GroupBox3: TGroupBox Left = 144 Height = 57 Top = 112 Width = 121 Caption = 'Epaisseur à l''écran' ClientHeight = 39 ClientWidth = 117 TabOrder = 3 object editepaisseur: TSpinEdit Left = 38 Height = 21 Top = 8 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 8 Height = 105 Top = 376 Width = 673 Caption = 'Tracer en pointillé le prolongement des différents segments des rayons' ClientHeight = 87 ClientWidth = 669 TabOrder = 4 object StaticText8: TLabel Left = 8 Height = 14 Top = 24 Width = 61 Caption = 'Vers l''avant:' ParentColor = False end object StaticText9: TLabel Left = 8 Height = 14 Top = 56 Width = 65 Caption = 'Vers l''arrière:' ParentColor = False end object StaticText10: TLabel Left = 408 Height = 14 Top = 16 Width = 144 Caption = 'Liste des segments concernés' ParentColor = False end object StaticText11: TLabel Left = 408 Height = 14 Top = 40 Width = 227 Caption = '(entre parenthéses et séparés par des virgules' ParentColor = False end object StaticText12: TLabel Left = 408 Height = 14 Top = 64 Width = 176 Caption = 'et sans espaces); exemple: (1,4,10)' ParentColor = False end object editvav: TEdit Left = 80 Height = 21 Top = 24 Width = 313 TabOrder = 0 end object editvaa: TEdit Left = 80 Height = 21 Top = 56 Width = 313 TabOrder = 1 end end object GroupBox5: TGroupBox Left = 272 Height = 105 Top = 0 Width = 161 Caption = 'Extrémité rayon 1 (point D)' ClientHeight = 87 ClientWidth = 157 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editsx: TEdit Left = 24 Height = 21 Top = 17 Width = 97 TabOrder = 0 end object editsy: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object GroupBox6: TGroupBox Left = 144 Height = 57 Top = 176 Width = 121 Caption = 'Nombre de rayons' ClientHeight = 39 ClientWidth = 117 TabOrder = 6 object spinnombrerayons: TSpinEdit Left = 22 Height = 21 Top = 8 Width = 57 MaxValue = 500 MinValue = 2 TabOrder = 0 Value = 5 end end object boutonsup: TBitBtn Left = 264 Height = 33 Top = 336 Width = 417 Caption = 'Supprimer cette onde plane' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 7 end object GroupBox7: TGroupBox Left = 8 Height = 64 Top = 240 Width = 249 Caption = 'Pour chaque rayon, rayons enfants:' ClientHeight = 46 ClientWidth = 245 TabOrder = 8 object StaticText7: TLabel Left = 8 Height = 14 Top = 16 Width = 83 Caption = 'Nombre maximal:' ParentColor = False end object Spinmaxenfant: TSpinEdit Left = 104 Height = 21 Top = 16 Width = 49 MaxValue = 50 TabOrder = 0 Value = 10 end end object GroupBox8: TGroupBox Left = 8 Height = 145 Top = 488 Width = 673 Caption = 'Tracer des surfaces d''onde issues de cette onde plane' ClientHeight = 127 ClientWidth = 669 TabOrder = 9 object StaticText14: TLabel Left = 96 Height = 14 Top = 16 Width = 472 Caption = 'Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces' ParentColor = False end object StaticText13: TLabel Left = 96 Height = 14 Top = 32 Width = 489 Caption = 'd''onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)' ParentColor = False end object StaticText15: TLabel Left = 96 Height = 14 Top = 48 Width = 119 Caption = '(exemple: 120 145 276)' ParentColor = False end object StaticText16: TLabel Left = 104 Height = 14 Top = 88 Width = 547 Caption = 'Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces' Font.Color = clRed ParentColor = False ParentFont = False end object StaticText17: TLabel Left = 240 Height = 14 Top = 104 Width = 156 Caption = 'ne peut être et ne sera pas fait.' Font.Color = clRed ParentColor = False ParentFont = False end object editlistechemins: TEdit Left = 104 Height = 21 Top = 64 Width = 537 TabOrder = 0 end object cochesurfaces: TCheckBox Left = 8 Height = 17 Top = 24 Width = 51 Caption = 'Tracer' TabOrder = 1 end end object BitBtn2: TBitBtn Left = 608 Height = 94 Top = 9 Width = 74 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 10 end object BitBtn1: TBitBtn Left = 272 Height = 217 Top = 111 Width = 407 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 11 end object GroupBox9: TGroupBox Left = 9 Height = 59 Top = 311 Width = 248 Caption = 'Nombre max. de segments par rayon' ClientHeight = 41 ClientWidth = 244 TabOrder = 12 object StaticText18: TLabel Left = 8 Height = 14 Top = 9 Width = 83 Caption = 'Nombre maximal:' ParentColor = False end object Spinmaxsegment: TSpinEdit Left = 110 Height = 21 Top = 6 Width = 63 MaxValue = 500 MinValue = 1 TabOrder = 0 Value = 500 end end end optgeo-2.21/unit19.pas0000750000175000017500000000452712247333133014776 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit19; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin, LResources,UnitScaleFont,UChaines; type { Tsaisieempennage } Tsaisieempennage = class(TForm) BitBtn1: TBitBtn; spinposition: TSpinEdit; Label2: TLabel; Label1: TLabel; Label3: TLabel; SpinEdit1: TSpinEdit; Label4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisieempennage: Tsaisieempennage; implementation { Tsaisieempennage } procedure Tsaisieempennage.BitBtn1Click(Sender: TObject); begin end; procedure Tsaisieempennage.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; CAPTION :=rsPropriTSDeLE; LABEL1.CAPTION :=rsEn1000MeDeLa; LABEL2.CAPTION :=rsPositionDeLE; LABEL3.CAPTION :=rsTailleDeLEmp; LABEL4.CAPTION :=rsEn1000MeDeLa2; end; procedure Tsaisieempennage.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit19.lrs} end. optgeo-2.21/saisieray.pas0000750000175000017500000001552312247333133015634 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisieray; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,unit222, Buttons, Spin, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisierayon } Tsaisierayon = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox6: TGroupBox; Image1: TImage; GroupBox1: TGroupBox; Spinmaxsegment: TSpinEdit; StaticText1: TLabel; StaticText11: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; radiocouleur: TRadioGroup; GroupBox3: TGroupBox; editepaisseur: TSpinEdit; GroupBox4: TGroupBox; boutonsup: TBitBtn; GroupBox5: TGroupBox; Spinenfantmax: TSpinEdit; StaticText5: TLabel; StaticText6: TLabel; StaticText7: TLabel; StaticText8: TLabel; editvav: TEdit; editvaa: TEdit; StaticText9: TLabel; StaticText10: TLabel; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisierayon: Tsaisierayon; ra_couleur:tcolor; ra_epaisseur,ra_enfantmax,ra_maxsegment:integer; ra_x1,ra_x2,ra_y1,ra_y2:extended; ra_virtuelavant,ra_virtuelarriere:boolean; implementation procedure Tsaisierayon.BitBtn1Click(Sender: TObject); begin ra_epaisseur:=editepaisseur.value; case radiocouleur.ItemIndex of 0: ra_couleur:=clred; 1: ra_couleur:=clgreen; 2: ra_couleur:=clblue; 3: ra_couleur:=clblack; end; ra_enfantmax:=spinenfantmax.value; ra_maxsegment:=spinmaxsegment.value; try ra_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; if ((ra_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try ra_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((ra_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try ra_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try ra_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; ReTaillePrayon(Listerayon,nombrerayon,nombrerayon+1); inc(nombrerayon); if not (ListeRayon[-1+nombrerayon].create(ra_x1,ra_y1,ra_x2-ra_x1,ra_y2-ra_y1, ra_couleur,ra_epaisseur,editvav.Text,editvaa.Text,ra_enfantmax,ra_maxsegment)) then begin ReTaillePrayon(Listerayon,nombrerayon,nombrerayon-1); dec(nombrerayon); application.messagebox(pchar(rsLesDeuxPoint), pchar(rsattention),mb_ok); end else self.modalresult:=mrok; Rafraichit; end; procedure Tsaisierayon.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIERAYON.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIERAYON.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeR; CAPTION :=rsSaisieDUnRay; GROUPBOX1.CAPTION :=rsOriginePoint; GROUPBOX2.CAPTION :=rsExtrMitPoint; GROUPBOX3.CAPTION // msgctxt ';TSAISIERAYON.GROUPBOX3.CAPTION'; :=rsEpaisseurLCr2; GROUPBOX4.CAPTION :=rsTracerEnPoin2; GROUPBOX5.CAPTION :=rsRayonsEnfant; GROUPBOX6.CAPTION :=rsNombreMaxDeS2; LOG1.CAPTION // msgctxt ';TSAISIERAYON.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIERAYON.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIERAYON.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIERAYON.LOG4.CAPTION'; :=rsLog4; RADIOCOULEUR.CAPTION :=rsCouleurDuRay; STATICTEXT1.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT10.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT10.CAPTION'; :=rsVersLArriRe2; STATICTEXT11.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT11.CAPTION'; :=rsNombreMaxima35; STATICTEXT2.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT4.CAPTION'; :=rsY; STATICTEXT5.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT5.CAPTION'; :=rsNombreMaxima35; STATICTEXT6.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT6.CAPTION'; :=rsListeDesSegm; STATICTEXT7.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT7.CAPTION'; :=rsEntreParenth; STATICTEXT8.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT8.CAPTION'; :=rsEtSansEspace; STATICTEXT9.CAPTION // msgctxt ';TSAISIERAYON.STATICTEXT9.CAPTION'; :=rsVersLAvant2; radiocouleur.Items[0]:=rsRouge; radiocouleur.Items[1]:=rsVert; radiocouleur.Items[2]:=rsBleu; radiocouleur.Items[3]:=rsLumiReBlanch; end; procedure Tsaisierayon.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisieray.lrs} end. optgeo-2.21/unit222.pas0000750000175000017500000553136312247333133015062 0ustar georgeskgeorgeskunit unit222; {$mode objfpc}{$H+} interface uses {$ifdef windows}Windows,{$endif} Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,ExtCtrls, Buttons,printers, unit_quelobjet, ComCtrls,clipbrd,Unit5,Unit9, PrintersDlgs,MonBitmap,MonImprimante,LResources,LCLType,Math,LCLIntf, Unit1_palette,UChaines,MonPostscript,MonPostScriptCanvas,Definitions; const crDebut=10; crFin=11; crPoint1=12; crPoint2=13; crFoyer=14; crCentre=15; crSource=16; crDirection=17; crviseur=18; crdeplacement=19; crtranslation=20; crinfo=21; crrotation=22; crprop=23; crdepcentre=24; crdepfoyer=25; crsuivant=26; crdupliquer=27; crsommet=28; crtexte=29; crtaille=30; crsommet1=31; crsommet2=32; crcentre1=33; crcentre2=34; crancre=35; crdepsommet=36; crmarteau=37; crgroupe=40; crdepla=38; crcentreg=41; maxmiroirplan=500; maxMscopa=500; maxMscepa=500; maxreseau=500; maxrayon=500; maxlmc=500; maxlmd=500; maxmscore=500; maxmscere=500; maxecran=500; maxlsr=500; maxpolyhedre=500; maxprisme=500; maxpolycercle=500; maxfleche=500; maxmaxsegment=500; {nombre maximal de segments pour un rayon} maxrayonsparsourceponctuelle=500; maxsourceponctuelle=500; maxrayonsparondeplane=500; maxondeplane=500; maxsphere=500; maxmiroirconique=500; maxmetre=500; maxtexte=500; maxdiaphragme=500; maxlec=500; maxled=500; maxangle=500; maxtotalsegment=10000; maxsurfacesondeparsource=500; maxoeil=500; maxelementsgroupe=100; maxgroupe=500; type arraytpoint=array[1..maxsommet+1] of tpoint; parraytpoint=^arraytpoint; TTypePoint=(tpcroixx,tpcroixp,tpdisque,tpcercle); ttypepointrot=(tpa1,tpa2,tpce,tpfo,tpf1,tpf2,tpa0,tpap1,tpap2,tpso); ttypeprismerot=(tpa,tpb,tpc); ttypeinterieur=(Iinterieur,Iexterieur,Ibord); TreflechiPolyhedre=(JamaisReflechi,ToujoursReflechi,ReflechiSiRefracte, ReflechiSiPasRefracte); TSurface=(sur_bordure,sur_miroirplan,sur_mscopa,sur_mscepa,sur_lmc, sur_lmd,sur_mscore,sur_mscere,sur_ecran,sur_lsr,sur_polyhedre, sur_sphere,sur_miroirconique,sur_diaphragme,sur_lec,sur_polycercle,sur_oeil,sur_prisme,sur_reseau); TTypeElementModif=(mdMiroirPlan,mdMscopa,mdMscepa,mdMscore,mdMscere, mdLmc,mdLmd,mdRayon,mdSourcePonctuelle,mdOndePlane,mdecran,mdlsr,mdpolyhedre, mdsphere,mdmiroirconique,mdtexteaffiche,mddiaphragme,mdlec,mdmetre,mdangle, mdpolycercle,mdfleche,mdoeil,mdneant,mdgroupe,mdprisme,mdreseau); textremite=(trien,tffleche,ttrait,trond,tcroix,tcroixx,tdisque); ElementGroupe=object typeelementgroupe:TTypeElementModif; indiceelement:integer; end; Groupe=object ListeElements:array[1..maxelementsgroupe] of elementgroupe; nombreelements:integer; isox,isoy:extended; procedure create; procedure recalculeiso; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); procedure translate(dx,dy:extended); function add(typeel:TTypeElementModif; indice:integer):boolean; end; PGroupe=array of groupe; Oeil=object cx,cy,ax,ay,c2x,c2y,c1x,c1y,bx,by,anglepolaire,rayoncourbure:extended; couleur:tcolor; epaisseur:integer; function create(_cx,_cy,_ax,_ay:extended; _epaisseur:integer;_couleur:tcolor):boolean; function create2(_cx,_cy,_anglepolaire,_rayoncourbure:extended; _epaisseur:integer;_couleur:tcolor):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; POeil=array of Oeil; Diaphragme=object cx,cy,a1x,a1y,a2x,a2y,ap1x,ap1y,ap2x,ap2y,rint,rext,anglepolaire:extended; couleur:tcolor; epaisseur:integer; function create(_cx,_cy,_a1x,_a1y,_a2x,_a2y:extended; _couleur:tcolor; _epaisseur:integer):boolean; function create2(_cx,_cy,_anglepolaire,_rint,_rext:extended; _couleur:tcolor; _epaisseur:integer):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PDiaphragme=array of diaphragme; TexteAffiche=object policename:shortstring; policecharset:integer; policecolor:tcolor; policesize:integer; policepitch:tfontpitch; texteluimeme:shortstring; policefsbold,policefsitalic,policefsunderline,policefsstrikeout:boolean; x,y:extended; function create(_texteluimeme:shortstring; _policename:shortstring; _policecharset:integer; _policecolor:tcolor; _policesize:integer; _policepitch:tfontpitch;_policefsbold,_policefsitalic,_policefsunderline, _policefsstrikeout:boolean;_x,_y:extended):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PTexteAffiche= array of texteaffiche; MiroirPlan=object a1x,a1y,a2x,a2y,cx,cy:extended; anglepolaire:extended; epaisseur:integer; couleur:tcolor; hachures:boolean; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor; _hachures:boolean):boolean; procedure dessine(var mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PMiroirPlan = array of MiroirPlan; Reseau=object a1x,a1y,a2x,a2y,cx,cy:extended; anglepolaire:extended; epaisseur:integer; couleur:tcolor; pas,nombre_trait_par_mm:extended; ordre_min,ordre_max:integer; entransmission:boolean; hachures:boolean; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor; _pas:extended; _entransmission,_hachures:boolean; _ordre_min,_ordre_max:integer):boolean; procedure dessine(var mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PReseau = array of Reseau; Fleche=object a1x,a1y,a2x,a2y,cx,cy:extended; anglepolaire:extended; epaisseur:integer; couleur:tcolor; ext1,ext2:textremite; taille1,taille2:integer; styletrait:tpenstyle; function create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor; _ext1,_ext2:textremite; _styletrait:tpenstyle; _taille1,_taille2:integer):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PFleche = array of Fleche; MiroirConique=object a1x,a1y,a2x,a2y,fx,fy,sx,sy,excentricite,parametre,theta0,theta1,theta2:extended; concave:boolean; couleur,couleuraxe:tcolor; hachures,axefocal:boolean; function create(_fx,_fy,_sx,_sy,_a1x,_a1y,_a2x,_a2y:extended; _concave:boolean; _couleur,_couleuraxe:tcolor; _hachures,_axefocal:boolean):boolean; function create2(_fx,_fy,_theta0,_theta1,_theta2,_excentricite,_parametre:extended; _concave:boolean; _couleur,_couleuraxe:tcolor; _hachures,_axefocal:boolean):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PMiroirConique=array of MiroirConique; Ecran=object a1x,a1y,a2x,a2y,cx,cy:extended; anglepolaire:extended; epaisseur:integer; couleur:tcolor; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PEcran = array of Ecran; lsr=object a1x,a1y,a2x,a2y,cx,cy:extended; anglepolaire:extended; epaisseur:integer; couleur:tcolor; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; Plsr = array of lsr; Angle=object cx,cy,a1x,a1y,a2x,a2y,dx,dy:extended; function create(_cx,_cy,_a1x,_a1y,_a2x,_a2y:extended):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure dessinebis(mc:tmonbitmap); procedure dessinebisPS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); procedure imprimebis(mc:tmyimprimante); end; PAngle=array of angle; Metre=object a1x,a2x,a1y,a2y,cx,cy:extended; function create(_a1x,_a1y,_a2x,_a2y:extended):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PMetre= array of metre; Mscopa=object a1x,a1y,a2x,a2y,fx,fy,sx,sy,cx,cy,t1x,t1y,t2x,t2y:extended; anglepolaire:extended; focale:extended; epaisseur:integer; trou:boolean; diametretrou:extended; couleur,couleuraxe:tcolor; hachures,axefocal:boolean; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; function create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PMscopa= array of Mscopa; Mscore=object a1x,a1y,a2x,a2y,sx,sy,cx,cy:extended; theta1,theta2,rayoncourbure,circonference:extended; theta1p,theta2p:extended; trou:boolean; diametretrou:extended; epaisseur:integer; couleur,couleuraxe:tcolor; hachures,axefocal,aigu:boolean; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y,_cx,_cy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; function create2(_a1x,_a1y,_a2x,_a2y,_rayon:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_aigu,_trou:boolean; _diametretrou:extended):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PMscore= array of Mscore; Mscere=object a1x,a1y,a2x,a2y,sx,sy,cx,cy:extended; theta1,theta2,rayoncourbure,circonference:extended; theta1p,theta2p:extended; trou:boolean; diametretrou:extended; epaisseur:integer; couleur,couleuraxe:tcolor; hachures,axefocal,aigu:boolean; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y,_cx,_cy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; function create2(_a1x,_a1y,_a2x,_a2y,_rayon:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_aigu,_trou:boolean; _diametretrou:extended):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PMscere= array of Mscere; Mscepa=object a1x,a1y,a2x,a2y,fx,fy,sx,sy,cx,cy,t1x,t1y,t2x,t2y:extended; anglepolaire:extended; focale:extended; epaisseur:integer; couleur,couleuraxe:tcolor; hachures,axefocal:boolean; trou:boolean; diametretrou:extended; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; function create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PMscepa= array of Mscepa; lmc=object a1x,a1y,a2x,a2y,f1x,f1y,f2x,f2y,ox,oy:extended; anglepolaire:extended; focale:extended; epaisseur:integer; couleur,couleuraxe:tcolor; axefocal:boolean; normalex:extended; normaley:extended; taille:extended; rayonmonture:extended; function create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; function create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PLmc= array of Lmc; lec=object a1x,a1y,a2x,a2y,b1x,b1y,b2x,b2y, s1x,s1y,s2x,s2y,ox,oy,c1x,c1y,c2x,c2y,r1,r2,apaf:extended; MesSommets: TableauPointPolyhedre; MesCentres: TableauPointPolyhedre; rectiligne,rentrant,trig:tableaurectiligne; theta1,theta2:sommetsreels; couleurfond,couleuraxe:tcolor; axefocal,tronque,mince:boolean; diametremax,diametre:extended; theta1_1,theta2_1,theta1_2,theta2_2:extended; indicerouge,indicebleu,indicevert:extended; ReflechiEntrant,ReflechiSortant:TReflechiPolyhedre; function estou(x,y:extended):ttypeinterieur; function dispersif:boolean; function create(_s1x,_s1y,_s2x,_s2y,_r1,_r2,_diametre:extended; _couleurfond,_couleuraxe:tcolor; _axefocal:boolean; _indicerouge,_indicebleu,_indicevert:extended; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PLec= array of lec; lmd=object a1x,a1y,a2x,a2y,f1x,f1y,f2x,f2y,ox,oy:extended; anglepolaire:extended; focale:extended; epaisseur:integer; couleur,couleuraxe:tcolor; axefocal:boolean; normalex:extended; normaley:extended; taille:extended; function create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; function create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure imprime(mc:tmyimprimante); end; PLmd=array of Lmd; Rayon=object ax,ay,bx,by:extended; liste_vav,liste_vaa:array[1..maxmaxsegment] of boolean; vav,vaa:shortstring; maxsegment:integer; kx,ky:extended; cx,cy:extended; anglepolaire:extended; nombresegment:integer; nombremaxenfant:integer; couleur:tcolor; epaisseur:integer; function create (_ax,_ay,_kx,_ky:extended; _couleur:tcolor; _epaisseur:integer; _vav,_vaa:shortstring;_nombremaxenfant,_maxsegment:integer):boolean; function createenfant (_ax,_ay,_kx,_ky:extended; _couleur:tcolor; _epaisseur:integer; _vav,_vaa:shortstring; _nombremaxenfant,_maxsegment,indicesegment:integer):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure dessinebis(mc:tmonbitmap;extreme:boolean); procedure dessinebisPS(mc:TMonPostScript;extreme:boolean); procedure imprime(mc:tmyimprimante); procedure imprimebis(mc:tmyimprimante;extreme:boolean); end; PRayon= array of Rayon; Segment=object a1x,a1y,a2x,a2y,ap:extended; epaisseur:integer; couleur:tcolor; virtuelavant,virtuelarriere:boolean; procedure create(_a1x,_a1y,_a2x,_a2y,_ap:extended; _epaisseur:integer; _couleur:tcolor; _virtuelavant,_virtuelarriere:boolean); end; PSegment=array of segment; SourcePonctuelle=object ray:array[1..maxrayonsparsourceponctuelle] of rayon; vav,vaa,listechemins:shortstring; listecheminsoptiques:array[1..maxsurfacesondeparsource] of extended; nombrecheminsoptiques:integer; nombrederayon,epaisseur:integer; maxenfantparrayon,maxsegment:integer; sourcevirtuelle,tracersurfacesonde:boolean; couleur:tcolor; sx,sy,a1x,a1y,a2x,a2y,gx,gy:extended; function create(_nombrederayon:integer; _sx,_sy,_a1x,_a1y,_a2x,_a2y:extended; _couleur:tcolor; _epaisseur:integer; _vav,_vaa:shortstring; _maxenfantparrayon:integer; _sourcevirtuelle,_tracersurfacesonde:boolean; _listechemins:shortstring;_maxsegment:integer):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure calculesegment; procedure imprime(mc:tmyimprimante); end; PSourcePonctuelle= array of SourcePonctuelle; OndePlane=object ray:array[1..maxrayonsparondeplane] of rayon; nombrederayon:integer; maxenfantparrayon,maxsegment:integer; vav,vaa,listechemins:shortstring; listecheminsoptiques:array[1..maxsurfacesondeparsource] of extended; nombrecheminsoptiques:integer; couleur:tcolor; epaisseur:integer; tracersurfacesonde:boolean; sx,sy,a1x,a1y,a2x,a2y,gx,gy:extended; function create(_nombrederayon:integer; _sx,_sy,_a1x,_a1y,_a2x,_a2y:extended; _couleur:tcolor; _epaisseur:integer; _vav,_vaa:shortstring; _maxenfantparrayon:integer;_tracersurfacesonde:boolean; _listechemins:shortstring;_maxsegment:integer):boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); procedure calculesegment; procedure imprime(mc:tmyimprimante); end; POndePlane=array of OndePlane; Polyhedre=object nombresommet:integer; xiso,yiso:extended; MesSommets: TableauPointPolyhedre; indicerouge,indicebleu,indicevert:extended; ReflechiEntrant,ReflechiSortant:TReflechiPolyhedre; anglepolaire,nx,ny:array[1..maxsommet+1] of extended; trigodirect:boolean; couleurbord,couleurfond:tcolor; function dispersif:boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); function create(_nombresommet:integer; _MesSommets: TableauPointPolyhedre; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; function estou(x,y:extended):ttypeinterieur; procedure imprime(mc:tmyimprimante); end; PPolyhedre=array of polyhedre; Prisme=object nombresommet:integer; xiso,yiso:extended; MesSommets: TableauPointPolyhedre; gx,gy,ax,ay,bx,by,cx,cy,hauteur,angle_sommet, angle_axe:extended; indicerouge,indicebleu,indicevert:extended; ReflechiEntrant,ReflechiSortant:TReflechiPolyhedre; anglepolaire,nx,ny:array[1..maxsommet+1] of extended; trigodirect:boolean; couleurbord,couleurfond:tcolor; function dispersif:boolean; procedure dessinePS(mc:TMonPostScript); procedure dessine(mc:tmonbitmap); function create(_gx,_gy,_ax,_ay,_3x,_3y:extended; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; function estou(x,y:extended):ttypeinterieur; procedure imprime(mc:tmyimprimante); end; PPrisme=array of prisme; Polycercle=object nombresommet:integer; xiso,yiso:extended; MesSommets,MesCentres,MesS: TableauPointPolyhedre; rectiligne,rentrant,listetrigodirect,aigu,agauche:tableaurectiligne; anglepolaire,nx,ny:sommetsreels; theta1,theta2,rayon,thetavrai1,thetavrai2,tpc1,tpc2:sommetsreels; indicerouge,indicebleu,indicevert:extended; ReflechiEntrant,ReflechiSortant:TReflechiPolyhedre; couleurbord,couleurfond:tcolor; trigodirect:boolean; function dispersif:boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); function create(_nombresommet:integer; _MesSommets,_MesS: TableauPointPolyhedre; _rectiligne:tableaurectiligne; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; {function create2(_nombresommet:integer; _MesSommets: TableauPointPolyhedre; _rayon:sommetsreels; _rectiligne,_rentrant,_aigu:tableaurectiligne; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre;_trigodirect:boolean):boolean;} function estou(x,y:extended):ttypeinterieur; procedure imprime(mc:tmyimprimante); end; PPolycercle=array of polycercle; Sphere=object cx,cy,rayon:extended; indicerouge,indicebleu,indicevert:extended; ReflechiEntrant,ReflechiSortant:TReflechiPolyhedre; couleurbord,couleurfond:tcolor; function create(_cx,_cy,_rayon:extended; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; function dispersif:boolean; procedure dessine(mc:tmonbitmap); procedure dessinePS(mc:TMonPostScript); function estou(x,y:extended):ttypeinterieur; procedure imprime(mc:tmyimprimante); end; PSphere=array of Sphere; pointerextended=^extended; procedure CreePsphere(var TheArray : Psphere; NumElements : longint); procedure FreePsphere(var TheArray : Psphere; NumElements : longint); procedure ReTaillePsphere(var TheArray :Psphere; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Psphere(var thearray:psphere; indice:longint; var nbelements:longint); procedure CreePfleche(var TheArray : Pfleche; NumElements : longint); procedure FreePfleche(var TheArray : Pfleche; NumElements : longint); procedure ReTaillePfleche(var TheArray :Pfleche; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pfleche(var thearray:pfleche; indice:longint; var nbelements:longint); procedure CreePmetre(var TheArray : Pmetre; NumElements : longint); procedure FreePmetre(var TheArray : Pmetre; NumElements : longint); procedure ReTaillePmetre(var TheArray :Pmetre; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pmetre(var thearray:pmetre; indice:longint; var nbelements:longint); procedure CreePangle(var TheArray : Pangle; NumElements : longint); procedure FreePangle(var TheArray : Pangle; NumElements : longint); procedure ReTaillePangle(var TheArray :Pangle; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pangle(var thearray:pangle; indice:longint; var nbelements:longint); procedure CreePMiroirplan(var TheArray : PMiroirPlan; NumElements : longint); procedure FreePMiroirPlan(var TheArray : PMiroirPlan; NumElements : longint); procedure ReTaillePMiroirPlan(var TheArray :PMiroirPlan; OldNumElements : longint; NewNumElements : longint); procedure Supprime1PMiroirplan(var thearray:pmiroirplan; indice:longint; var nbelements:longint); procedure CreePReseau(var TheArray : PReseau; NumElements : longint); procedure FreePReseau(var TheArray : PReseau; NumElements : longint); procedure ReTaillePReseau(var TheArray :PReseau; OldNumElements : longint; NewNumElements : longint); procedure Supprime1PReseau(var thearray:pReseau; indice:longint; var nbelements:longint); procedure CreePmiroirconique(var TheArray : Pmiroirconique; NumElements : longint); procedure FreePmiroirconique(var TheArray : Pmiroirconique; NumElements : longint); procedure ReTaillePmiroirconique(var TheArray :Pmiroirconique; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pmiroirconique(var thearray:pmiroirconique; indice:longint; var nbelements:longint); procedure CreePEcran(var TheArray : PEcran; NumElements : longint); procedure FreePEcran(var TheArray : PEcran; NumElements : longint); procedure ReTaillePEcran(var TheArray :PEcran; OldNumElements : longint; NewNumElements : longint); procedure Supprime1PEcran(var thearray:pEcran; indice:longint; var nbelements:longint); procedure CreePgroupe(var TheArray : Pgroupe; NumElements : longint); procedure FreePgroupe(var TheArray : Pgroupe; NumElements : longint); procedure ReTaillePgroupe(var TheArray :Pgroupe; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pgroupe(var thearray:pgroupe; indice:longint; var nbelements:longint); procedure CreePoeil(var TheArray : Poeil; NumElements : longint); procedure FreePoeil(var TheArray : Poeil; NumElements : longint); procedure ReTaillePoeil(var TheArray :Poeil; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Poeil(var thearray:poeil; indice:longint; var nbelements:longint); procedure CreePdiaphragme(var TheArray : Pdiaphragme; NumElements : longint); procedure FreePdiaphragme(var TheArray : Pdiaphragme; NumElements : longint); procedure ReTaillePdiaphragme(var TheArray :Pdiaphragme; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pdiaphragme(var thearray:pdiaphragme; indice:longint; var nbelements:longint); procedure CreePlsr(var TheArray : Plsr; NumElements : longint); procedure FreePlsr(var TheArray : Plsr; NumElements : longint); procedure ReTaillePlsr(var TheArray :Plsr; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Plsr(var thearray:plsr; indice:longint; var nbelements:longint); procedure CreePsegment(var TheArray : Psegment; NumElements : longint); procedure FreePsegment(var TheArray : Psegment; NumElements : longint); procedure ReTaillePsegment(var TheArray :Psegment; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Psegment(var thearray:psegment; indice:longint; var nbelements:longint); procedure CreePmscopa(var TheArray : Pmscopa; NumElements : longint); procedure FreePmscopa(var TheArray : Pmscopa; NumElements : longint); procedure ReTaillePmscopa(var TheArray :Pmscopa; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pmscopa(var thearray:pmscopa; indice:longint; var nbelements:longint); procedure CreePmscepa(var TheArray : Pmscepa; NumElements : longint); procedure FreePmscepa(var TheArray : Pmscepa; NumElements : longint); procedure ReTaillePmscepa(var TheArray :Pmscepa; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pmscepa(var thearray:pmscepa; indice:longint; var nbelements:longint); procedure CreePmscore(var TheArray : Pmscore; NumElements : longint); procedure FreePmscore(var TheArray : Pmscore; NumElements : longint); procedure ReTaillePmscore(var TheArray :Pmscore; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pmscore(var thearray:pmscore; indice:longint; var nbelements:longint); procedure CreePmscere(var TheArray : Pmscere; NumElements : longint); procedure FreePmscere(var TheArray : Pmscere; NumElements : longint); procedure ReTaillePmscere(var TheArray :Pmscere; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pmscere(var thearray:pmscere; indice:longint; var nbelements:longint); procedure CreePlmc(var TheArray : Plmc; NumElements : longint); procedure FreePlmc(var TheArray : Plmc; NumElements : longint); procedure ReTaillePlmc(var TheArray :Plmc; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Plmc(var thearray:plmc; indice:longint; var nbelements:longint); procedure CreePlec(var TheArray : Plec; NumElements : longint); procedure FreePlec(var TheArray : Plec; NumElements : longint); procedure ReTaillePlec(var TheArray :Plec; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Plec(var thearray:plec; indice:longint; var nbelements:longint); procedure CreePlmd(var TheArray : Plmd; NumElements : longint); procedure FreePlmd(var TheArray : Plmd; NumElements : longint); procedure ReTaillePlmd(var TheArray :Plmd; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Plmd(var thearray:plmd; indice:longint; var nbelements:longint); procedure CreePpolyhedre(var TheArray : Ppolyhedre; NumElements : longint); procedure FreePpolyhedre(var TheArray : Ppolyhedre; NumElements : longint); procedure ReTaillePpolyhedre(var TheArray :Ppolyhedre; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Ppolyhedre(var thearray:ppolyhedre; indice:longint; var nbelements:longint); procedure CreePprisme(var TheArray : Pprisme; NumElements : longint); procedure FreePprisme(var TheArray : Pprisme; NumElements : longint); procedure ReTaillePprisme(var TheArray :Pprisme; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pprisme(var thearray:pprisme; indice:longint; var nbelements:longint); procedure CreePpolycercle(var TheArray : Ppolycercle; NumElements : longint); procedure FreePpolycercle(var TheArray : Ppolycercle; NumElements : longint); procedure ReTaillePpolycercle(var TheArray :Ppolycercle; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Ppolycercle(var thearray:ppolycercle; indice:longint; var nbelements:longint); procedure CreePrayon(var TheArray : Prayon; NumElements : longint); procedure FreePrayon(var TheArray : Prayon; NumElements : longint); procedure ReTaillePrayon(var TheArray :Prayon; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Prayon(var thearray:prayon; indice:longint; var nbelements:longint); procedure CreePsourceponctuelle(var TheArray : Psourceponctuelle; NumElements : longint); procedure FreePsourceponctuelle(var TheArray : Psourceponctuelle; NumElements : longint); procedure ReTaillePsourceponctuelle(var TheArray :Psourceponctuelle; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Psourceponctuelle(var thearray:psourceponctuelle; indice:longint; var nbelements:longint); procedure CreePtexteaffiche(var TheArray : Ptexteaffiche; NumElements : longint); procedure FreePtexteaffiche(var TheArray : Ptexteaffiche; NumElements : longint); procedure ReTaillePtexteaffiche(var TheArray :Ptexteaffiche; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Ptexteaffiche(var thearray:ptexteaffiche; indice:longint; var nbelements:longint); procedure CreePondeplane(var TheArray : Pondeplane; NumElements : longint); procedure FreePondeplane(var TheArray : Pondeplane; NumElements : longint); procedure ReTaillePondeplane(var TheArray :Pondeplane; OldNumElements : longint; NewNumElements : longint); procedure Supprime1Pondeplane(var thearray:pondeplane; indice:longint; var nbelements:longint); procedure DessineTousLesSegments(mc:tmonbitmap); procedure DessineTousLesSegmentsPS(mc:tmonpostscript); procedure ImprimeTousLesSegments(mc:tmyimprimante); procedure calculesegment0(ax,ay,kx,ky,anglepolaire:extended; epaisseur:integer; couleur:tcolor; vav,vaa:shortstring; nombremaxenfant,maxsegment:integer); function unmilieudispersif:boolean; var bomme_hauteur_image,bonne_largeur_image:integer; listemateriaux,listenrouge,listenbleu,listenvert:tstrings; policedefaut:tfont; unitelongueur:shortstring; ttpoly,ttsom,tts,ttc:tableaupointpolyhedre; youri,helena,tavarich:tableaurectiligne; nbactsommet,decimalesangles:integer; selene:sommetsreels; deb:textfile; genrevirtuel:boolean; graphepresent:boolean; tracergrille,attractiongrille:boolean; grillex,grilley,pourcentagenormale:extended; signaler,fantomespresents,optionsurfacesonde,commentaire_change:boolean; stylepoint:ttypepoint; listefantomes:shortstring; taillepoint,nbrecti,nbrectiact:integer; couleurpoint:tcolor; listerecti:array[1..maxsommet+1] of integer; cctheta1,cctheta2,tt_rayon:array[1..maxsommet+1] of extended; xxmin,xxmax,yymin,yymax:extended; tracesegment,point1fait,point2fait,point3fait,point4fait,foyerfait, sourcefaite,sommetfait,rectifait:boolean; point1x,point1y,pointrx,pointry,point2x,point2y,sourcex,sourcey, directionx,directiony,foyerx,foyery,point3x,point3y,point4x,point4y,interx1,interx2,intery1,intery2:extended; point1xi,point1yi,pointrxi,pointryi,point2xi,point2yi:integer; ajoutmiroirplan,ajoutreseau,ajoutrayon,ajoutMscopa,ajoutMscepa,ajoutlmc,ajoutlmd, ajoutmscore,ajoutmscere,ajoutsourceponctuelle,ajoutecran,ajoutlec, ajoutondeplane,modifencours,modemodif,modetranslation,moderotation, modeinfo,ajoutlsr,ajoutprisme,ajoutpoly,ajoutpolycercle,modeduplication,ajoutsphere,modedistance,modeangle, ajoutconiqueconcave,ajoutconiqueconvexe,ajouttexte,ajoutdiaphragme,modesuppression,ajoutfleche, ajoutoeil:boolean; couleurmiroirplan,couleurreseau,couleurrayon,couleurmscopa,couleuraxemscopa,couleurmscepa, couleuraxemscepa,couleurlmc,couleurlmd,couleuraxelmc,couleuraxelmd, couleuraxemscore,couleurmscore,couleuraxemscere,couleurmscere, couleursourceponctuelle,couleurondeplane,couleurpoignees,couleurfondsimulation, couleurecran,couleurlsr,couleursphere,couleurnormale,couleursuppression,couleurlec, couleurprisme,couleurpolyhedre,couleurpolycercle,couleurmiroirconique,couleurtexte,couleurdiaphragme, couleurfleche,couleuroeil,couleurangle,couleurmetre,couleuraxemiroirconique, couleuraxelec,couleurglobale,couleurglobaleaxe, couleurglobalerayon :tcolor; epaisseurmiroirplan,epaisseurreseau,epaisseurrayon,epaisseurmscopa,epaisseurmscepa, epaisseurlmc,epaisseurlmd,epaisseurmscere,epaisseurmscore, epaisseursourceponctuelle,epaisseurondeplane,epaisseurglobale, epaisseurecran,epaisseurlsr,epaisseursphere,epaisseurnormale, nombrepolycercle,maxrayonsrecherchesurfacesonde,epaisseurlec, epaisseurprisme,epaisseurpolyhedre,epaisseurpolycercle,epaisseurmiroirconique,taillefontetexte, epaisseurdiaphragme,epaisseurfleche,epaisseuroeil,epaisseurangle,epaisseurmetre:integer; ListeMiroirPlan:PMiroirPlan; ListeReseau:PReseau; ListeEcran:PEcran; ListeGroupe:pgroupe; ListeRayon,ListeRayonEnfant:PRayon; ListeLsr:PLsr; ListeSourcePonctuelle:PSourcePonctuelle; ListeOeil:POeil; ListeOndePlane:pondeplane; ListeMiroirConique:pMiroirConique; ListeMscopa:PMscopa; ListePrisme:PPrisme; ListePolyhedre:PPolyhedre; listepolycercle:ppolycercle; ListeMscore:PMscore; ListeTexteAffiche:PTexteAffiche; ListeMscere:PMscere; ListeDiaphragme:PDiaphragme; ListeMscepa:PMscepa; listelec:plec; listeangle, listeanglesatracer:pangle; ListeFleche:pfleche; ListeLmc:Plmc; ListeSphere:PSphere; ListeLmd:Plmd; ListeSegment,listenormale: psegment; listemetre:pmetre; NombreMiroirPlan,NombreReseau,NombreRayon,nombreMscopa,nombreMscepa,nombrelmc,nombrelmd, nombremscere,nombremscore,nombresourceponctuelle,nombreoeil, nombreondeplane,nombretotalsegment,nombreecran,nombrelsr,nombreenfant, nombreprisme,nombrepolyhedre,nombresphere,nombremetre,nombreangle,nombremiroirconique,nombretexte, nombrediaphragme,nombrelec,nombrenormale,nombreanglesatracer,nombrefleche, nombregroupe:longint; modifie,bloqueaxe:boolean; lastxr,lastyr:extended; largeurinitialeimage1,hauteurinitialeimage1:integer; zoomfactor:integer; axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,axefocal_anglepolaire, axefocal_normalex,axefocal_normaley,axefocal_ox,axefocal_oy, sommetx,sommety,co_theta0,co_rm,co_FS,co_thetaM,co_e,co_p,cheminactuelaobtenir:extended; typeelementmodif:Ttypeelementmodif; liste_typeelementmodif:array of Ttypeelementmodif; liste_indiceelementmodif:array of integer; liste_modetranslation,liste_moderotation:array of boolean; liste_tprot:array of ttypepointrot; liste_boum:array of string; liste_tprirot:array of ttypeprismerot; liste_lastxr,liste_lastyr:array of extended; liste_bloqueaxe:array of boolean; indiceelementmodif,indicepointdeplace,nombre_typeelementmodif:integer; tprot:ttypepointrot; modegroupement:boolean; tprirot:ttypeprismerot; optionnormale,optionangles,montrernumerossegments,premierpointsurfacesonde:boolean; nomsauvegarde:string; longueur_donde_red,longueur_donde_blue,longueur_donde_green:extended; listeparametres:tstringlist; couleurtrans:tcolor; parametrelignecommande,toutjustefait:boolean; groupeprovisoire:groupe; tailleempennage,positionempennage:integer; lastx,lasty,lastxf,lastyf:longint; repertoireexecutable,nomexecutable,nom_fichier_config_optgeo, nom_fichier_config_perso,repertoire_simul_perso, repertoire_exemples,repertoire_config_perso,repertoire_actuel, repertoire_exemples_par_defaut,repertoire_simul_perso_par_defaut:string; indice_rouge_par_defaut,indice_vert_par_defaut,indice_bleu_par_defaut:extended; fantomes:array[1..maxtotalsegment] of boolean; EnvVars:tstringlist;{liste des variables d'environnement} Ivarenv:integer; langue_linux:string; function partieentiere(x:extended):extended; function puissance(x,exposant:extended):extended; function maximum(a,b:extended):extended; function minimum(a,b:extended):extended; procedure affichecoordonnees(xx,yy:extended); procedure Traitegroupement(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TraiteModif(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Traitesuppression(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure effectuesuppression(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure effectuegroupement(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FinModif(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure DebutModif(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Info(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Rafraichit; function DonneAnglePolaireDansPiPi(x,y:extended):extended; function DonneAnglePolaireDans02Pi(x,y:extended):extended; function Le_point_est_il_sur_une_droite(x,y,ax,ay,bx,by:extended; var para:extended; tol:extended):boolean; function Les_deux_segments_se_coupent_ils(Ax,Ay,Bx,By,Cx,Cy,Dx,Dy:extended):boolean; function Le_segment_et_le_cercle_se_coupent_ils(Ax,Ay,Bx,By,Centrex,Centrey,Rayon,theta1,theta2:extended; var paraseg1,paracer1,paraseg2,paracer2:extended;tolerance:extended):integer; function les_deux_cercles_se_coupent_ils(x0,y0,x1,y1,r0,r1,theta0_1,theta0_2,theta1_1,theta1_2:extended; var para1,para2,para3,para4:extended):integer; implementation uses ray1,Unit3,Unit_imp,saisiemp, saisiemscopa, saisiemscepa, saisiemscore, saisiemscere, saisielmc, saisielmd, saisieray,saisiesp1,saisieop1, saisieec, saisielamesr, Unit6,Unit8, saisiesphere, saisiemconique, Unit10, saisiedia, Unit12, saisielec, Unit13, Unit14, Unit15, saisiecercle, saisiefle, saisief1, saisieoe,saisiepri,saisiereseau; function IsPointInPolygon(AX, AY: extended; poly:TableauPointPolyhedre; npoints:integer): Boolean; var xnew, ynew: extended; xold,yold: extended; x1,y1: extended; x2,y2: extended; i: Integer; inside: Integer = 0; begin Result := False; if (npoints < 3) then Exit; xold := poly[npoints].ax; yold := poly[npoints].ay; for i := 1 to npoints do begin xnew := poly[i].aX; ynew := Poly[i].aY; if (xnew > xold) then begin x1:=xold; x2:=xnew; y1:=yold; y2:=ynew; end else begin x1:=xnew; x2:=xold; y1:=ynew; y2:=yold; end; if (((xnew < AX) = (AX <= xold)) // edge "open" at left end and ((AY-y1)*(x2-x1) < (y2-y1)*(AX-x1))) then begin inside := not inside; end; xold:=xnew; yold:=ynew; end; Result := inside <> 0; end; function Le_point_est_il_sur_une_droite(x,y,ax,ay,bx,by:extended; var para:extended; tol:extended):boolean; var distance_a_la_droite:extended; angle_AB_AM:extended; begin para:=10; angle_AB_AM:=abs(donneanglepolairedans02pi(x-ax,y-ay)-donneanglepolairedans02pi(bx-ax,by-ay)); distance_a_la_droite:=sqrt(sqr(x-ax)+sqr(y-ay))*abs(sin(angle_AB_AM)); if distance_a_la_droite>tol*sqrt(sqr(bx-ax)+sqr(by-ay)) then begin result:=false; exit; end; result:=true; if bx<>ax then para:= (x-ax)/(bx-ax) else if by<>ay then para:= (y-ay)/(by-ay) else para:=10; end; function les_deux_cercles_se_coupent_ils(x0,y0,x1,y1,r0,r1,theta0_1,theta0_2,theta1_1,theta1_2:extended; var para1,para2,para3,para4:extended):integer; var N,A,B,C,delta,xx,yy,xx1,yy1,xx2,yy2,theta1,theta0:extended; nbe_sol:integer; begin para1:=10; para2:=10; para3:=10; para4:=10; if y0<>y1 then begin N:=(sqr(r1)-sqr(r0)-sqr(x1)+sqr(x0)-sqr(y1)+sqr(y0))/2/(y0-y1); A:=sqr((x0-x1)/(y0-y1))+1; B:=2*y0*(x0-x1)/(y0-y1)-2*N*(x0-x1)/(y0-y1)-2*x0; C:=sqr(x0)+sqr(y0)+sqr(N)-sqr(r0)-2*y0*N; delta:=sqr(B)-4*A*C; if delta<0 then begin result:=0; exit; end; if delta=0 then begin xx:=-B/2/A; yy:=N-xx*(x0-x1)/(y0-y1); theta0:=donneanglepolairedans02pi(xx-x0,yy-y0); if (theta0>=theta0_1) and (theta0<=theta0_2) then para1:=(theta0-theta0_1)/(theta0_2-theta0_1); if (theta0-2*pi>=theta0_1) and (theta0-2*pi<=theta0_2) then para1:=(theta0-2*pi-theta0_1)/(theta0_2-theta0_1); if (theta0+2*pi>=theta0_1) and (theta0+2*pi<=theta0_2) then para1:=(theta0+2*pi-theta0_1)/(theta0_2-theta0_1); theta1:=donneanglepolairedans02pi(xx-x1,yy-y1); if (theta1>=theta1_1) and (theta1<=theta1_2) then para2:=(theta1-theta1_1)/(theta1_2-theta1_1); if (theta1-2*pi>=theta1_1) and (theta1-2*pi<=theta1_2) then para2:=(theta1-2*pi-theta1_1)/(theta1_2-theta1_1); if (theta1+2*pi>=theta1_1) and (theta1+2*pi<=theta1_2) then para2:=(theta1+2*pi-theta1_1)/(theta1_2-theta1_1); if (para1>=0) and (para1<=1) and (para2>=0) and (para2<=1) then result:=1 else result:=0; exit; end; if delta>0 then begin xx1:=(-B+sqrt(delta))/2/A; yy1:=N-xx1*(x0-x1)/(y0-y1); theta0:=donneanglepolairedans02pi(xx1-x0,yy1-y0); if (theta0>=theta0_1) and (theta0<=theta0_2) then para1:=(theta0-theta0_1)/(theta0_2-theta0_1); if (theta0-2*pi>=theta0_1) and (theta0-2*pi<=theta0_2) then para1:=(theta0-2*pi-theta0_1)/(theta0_2-theta0_1); if (theta0+2*pi>=theta0_1) and (theta0+2*pi<=theta0_2) then para1:=(theta0+2*pi-theta0_1)/(theta0_2-theta0_1); theta1:=donneanglepolairedans02pi(xx1-x1,yy1-y1); if (theta1>=theta1_1) and (theta1<=theta1_2) then para2:=(theta1-theta1_1)/(theta1_2-theta1_1); if (theta1-2*pi>=theta1_1) and (theta1-2*pi<=theta1_2) then para2:=(theta1-2*pi-theta1_1)/(theta1_2-theta1_1); if (theta1+2*pi>=theta1_1) and (theta1+2*pi<=theta1_2) then para2:=(theta1+2*pi-theta1_1)/(theta1_2-theta1_1); xx1:=(-B-sqrt(delta))/2/A; yy1:=N-xx1*(x0-x1)/(y0-y1); theta0:=donneanglepolairedans02pi(xx1-x0,yy1-y0); if (theta0>=theta0_1) and (theta0<=theta0_2) then para3:=(theta0-theta0_1)/(theta0_2-theta0_1); if (theta0-2*pi>=theta0_1) and (theta0-2*pi<=theta0_2) then para3:=(theta0-2*pi-theta0_1)/(theta0_2-theta0_1); if (theta0+2*pi>=theta0_1) and (theta0+2*pi<=theta0_2) then para3:=(theta0+2*pi-theta0_1)/(theta0_2-theta0_1); theta1:=donneanglepolairedans02pi(xx1-x1,yy1-y1); if (theta1>=theta1_1) and (theta1<=theta1_2) then para4:=(theta1-theta1_1)/(theta1_2-theta1_1); if (theta1-2*pi>=theta1_1) and (theta1-2*pi<=theta1_2) then para4:=(theta1-2*pi-theta1_1)/(theta1_2-theta1_1); if (theta1+2*pi>=theta1_1) and (theta1+2*pi<=theta1_2) then para4:=(theta1+2*pi-theta1_1)/(theta1_2-theta1_1); nbe_sol:=0; if (para1>=0) and (para1<=1) and (para2>=0) and (para2<=1) then inc(nbe_sol); if (para3>=0) and (para3<=1) and (para4>=0) and (para4<=1) then begin inc(nbe_sol); if nbe_sol=1 then begin para1:=para3; para2:=para4; end; end; result:=nbe_sol; exit; end; end; {si y0=y1} xx:=(sqr(r1)-sqr(r0)-sqr(x1)+sqr(x0))/2/(x0-x1); A:=1; B:=-2*y1; C:=sqr(x1)+sqr(xx)-2*x1*xx+sqr(y1)-sqr(r1); delta:=sqr(B)-4*A*C; if delta<0 then begin result:=0; exit; end; if delta=0 then begin xx:=-B/2/A; yy:=N-xx*(x0-x1)/(y0-y1); theta0:=donneanglepolairedans02pi(xx-x0,yy-y0); if (theta0>=theta0_1) and (theta0<=theta0_2) then para1:=(theta0-theta0_1)/(theta0_2-theta0_1); if (theta0-2*pi>=theta0_1) and (theta0-2*pi<=theta0_2) then para1:=(theta0-2*pi-theta0_1)/(theta0_2-theta0_1); if (theta0+2*pi>=theta0_1) and (theta0+2*pi<=theta0_2) then para1:=(theta0+2*pi-theta0_1)/(theta0_2-theta0_1); theta1:=donneanglepolairedans02pi(xx-x1,yy-y1); if (theta1>=theta1_1) and (theta1<=theta1_2) then para2:=(theta1-theta1_1)/(theta1_2-theta1_1); if (theta1-2*pi>=theta1_1) and (theta1-2*pi<=theta1_2) then para2:=(theta1-2*pi-theta1_1)/(theta1_2-theta1_1); if (theta1+2*pi>=theta1_1) and (theta1+2*pi<=theta1_2) then para2:=(theta1+2*pi-theta1_1)/(theta1_2-theta1_1); if (para1>=0) and (para1<=1) and (para2>=0) and (para2<=1) then result:=1 else result:=0; exit; end; if delta>0 then begin xx1:=(-B+sqrt(delta))/2/A; yy1:=N-xx1*(x0-x1)/(y0-y1); theta0:=donneanglepolairedans02pi(xx1-x0,yy1-y0); if (theta0>=theta0_1) and (theta0<=theta0_2) then para1:=(theta0-theta0_1)/(theta0_2-theta0_1); if (theta0-2*pi>=theta0_1) and (theta0-2*pi<=theta0_2) then para1:=(theta0-2*pi-theta0_1)/(theta0_2-theta0_1); if (theta0+2*pi>=theta0_1) and (theta0+2*pi<=theta0_2) then para1:=(theta0+2*pi-theta0_1)/(theta0_2-theta0_1); theta1:=donneanglepolairedans02pi(xx1-x1,yy1-y1); if (theta1>=theta1_1) and (theta1<=theta1_2) then para2:=(theta1-theta1_1)/(theta1_2-theta1_1); if (theta1-2*pi>=theta1_1) and (theta1-2*pi<=theta1_2) then para2:=(theta1-2*pi-theta1_1)/(theta1_2-theta1_1); if (theta1+2*pi>=theta1_1) and (theta1+2*pi<=theta1_2) then para2:=(theta1+2*pi-theta1_1)/(theta1_2-theta1_1); xx1:=(-B-sqrt(delta))/2/A; yy1:=N-xx1*(x0-x1)/(y0-y1); theta0:=donneanglepolairedans02pi(xx1-x0,yy1-y0); if (theta0>=theta0_1) and (theta0<=theta0_2) then para3:=(theta0-theta0_1)/(theta0_2-theta0_1); if (theta0-2*pi>=theta0_1) and (theta0-2*pi<=theta0_2) then para3:=(theta0-2*pi-theta0_1)/(theta0_2-theta0_1); if (theta0+2*pi>=theta0_1) and (theta0+2*pi<=theta0_2) then para3:=(theta0+2*pi-theta0_1)/(theta0_2-theta0_1); theta1:=donneanglepolairedans02pi(xx1-x1,yy1-y1); if (theta1>=theta1_1) and (theta1<=theta1_2) then para4:=(theta1-theta1_1)/(theta1_2-theta1_1); if (theta1-2*pi>=theta1_1) and (theta1-2*pi<=theta1_2) then para4:=(theta1-2*pi-theta1_1)/(theta1_2-theta1_1); if (theta1+2*pi>=theta1_1) and (theta1+2*pi<=theta1_2) then para4:=(theta1+2*pi-theta1_1)/(theta1_2-theta1_1); nbe_sol:=0; if (para1>=0) and (para1<=1) and (para2>=0) and (para2<=1) then inc(nbe_sol); if (para3>=0) and (para3<=1) and (para4>=0) and (para4<=1) then begin inc(nbe_sol); if nbe_sol=1 then begin para3:=para1; para2:=para4; end; end; result:=nbe_sol; exit; end; end; function Le_segment_et_le_cercle_se_coupent_ils(Ax,Ay,Bx,By,Centrex,Centrey,Rayon,theta1,theta2:extended; var paraseg1,paracer1,paraseg2,paracer2:extended;tolerance:extended):integer; var a,b,c,delta,t,t1,t2,xi,yi,ap,xi1,yi1,xi2,yi2,ap1,ap2:extended; nbe_sol:integer; begin paraseg1:=10; paracer1:=10; paraseg2:=10; paracer2:=10; a:=sqr(bx-ax)+sqr(by-ay); b:=2*((ax-centrex)*(bx-ax)+(ay-centrey)*(by-ay)); c:=sqr(ax-centrex)+sqr(ay-centrey)-sqr(rayon); delta:=sqr(b)-4*a*c; result:=0; if delta<-tolerance then begin {pas d'intersection entre cercle et droite} exit; end; if abs(delta)1+tolerance) then begin {intersection en dehors du segment} result:=0; exit; end; {intersection sur segment} xi:=ax+t*(bx-ax); yi:=ay+t*(by-ay); ap:=donneanglepolairedans02pi(xi-centrex,yi-centrey); if ((ap>=theta1-tolerance) and (ap<=theta2+tolerance)) then paracer1:=(ap-theta1)/(theta2-theta1); if ((ap+2*pi>=theta1-tolerance) and (ap+2*pi<=theta2+tolerance)) then paracer1:=(ap+2*pi-theta1)/(theta2-theta1); if ((ap-2*pi>=theta1-tolerance) and (ap-2*pi<=theta2+tolerance)) then paracer1:=(ap-2*pi-theta1)/(theta2-theta1); if (paraseg1>=-tolerance) and (paraseg1<=1+tolerance) and (paracer1>=-tolerance) and (paracer1<=1+tolerance) then result:=1 else result:=0; exit; end; {du cas delta=0} {delta>0, 2 pts d'intersection entre droite et cercle} t1:=(-b+sqrt(delta))/2/a; t2:=(-b-sqrt(delta))/2/a; if ((t1<-tolerance) or (t1>1+tolerance)) and ((t2<-tolerance) or (t2>1+tolerance)) then begin result:=0; exit; end; nbe_sol:=0; if ((t1>=-tolerance) and (t1<=1+tolerance)) then begin paraseg1:=t1; xi1:=ax+t1*(bx-ax); yi1:=ay+t1*(by-ay); ap1:=donneanglepolairedans02pi(xi1-centrex,yi1-centrey); if ((ap1>=theta1-tolerance) and (ap1<=theta2+tolerance)) then paracer1:=(ap1-theta1)/(theta2-theta1); if ((ap1+2*pi>=theta1-tolerance) and (ap1+2*pi<=theta2+tolerance)) then paracer1:=(ap1+2*pi-theta1)/(theta2-theta1); if ((ap1-2*pi>=theta1-tolerance) and (ap1-2*pi<=theta2+tolerance)) then paracer1:=(ap1-2*pi-theta1)/(theta2-theta1); if (paraseg1>=-tolerance) and (paraseg1<=1+tolerance) and (paracer1>=-tolerance) and (paracer1<=1+tolerance) then inc(nbe_sol); end; if ((t2>=-tolerance) and (t2<=1+tolerance)) then begin paraseg2:=t2; xi2:=ax+t2*(bx-ax); yi2:=ay+t2*(by-ay); ap2:=donneanglepolairedans02pi(xi2-centrex,yi2-centrey); if ((ap2>=theta1-tolerance) and (ap2<=theta2+tolerance)) then paracer2:=(ap2-theta1)/(theta2-theta1); if ((ap2+2*pi>=theta1-tolerance) and (ap2+2*pi<=theta2+tolerance)) then paracer2:=(ap2+2*pi-theta1)/(theta2-theta1); if ((ap2-2*pi>=theta1-tolerance) and (ap2-2*pi<=theta2+tolerance)) then paracer2:=(ap2-2*pi-theta1)/(theta2-theta1); if (paraseg2>=-tolerance) and (paraseg2<=1+tolerance) and (paracer2>=-tolerance) and (paracer2<=1+tolerance) then begin inc(nbe_sol); if nbe_sol=1 then begin paracer1:=paracer2; paraseg1:=paraseg2; end; end; end; result:=nbe_sol; end; function Les_deux_segments_se_coupent_ils(Ax,Ay,Bx,By,Cx,Cy,Dx,Dy:extended):boolean; var denom, num1,num2,s,r:extended; begin denom:=(bx-ax)*(dy-cy)-(by-ay)*(dx-cx); num1:=(ay-cy)*(dx-cx)-(ax-cx)*(dy-cy); num2:=(ay-cy)*(bx-ax)-(ax-cx)*(by-ay); if (denom=0) and (num1<>0) then begin {segments paralleles mais non colineaires} result:=false; exit; end; if (denom=0) and (num1=0) then begin {segments colineaires} result:=not((min(cx,dx)>max(ax,bx)) or (max(cx,dx)>min(ax,bx))); exit; end; r:=num1/denom; s:=num2/denom; result:=(r>=0) and (r<=1) and (s>=0) and (s<=1); end; function maximum(a,b:extended):extended; begin if a>b then maximum:=a else maximum:=b; end; function minimum(a,b:extended):extended; begin if a=0 then begin partieentiere:=int(x); exit; end; if frac(x)=0 then begin partieentiere:=x; exit; end; {cas ou x est <0 et non entier} partieentiere:=int(x)-1; end; function puissance(x,exposant:extended):extended; begin if exposant=0 then begin puissance:=1; exit; end; if x>0 then begin puissance:=exp(exposant*ln(x)); exit; end; puissance:=0; end; procedure affichecoordonnees(xx,yy:extended); var incertitudex,incertitudey:extended; begin if xxmax=xxmin then exit; incertitudex:=0.5/form1.image1.width*(xxmax-xxmin)/zoomfactor; incertitudex:=int(incertitudex/puissance(10,partieentiere(log10(incertitudex))))* puissance(10,partieentiere(log10(incertitudex))); incertitudey:=0.5/form1.image1.height*(yymax-yymin)/zoomfactor; incertitudey:=int(incertitudey/puissance(10,partieentiere(log10(incertitudey))))* puissance(10,partieentiere(log10(incertitudey))); if xx<>0 then form1.statusbar1.panels[0].Text:='X='+floattostrf(xx,ffgeneral, 1+trunc(log10(abs(xx))-log10(abs(puissance(10,partieentiere(log10(incertitudex)))))),0)+'±' +floattostrf(incertitudex,ffgeneral,1,0)+unitelongueur; if yy<>0 then form1.statusbar1.panels[1].text:='Y='+floattostrf(yy,ffgeneral, 1+trunc(log10(abs(yy))-log10(abs(puissance(10,partieentiere(log10(incertitudey)))))),0)+'±' +floattostrf(incertitudey,ffgeneral,1,0)+unitelongueur; form1.StatusBar1.Update; end; function DonneAnglePolaireDansPiPi(x,y:extended):extended; var toto:extended; begin if ((x=0) and (y=0)) then begin DonneAnglePolaireDansPiPi:=0; exit; end; if (x=0) then if (y>0) then begin DonneAnglePolaireDansPiPi:=Pi/2; exit; end else begin DonneAnglePolaireDansPiPi:=-Pi/2; exit; end; if (y=0) then if (x>0) then begin DonneAnglePolaireDansPiPi:=0; exit; end else begin DonneAnglePolaireDansPiPi:=Pi; exit; end; try toto:=arctan(y/x); except if (((x>0) and (y>0)) or ((x<0) and (y<0))) then toto:=pi/2 else toto:=-pi/2; end; if (x<0) then toto:=toto+Pi; if toto>Pi then toto:=toto-2*Pi; if toto<-Pi then toto:=toto+2*pi; DonneAnglePolaireDansPiPi:=toto; end; function DonneAnglePolaireDans02Pi(x,y:extended):extended; var toto:extended; begin toto:=DonneAnglePolaireDansPiPi(x,y); if toto<0 then toto:=toto+2*Pi; DonneAnglePolaireDans02Pi:=toto; end; function groupe.add(typeel:TTypeElementModif; indice:integer):boolean; var xd,yd:extended; sommex,sommey:extended; j:integer; begin if nombreelements=maxelementsgroupe then begin add:=false; exit; end; for j:=1 to nombreelements do if (listeelements[nombreelements].typeelementgroupe=typeel) and (listeelements[nombreelements].indiceelement=indice) then {lelement fait deja partie du groupe} begin add:=false; exit; end; if typeel=mdneant then begin add:=false; exit; end; add:=true; inc(nombreelements); xd:=0; yd:=0; listeelements[nombreelements].typeelementgroupe:=typeel; listeelements[nombreelements].indiceelement:=indice; case typeel of mdoeil: begin xd:=listeoeil[-1+indice].cx; yd:=listeoeil[-1+indice].cy; end; mdmiroirplan: begin xd:=listemiroirplan[-1+indice].cx; yd:=listemiroirplan[-1+indice].cy; end; mdreseau: begin xd:=listereseau[-1+indice].cx; yd:=listereseau[-1+indice].cy; end; mddiaphragme: begin xd:=listediaphragme[-1+indice].cx; yd:=listediaphragme[-1+indice].cy; end; mdecran: begin xd:=listeecran[-1+indice].cx; yd:= listeecran[-1+indice].cy; end; mdtexteaffiche: begin xd:=listetexteaffiche[-1+indice].x; yd:=listetexteaffiche[-1+indice].y; end; mdfleche: begin xd:=listefleche[-1+indice].cx; yd:=listefleche[-1+indice].cy; end; mdmiroirconique: begin xd:= listemiroirconique[-1+indice].sx; yd:=listemiroirconique[-1+indice].sy; end; mdlsr: begin xd:=listelsr[-1+indice].cx; yd:=listelsr[-1+indice].cy; end; mdangle: begin xd:=listeangle[-1+indice].cx; yd:=listeangle[-1+indice].cy; end; mdmetre: begin xd:=listemetre[-1+indice].cx ; yd:=listemetre[-1+indice].cy; end; mdmscopa: begin xd:=listemscopa[-1+indice].sx; yd:=listemscopa[-1+indice].sy; end; mdmscepa: begin xd:=listemscepa[-1+indice].sx; yd:=listemscepa[-1+indice].sy; end; mdmscore: begin xd:=listemscore[-1+indice].sx; yd:=listemscore[-1+indice].sy; end; mdmscere: begin xd:=listemscere[-1+indice].sx; yd:=listemscere[-1+indice].sy; end; mdlmc: begin xd:=listelmc[-1+indice].ox; yd:=listelmc[-1+indice].oy; end; mdlmd: begin xd:=listelmd[-1+indice].ox; yd:=listelmd[-1+indice].oy; end; mdlec: begin xd:=listelec[-1+indice].ox; yd:=listelec[-1+indice].oy; end; mdrayon: begin xd:=listerayon[-1+indice].cx; yd:=listerayon[-1+indice].cy; end; mdsourceponctuelle: begin xd:=listesourceponctuelle[-1+indice].sx; yd:=listesourceponctuelle[-1+indice].sy; end; mdondeplane: begin xd:=listeondeplane[-1+indice].sx; yd:=listeondeplane[-1+indice].sy; end; mdprisme: begin xd:=listeprisme[-1+indice].gx; yd:=listeprisme[-1+indice].gy; end; mdpolyhedre: begin sommex:=0; sommey:=0; for j:=1 to listepolyhedre[-1+indice].nombresommet do begin sommex:=sommex+listepolyhedre[-1+indice].messommets[j].ax; sommey:=sommey+listepolyhedre[-1+indice].messommets[j].ay; end; xd:=sommex/listepolyhedre[-1+indice].nombresommet; yd:=sommey/listepolyhedre[-1+indice].nombresommet; end; mdpolycercle: begin sommex:=0; sommey:=0; for j:=1 to listepolycercle[-1+indice].nombresommet do begin sommex:=sommex+listepolycercle[-1+indice].messommets[j].ax; sommey:=sommey+listepolycercle[-1+indice].messommets[j].ay; end; xd:=sommex/listepolycercle[-1+indice].nombresommet; yd:=sommey/listepolycercle[-1+indice].nombresommet; end; mdsphere: begin xd:=listesphere[-1+indice].cx; yd:=listesphere[-1+indice].cy; end; end; {du case} isox:=(isox*(nombreelements-1)+xd)/nombreelements; isoy:=(isoy*(nombreelements-1)+yd)/nombreelements; end; procedure groupe.recalculeiso; var indice,j:integer; xd,yd:extended; begin isox:=0; isoy:=0; for indice:=1 to nombreelements do begin xd:=0; yd:=0; case listeelements[indice].typeelementgroupe of mdoeil: begin xd:=listeoeil[-1+listeelements[indice].indiceelement].cx; yd:=listeoeil[-1+listeelements[indice].indiceelement].cy; end; mdmiroirplan: begin xd:=listemiroirplan[-1+listeelements[indice].indiceelement].cx; yd:=listemiroirplan[-1+listeelements[indice].indiceelement].cy; end; mdreseau: begin xd:=listereseau[-1+listeelements[indice].indiceelement].cx; yd:=listereseau[-1+listeelements[indice].indiceelement].cy; end; mddiaphragme: begin xd:=listediaphragme[-1+listeelements[indice].indiceelement].cx; yd:=listediaphragme[-1+listeelements[indice].indiceelement].cy; end; mdecran: begin xd:=listeecran[-1+listeelements[indice].indiceelement].cx; yd:= listeecran[-1+listeelements[indice].indiceelement].cy; end; mdtexteaffiche: begin xd:=listetexteaffiche[-1+listeelements[indice].indiceelement].x; yd:=listetexteaffiche[-1+listeelements[indice].indiceelement].y; end; mdfleche: begin xd:=listefleche[-1+listeelements[indice].indiceelement].cx; yd:=listefleche[-1+listeelements[indice].indiceelement].cy; end; mdmiroirconique: begin xd:= listemiroirconique[-1+listeelements[indice].indiceelement].sx; yd:=listemiroirconique[-1+listeelements[indice].indiceelement].sy; end; mdlsr: begin xd:=listelsr[-1+listeelements[indice].indiceelement].cx; yd:=listelsr[-1+listeelements[indice].indiceelement].cy; end; mdangle: begin xd:=listeangle[-1+listeelements[indice].indiceelement].cx; yd:=listeangle[-1+listeelements[indice].indiceelement].cy; end; mdmetre: begin xd:=listemetre[-1+listeelements[indice].indiceelement].cx ; yd:=listemetre[-1+listeelements[indice].indiceelement].cy; end; mdmscopa: begin xd:=listemscopa[-1+listeelements[indice].indiceelement].sx; yd:=listemscopa[-1+listeelements[indice].indiceelement].sy; end; mdmscepa: begin xd:=listemscepa[-1+listeelements[indice].indiceelement].sx; yd:=listemscepa[-1+listeelements[indice].indiceelement].sy; end; mdmscore: begin xd:=listemscore[-1+listeelements[indice].indiceelement].sx; yd:=listemscore[-1+listeelements[indice].indiceelement].sy; end; mdmscere: begin xd:=listemscere[-1+listeelements[indice].indiceelement].sx; yd:=listemscere[-1+listeelements[indice].indiceelement].sy; end; mdlmc: begin xd:=listelmc[-1+listeelements[indice].indiceelement].ox; yd:=listelmc[-1+listeelements[indice].indiceelement].oy; end; mdlmd: begin xd:=listelmd[-1+listeelements[indice].indiceelement].ox; yd:=listelmd[-1+listeelements[indice].indiceelement].oy; end; mdlec: begin xd:=listelec[-1+listeelements[indice].indiceelement].ox; yd:=listelec[-1+listeelements[indice].indiceelement].oy; end; mdrayon: begin xd:=listerayon[-1+listeelements[indice].indiceelement].cx; yd:=listerayon[-1+listeelements[indice].indiceelement].cy; end; mdsourceponctuelle: begin xd:=listesourceponctuelle[-1+listeelements[indice].indiceelement].sx; yd:=listesourceponctuelle[-1+listeelements[indice].indiceelement].sy; end; mdondeplane: begin xd:=listeondeplane[-1+listeelements[indice].indiceelement].sx; yd:=listeondeplane[-1+listeelements[indice].indiceelement].sy; end; mdprisme: begin xd:=listeprisme[-1+listeelements[indice].indiceelement].xiso; yd:=listeprisme[-1+listeelements[indice].indiceelement].yiso; end; mdpolyhedre: begin xd:=listepolyhedre[-1+listeelements[indice].indiceelement].xiso; yd:=listepolyhedre[-1+listeelements[indice].indiceelement].yiso; end; mdpolycercle: begin xd:=listepolycercle[-1+listeelements[indice].indiceelement].xiso; yd:=listepolycercle[-1+listeelements[indice].indiceelement].yiso; end; mdsphere: begin xd:=listesphere[-1+listeelements[indice].indiceelement].cx; yd:=listesphere[-1+listeelements[indice].indiceelement].cy; end; mdneant: begin xd:=0; yd:=0; end; end; {du case} isox:=isox+xd; isoy:=isoy+yd; end; { de la boucle des elements} isox:=isox/nombreelements; isoy:=isoy/nombreelements; end; procedure groupe.create; var i:integer; begin isox:=0; nombreelements:=0; isoy:=0; for i:=1 to maxelementsgroupe do begin listeelements[i].typeelementgroupe:=mdneant; listeelements[i].indiceelement:=0; end; modifie:=true; end; procedure groupe.imprime(mc:tmyimprimante); begin if nombreelements=0 then exit; if ((modemodif ) and (not(modeduplication))) then begin mc.croixx(isox,isoy,3, 2,couleurtrans,pmcopy,true); mc.ecrire(isox, isoy, rsGr, true, policedefaut); end; if modesuppression then begin mc.cercle(isox,isoy,3, 1,couleursuppression,pmcopy,true); mc.ecrire(isox, isoy, rsGr, true, policedefaut); end; end; procedure groupe.dessine(mc:tmonbitmap); begin if nombreelements=0 then exit; if ((modemodif ) and (not(modeduplication))) then begin mc.croixx(isox,isoy,3, 2,couleurtrans,pmcopy,true); mc.ecrire(isox, isoy, rsGr, true, policedefaut); end; if modesuppression then begin mc.cercle(isox,isoy,3, 1,couleursuppression,pmcopy,true); mc.ecrire(isox, isoy, rsGr, true, policedefaut); end; end; procedure groupe.dessinePS(mc:tmonpostscript); begin if nombreelements=0 then exit; if ((modemodif ) and (not(modeduplication))) then begin mc.croixx(isox,isoy,3, 2,couleurtrans,pmcopy,true); mc.ecrire(isox, isoy, rsGr, true, policedefaut); end; if modesuppression then begin mc.cercle(isox,isoy,3, 1,couleursuppression,pmcopy,true); mc.ecrire(isox, isoy, rsGr, true, policedefaut); end; end; procedure groupe.translate(dx,dy:extended); var oo:oeil; mp:miroirplan; dia:diaphragme; ec:ecran; ta:texteaffiche; fe:fleche; mc:miroirconique; ls:lsr; an:angle; mt:metre; mo:mscopa; mor:mscore; me:mscere; mep: mscepa; lc:lmc; ld:lmd; le:lec; ra:rayon; sp:sourceponctuelle; op:ondeplane; ph:polyhedre; pc:polycercle; sh:sphere;pr:prisme; i,j:integer; re:reseau; ttpoly,ttsom:tableaupointpolyhedre; begin for i:=1 to nombreelements do case listeelements[i].typeelementgroupe of mdoeil: if not oo.create(listeoeil[-1+listeelements[i].indiceelement].cx+dx, listeoeil[-1+listeelements[i].indiceelement].cy+dy, listeoeil[-1+listeelements[i].indiceelement].ax+dx, listeoeil[-1+listeelements[i].indiceelement].ay+dy, listeoeil[-1+listeelements[i].indiceelement].epaisseur, listeoeil[-1+listeelements[i].indiceelement].couleur) then exit; mdmiroirplan: if not mp.create(listemiroirplan[-1+listeelements[i].indiceelement].a1x+dx, listemiroirplan[-1+listeelements[i].indiceelement].a1y+dy, listemiroirplan[-1+listeelements[i].indiceelement].a2x+dx, listemiroirplan[-1+listeelements[i].indiceelement].a2y+dy, listemiroirplan[-1+listeelements[i].indiceelement].epaisseur, listemiroirplan[-1+listeelements[i].indiceelement].couleur, listemiroirplan[-1+listeelements[i].indiceelement].hachures) then exit; mdreseau: if not re.create(listereseau[-1+listeelements[i].indiceelement].a1x+dx, listereseau[-1+listeelements[i].indiceelement].a1y+dy, listereseau[-1+listeelements[i].indiceelement].a2x+dx, listereseau[-1+listeelements[i].indiceelement].a2y+dy, listereseau[-1+listeelements[i].indiceelement].epaisseur, listereseau[-1+listeelements[i].indiceelement].couleur, listereseau[-1+listeelements[i].indiceelement].pas, listereseau[-1+listeelements[i].indiceelement].entransmission, listereseau[-1+listeelements[i].indiceelement].hachures, listereseau[-1+listeelements[i].indiceelement].ordre_min, listereseau[-1+listeelements[i].indiceelement].ordre_max) then exit; mddiaphragme: if not dia .create2(listediaphragme[-1+listeelements[i].indiceelement].cx+dx, listediaphragme[-1+listeelements[i].indiceelement].cy+dy, listediaphragme[-1+listeelements[i].indiceelement].anglepolaire, listediaphragme[-1+listeelements[i].indiceelement].rint, listediaphragme[-1+listeelements[i].indiceelement].rext, listediaphragme[-1+listeelements[i].indiceelement].couleur, listediaphragme[-1+listeelements[i].indiceelement].epaisseur) then exit; mdecran: if not ec.create(listeecran[-1+listeelements[i].indiceelement].a1x+dx, listeecran[-1+listeelements[i].indiceelement].a1y+dy, listeecran[-1+listeelements[i].indiceelement].a2x+dx, listeecran[-1+listeelements[i].indiceelement].a2y+dy, listeecran[-1+listeelements[i].indiceelement].couleur, listeecran[-1+listeelements[i].indiceelement].epaisseur) then exit; mdtexteaffiche: if not ta.create(listetexteaffiche[-1+listeelements[i].indiceelement].texteluimeme, listetexteaffiche[-1+listeelements[i].indiceelement].policename, listetexteaffiche[-1+listeelements[i].indiceelement].policecharset, listetexteaffiche[-1+listeelements[i].indiceelement].policecolor, listetexteaffiche[-1+listeelements[i].indiceelement].policesize, listetexteaffiche[-1+listeelements[i].indiceelement].policepitch, listetexteaffiche[-1+listeelements[i].indiceelement].policefsbold, listetexteaffiche[-1+listeelements[i].indiceelement].policefsitalic, listetexteaffiche[-1+listeelements[i].indiceelement].policefsunderline, listetexteaffiche[-1+listeelements[i].indiceelement].policefsstrikeout, listetexteaffiche[-1+listeelements[i].indiceelement].x+dx, listetexteaffiche[-1+listeelements[i].indiceelement].y+dy) then exit; mdfleche: if not fe.create(listefleche[-1+listeelements[i].indiceelement].a1x+dx, listefleche[-1+listeelements[i].indiceelement].a1y+dy, listefleche[-1+listeelements[i].indiceelement].a2x+dx, listefleche[-1+listeelements[i].indiceelement].a2y+dy, listefleche[-1+listeelements[i].indiceelement].epaisseur, listefleche[-1+listeelements[i].indiceelement].couleur, listefleche[-1+listeelements[i].indiceelement].ext1, listefleche[-1+listeelements[i].indiceelement].ext2, listefleche[-1+listeelements[i].indiceelement].styletrait, listefleche[-1+listeelements[i].indiceelement].taille1, listefleche[-1+listeelements[i].indiceelement].taille2) then exit; mdmiroirconique: if not mc.create2(listemiroirconique[-1+listeelements[i].indiceelement].fx+dx, listemiroirconique[-1+listeelements[i].indiceelement].fy+dy, listemiroirconique[-1+listeelements[i].indiceelement].theta0, listemiroirconique[-1+listeelements[i].indiceelement].theta1, listemiroirconique[-1+listeelements[i].indiceelement].theta2, listemiroirconique[-1+listeelements[i].indiceelement].excentricite, listemiroirconique[-1+listeelements[i].indiceelement].parametre, listemiroirconique[-1+listeelements[i].indiceelement].concave, listemiroirconique[-1+listeelements[i].indiceelement].couleur, listemiroirconique[-1+listeelements[i].indiceelement].couleuraxe, listemiroirconique[-1+listeelements[i].indiceelement].hachures, listemiroirconique[-1+listeelements[i].indiceelement].axefocal) then exit; mdlsr: if not ls.create(listelsr[-1+listeelements[i].indiceelement].a1x+dx, listelsr[-1+listeelements[i].indiceelement].a1y+dy, listelsr[-1+listeelements[i].indiceelement].a2x+dx, listelsr[-1+listeelements[i].indiceelement].a2y+dy, listelsr[-1+listeelements[i].indiceelement].couleur, listelsr[-1+listeelements[i].indiceelement].epaisseur) then exit; mdangle: if not an.create(listeangle[-1+listeelements[i].indiceelement].cx+dx, listeangle[-1+listeelements[i].indiceelement].cy+dy, listeangle[-1+listeelements[i].indiceelement].a1x+dx, listeangle[-1+listeelements[i].indiceelement].a1y+dy, listeangle[-1+listeelements[i].indiceelement].a2x+dx, listeangle[-1+listeelements[i].indiceelement].a2y+dy) then exit; mdmetre: if not mt.create( listemetre[-1+listeelements[i].indiceelement].a1x+dx, listemetre[-1+listeelements[i].indiceelement].a1y+dy, listemetre[-1+listeelements[i].indiceelement].a2x+dx, listemetre[-1+listeelements[i].indiceelement].a2y+dy) then exit; mdmscopa: if not mo.create2( listemscopa[-1+listeelements[i].indiceelement].a1x+dx, listemscopa[-1+listeelements[i].indiceelement].a1y+dy, listemscopa[-1+listeelements[i].indiceelement].a2x+dx, listemscopa[-1+listeelements[i].indiceelement].a2y+dy, listemscopa[-1+listeelements[i].indiceelement].focale, listemscopa[-1+listeelements[i].indiceelement].epaisseur, listemscopa[-1+listeelements[i].indiceelement].couleur, listemscopa[-1+listeelements[i].indiceelement].couleuraxe, listemscopa[-1+listeelements[i].indiceelement].hachures, listemscopa[-1+listeelements[i].indiceelement].axefocal, listemscopa[-1+listeelements[i].indiceelement].trou, listemscopa[-1+listeelements[i].indiceelement].diametretrou) then exit; mdmscepa: if not mep.create2( listemscepa[-1+listeelements[i].indiceelement].a1x+dx, listemscepa[-1+listeelements[i].indiceelement].a1y+dy, listemscepa[-1+listeelements[i].indiceelement].a2x+dx, listemscepa[-1+listeelements[i].indiceelement].a2y+dy, listemscepa[-1+listeelements[i].indiceelement].focale, listemscepa[-1+listeelements[i].indiceelement].epaisseur, listemscepa[-1+listeelements[i].indiceelement].couleur, listemscepa[-1+listeelements[i].indiceelement].couleuraxe, listemscepa[-1+listeelements[i].indiceelement].hachures, listemscepa[-1+listeelements[i].indiceelement].axefocal, listemscepa[-1+listeelements[i].indiceelement].trou, listemscepa[-1+listeelements[i].indiceelement].diametretrou) then exit; mdmscore: if not mor.create2( listemscore[-1+listeelements[i].indiceelement].a1x+dx, listemscore[-1+listeelements[i].indiceelement].a1y+dy, listemscore[-1+listeelements[i].indiceelement].a2x+dx, listemscore[-1+listeelements[i].indiceelement].a2y+dy, listemscore[-1+listeelements[i].indiceelement].rayoncourbure, listemscore[-1+listeelements[i].indiceelement].epaisseur, listemscore[-1+listeelements[i].indiceelement].couleur, listemscore[-1+listeelements[i].indiceelement].couleuraxe, listemscore[-1+listeelements[i].indiceelement].hachures, listemscore[-1+listeelements[i].indiceelement].axefocal, listemscore[-1+listeelements[i].indiceelement].aigu, listemscore[-1+listeelements[i].indiceelement].trou, listemscore[-1+listeelements[i].indiceelement].diametretrou) then exit; mdmscere: if not me.create2( listemscere[-1+listeelements[i].indiceelement].a1x+dx, listemscere[-1+listeelements[i].indiceelement].a1y+dy, listemscere[-1+listeelements[i].indiceelement].a2x+dx, listemscere[-1+listeelements[i].indiceelement].a2y+dy, listemscere[-1+listeelements[i].indiceelement].rayoncourbure, listemscere[-1+listeelements[i].indiceelement].epaisseur, listemscere[-1+listeelements[i].indiceelement].couleur, listemscere[-1+listeelements[i].indiceelement].couleuraxe, listemscere[-1+listeelements[i].indiceelement].hachures, listemscere[-1+listeelements[i].indiceelement].axefocal, listemscere[-1+listeelements[i].indiceelement].aigu, listemscere[-1+listeelements[i].indiceelement].trou, listemscere[-1+listeelements[i].indiceelement].diametretrou) then exit; mdlmc: if not lc.create2( listelmc[-1+listeelements[i].indiceelement].a1x+dx, listelmc[-1+listeelements[i].indiceelement].a1y+dy, listelmc[-1+listeelements[i].indiceelement].a2x+dx, listelmc[-1+listeelements[i].indiceelement].a2y+dy, listelmc[-1+listeelements[i].indiceelement].focale, listelmc[-1+listeelements[i].indiceelement].epaisseur, listelmc[-1+listeelements[i].indiceelement].couleur, listelmc[-1+listeelements[i].indiceelement].couleuraxe, listelmc[-1+listeelements[i].indiceelement].axefocal) then exit; mdlmd: if not ld.create2( listelmd[-1+listeelements[i].indiceelement].a1x+dx, listelmd[-1+listeelements[i].indiceelement].a1y+dy, listelmd[-1+listeelements[i].indiceelement].a2x+dx, listelmd[-1+listeelements[i].indiceelement].a2y+dy, listelmd[-1+listeelements[i].indiceelement].focale, listelmd[-1+listeelements[i].indiceelement].epaisseur, listelmd[-1+listeelements[i].indiceelement].couleur, listelmd[-1+listeelements[i].indiceelement].couleuraxe, listelmd[-1+listeelements[i].indiceelement].axefocal) then exit; mdlec: if not le.create( listelec[-1+listeelements[i].indiceelement].s1x+dx, listelec[-1+listeelements[i].indiceelement].s1y+dy, listelec[-1+listeelements[i].indiceelement].s2x+dx, listelec[-1+listeelements[i].indiceelement].s2y+dy, listelec[-1+listeelements[i].indiceelement].r1, listelec[-1+listeelements[i].indiceelement].r2, listelec[-1+listeelements[i].indiceelement].diametre, listelec[-1+listeelements[i].indiceelement].couleurfond, listelec[-1+listeelements[i].indiceelement].couleuraxe, listelec[-1+listeelements[i].indiceelement].axefocal, listelec[-1+listeelements[i].indiceelement].indicerouge, listelec[-1+listeelements[i].indiceelement].indicebleu, listelec[-1+listeelements[i].indiceelement].indicevert, listelec[-1+listeelements[i].indiceelement].reflechientrant, listelec[-1+listeelements[i].indiceelement].reflechisortant) then exit; mdrayon: if not ra.create( listerayon[-1+listeelements[i].indiceelement].ax+dx, listerayon[-1+listeelements[i].indiceelement].ay+dy, listerayon[-1+listeelements[i].indiceelement].kx, listerayon[-1+listeelements[i].indiceelement].ky, listerayon[-1+listeelements[i].indiceelement].couleur, listerayon[-1+listeelements[i].indiceelement].epaisseur, listerayon[-1+listeelements[i].indiceelement].vav, listerayon[-1+listeelements[i].indiceelement].vaa, listerayon[-1+listeelements[i].indiceelement].nombremaxenfant, listerayon[-1+listeelements[i].indiceelement].maxsegment) then exit; mdsourceponctuelle: if not sp.create( listesourceponctuelle[-1+listeelements[i].indiceelement].nombrederayon, listesourceponctuelle[-1+listeelements[i].indiceelement].sx+dx, listesourceponctuelle[-1+listeelements[i].indiceelement].sy+dy, listesourceponctuelle[-1+listeelements[i].indiceelement].a1x+dx, listesourceponctuelle[-1+listeelements[i].indiceelement].a1y+dy, listesourceponctuelle[-1+listeelements[i].indiceelement].a2x+dx, listesourceponctuelle[-1+listeelements[i].indiceelement].a2y+dy, listesourceponctuelle[-1+listeelements[i].indiceelement].couleur, listesourceponctuelle[-1+listeelements[i].indiceelement].epaisseur, listesourceponctuelle[-1+listeelements[i].indiceelement].vav, listesourceponctuelle[-1+listeelements[i].indiceelement].vaa, listesourceponctuelle[-1+listeelements[i].indiceelement].maxenfantparrayon, listesourceponctuelle[-1+listeelements[i].indiceelement].sourcevirtuelle, listesourceponctuelle[-1+listeelements[i].indiceelement].tracersurfacesonde, listesourceponctuelle[-1+listeelements[i].indiceelement].listechemins, listesourceponctuelle[-1+listeelements[i].indiceelement].maxsegment) then exit; mdondeplane: if not op.create( listeondeplane[-1+listeelements[i].indiceelement].nombrederayon, listeondeplane[-1+listeelements[i].indiceelement].sx+dx, listeondeplane[-1+listeelements[i].indiceelement].sy+dy, listeondeplane[-1+listeelements[i].indiceelement].a1x+dx, listeondeplane[-1+listeelements[i].indiceelement].a1y+dy, listeondeplane[-1+listeelements[i].indiceelement].a2x+dx, listeondeplane[-1+listeelements[i].indiceelement].a2y+dy, listeondeplane[-1+listeelements[i].indiceelement].couleur, listeondeplane[-1+listeelements[i].indiceelement].epaisseur, listeondeplane[-1+listeelements[i].indiceelement].vav, listeondeplane[-1+listeelements[i].indiceelement].vaa, listeondeplane[-1+listeelements[i].indiceelement].maxenfantparrayon, listeondeplane[-1+listeelements[i].indiceelement].tracersurfacesonde, listeondeplane[-1+listeelements[i].indiceelement].listechemins, listeondeplane[-1+listeelements[i].indiceelement].maxsegment) then exit; mdprisme: if not pr.create( listeprisme[-1+listeelements[i].indiceelement].gx+dx, listeprisme[-1+listeelements[i].indiceelement].gy+dy, listeprisme[-1+listeelements[i].indiceelement].ax+dx, listeprisme[-1+listeelements[i].indiceelement].ay+dy, listeprisme[-1+listeelements[i].indiceelement].bx+dx, listeprisme[-1+listeelements[i].indiceelement].by+dy, listeprisme[-1+listeelements[i].indiceelement].indicerouge, listeprisme[-1+listeelements[i].indiceelement].indicebleu, listeprisme[-1+listeelements[i].indiceelement].indicevert, listeprisme[-1+listeelements[i].indiceelement].couleurbord, listeprisme[-1+listeelements[i].indiceelement].couleurfond, listeprisme[-1+listeelements[i].indiceelement].reflechientrant, listeprisme[-1+listeelements[i].indiceelement].reflechisortant) then exit; mdpolyhedre: begin for j:=1 to listepolyhedre[-1+listeelements[i].indiceelement].nombresommet do begin ttpoly[j].ax:=listepolyhedre[-1+listeelements[i].indiceelement].messommets[j].ax+dx; ttpoly[j].ay:=listepolyhedre[-1+listeelements[i].indiceelement].messommets[j].ay+dy; end; if not ph.create( listepolyhedre[-1+listeelements[i].indiceelement].nombresommet, ttpoly, listepolyhedre[-1+listeelements[i].indiceelement].indicerouge, listepolyhedre[-1+listeelements[i].indiceelement].indicebleu, listepolyhedre[-1+listeelements[i].indiceelement].indicevert, listepolyhedre[-1+listeelements[i].indiceelement].couleurbord, listepolyhedre[-1+listeelements[i].indiceelement].couleurfond, listepolyhedre[-1+listeelements[i].indiceelement].reflechientrant, listepolyhedre[-1+listeelements[i].indiceelement].reflechisortant) then exit; end; mdpolycercle: begin for j:=1 to listepolycercle[-1+listeelements[i].indiceelement].nombresommet do begin ttpoly[j].ax:=listepolycercle[-1+listeelements[i].indiceelement].messommets[j].ax+dx; ttpoly[j].ay:=listepolycercle[-1+listeelements[i].indiceelement].messommets[j].ay+dy; ttsom[j].ay:=listepolycercle[-1+listeelements[i].indiceelement].MesS[j].ay+dy; ttsom[j].ax:=listepolycercle[-1+listeelements[i].indiceelement].MesS[j].ax+dx; end; if not pc.create(listepolycercle[-1+listeelements[i].indiceelement].nombresommet, ttpoly,ttsom,listepolycercle[-1+listeelements[i].indiceelement].rectiligne, listepolycercle[-1+listeelements[i].indiceelement].indicerouge, listepolycercle[-1+listeelements[i].indiceelement].indicebleu, listepolycercle[-1+listeelements[i].indiceelement].indicevert, listepolycercle[-1+listeelements[i].indiceelement].couleurbord, listepolycercle[-1+listeelements[i].indiceelement].couleurfond, listepolycercle[-1+listeelements[i].indiceelement].reflechientrant, listepolycercle[-1+listeelements[i].indiceelement].reflechisortant) then exit; { if not pc.create2( listepolycercle[-1+listeelements[i].indiceelement].nombresommet, ttpoly, listepolycercle[-1+listeelements[i].indiceelement].rayon, listepolycercle[-1+listeelements[i].indiceelement].rectiligne, listepolycercle[-1+listeelements[i].indiceelement].rentrant, listepolycercle[-1+listeelements[i].indiceelement].aigu, listepolycercle[-1+listeelements[i].indiceelement].indicerouge, listepolycercle[-1+listeelements[i].indiceelement].indicebleu, listepolycercle[-1+listeelements[i].indiceelement].indicevert, listepolycercle[-1+listeelements[i].indiceelement].couleurbord, listepolycercle[-1+listeelements[i].indiceelement].couleurfond, listepolycercle[-1+listeelements[i].indiceelement].reflechientrant, listepolycercle[-1+listeelements[i].indiceelement].reflechisortant, listepolycercle[-1+listeelements[i].indiceelement].trigodirect) then exit;} end; mdsphere: if not sh.create( listesphere[-1+listeelements[i].indiceelement].cx+dx, listesphere[-1+listeelements[i].indiceelement].cy+dy, listesphere[-1+listeelements[i].indiceelement].rayon, listesphere[-1+listeelements[i].indiceelement].indicerouge, listesphere[-1+listeelements[i].indiceelement].indicebleu, listesphere[-1+listeelements[i].indiceelement].indicevert, listesphere[-1+listeelements[i].indiceelement].couleurbord, listesphere[-1+listeelements[i].indiceelement].couleurfond, listesphere[-1+listeelements[i].indiceelement].reflechientrant, listesphere[-1+listeelements[i].indiceelement].reflechisortant) then exit; end; {du case et de la boucle} {et maintenant, puisque c'est bon, on translate} for i:=1 to nombreelements do case listeelements[i].typeelementgroupe of mdoeil: listeoeil[-1+listeelements[i].indiceelement].create(listeoeil[-1+listeelements[i].indiceelement].cx+dx, listeoeil[-1+listeelements[i].indiceelement].cy+dy, listeoeil[-1+listeelements[i].indiceelement].ax+dx, listeoeil[-1+listeelements[i].indiceelement].ay+dy, listeoeil[-1+listeelements[i].indiceelement].epaisseur, listeoeil[-1+listeelements[i].indiceelement].couleur) ; mdmiroirplan: listemiroirplan[-1+listeelements[i].indiceelement].create(listemiroirplan[-1+listeelements[i].indiceelement].a1x+dx, listemiroirplan[-1+listeelements[i].indiceelement].a1y+dy, listemiroirplan[-1+listeelements[i].indiceelement].a2x+dx, listemiroirplan[-1+listeelements[i].indiceelement].a2y+dy, listemiroirplan[-1+listeelements[i].indiceelement].epaisseur, listemiroirplan[-1+listeelements[i].indiceelement].couleur, listemiroirplan[-1+listeelements[i].indiceelement].hachures); mdreseau: listereseau[-1+listeelements[i].indiceelement].create(listereseau[-1+listeelements[i].indiceelement].a1x+dx, listereseau[-1+listeelements[i].indiceelement].a1y+dy, listereseau[-1+listeelements[i].indiceelement].a2x+dx, listereseau[-1+listeelements[i].indiceelement].a2y+dy, listereseau[-1+listeelements[i].indiceelement].epaisseur, listereseau[-1+listeelements[i].indiceelement].couleur, listereseau[-1+listeelements[i].indiceelement].pas, listereseau[-1+listeelements[i].indiceelement].entransmission, listereseau[-1+listeelements[i].indiceelement].hachures, listereseau[-1+listeelements[i].indiceelement].ordre_min, listereseau[-1+listeelements[i].indiceelement].ordre_max); mddiaphragme: listediaphragme[-1+listeelements[i].indiceelement] .create2(listediaphragme[-1+listeelements[i].indiceelement].cx+dx, listediaphragme[-1+listeelements[i].indiceelement].cy+dy, listediaphragme[-1+listeelements[i].indiceelement].anglepolaire, listediaphragme[-1+listeelements[i].indiceelement].rint, listediaphragme[-1+listeelements[i].indiceelement].rext, listediaphragme[-1+listeelements[i].indiceelement].couleur, listediaphragme[-1+listeelements[i].indiceelement].epaisseur); mdecran: listeecran[-1+listeelements[i].indiceelement] .create(listeecran[-1+listeelements[i].indiceelement].a1x+dx, listeecran[-1+listeelements[i].indiceelement].a1y+dy, listeecran[-1+listeelements[i].indiceelement].a2x+dx, listeecran[-1+listeelements[i].indiceelement].a2y+dy, listeecran[-1+listeelements[i].indiceelement].couleur, listeecran[-1+listeelements[i].indiceelement].epaisseur); mdtexteaffiche: listetexteaffiche[-1+listeelements[i].indiceelement] .create(listetexteaffiche[-1+listeelements[i].indiceelement].texteluimeme, listetexteaffiche[-1+listeelements[i].indiceelement].policename, listetexteaffiche[-1+listeelements[i].indiceelement].policecharset, listetexteaffiche[-1+listeelements[i].indiceelement].policecolor, listetexteaffiche[-1+listeelements[i].indiceelement].policesize, listetexteaffiche[-1+listeelements[i].indiceelement].policepitch, listetexteaffiche[-1+listeelements[i].indiceelement].policefsbold, listetexteaffiche[-1+listeelements[i].indiceelement].policefsitalic, listetexteaffiche[-1+listeelements[i].indiceelement].policefsunderline, listetexteaffiche[-1+listeelements[i].indiceelement].policefsstrikeout, listetexteaffiche[-1+listeelements[i].indiceelement].x+dx, listetexteaffiche[-1+listeelements[i].indiceelement].y+dy); mdfleche: listefleche[-1+listeelements[i].indiceelement] .create(listefleche[-1+listeelements[i].indiceelement].a1x+dx, listefleche[-1+listeelements[i].indiceelement].a1y+dy, listefleche[-1+listeelements[i].indiceelement].a2x+dx, listefleche[-1+listeelements[i].indiceelement].a2y+dy, listefleche[-1+listeelements[i].indiceelement].epaisseur, listefleche[-1+listeelements[i].indiceelement].couleur, listefleche[-1+listeelements[i].indiceelement].ext1, listefleche[-1+listeelements[i].indiceelement].ext2, listefleche[-1+listeelements[i].indiceelement].styletrait, listefleche[-1+listeelements[i].indiceelement].taille1, listefleche[-1+listeelements[i].indiceelement].taille2); mdmiroirconique: listemiroirconique[-1+listeelements[i].indiceelement] .create2(listemiroirconique[-1+listeelements[i].indiceelement].fx+dx, listemiroirconique[-1+listeelements[i].indiceelement].fy+dy, listemiroirconique[-1+listeelements[i].indiceelement].theta0, listemiroirconique[-1+listeelements[i].indiceelement].theta1, listemiroirconique[-1+listeelements[i].indiceelement].theta2, listemiroirconique[-1+listeelements[i].indiceelement].excentricite, listemiroirconique[-1+listeelements[i].indiceelement].parametre, listemiroirconique[-1+listeelements[i].indiceelement].concave, listemiroirconique[-1+listeelements[i].indiceelement].couleur, listemiroirconique[-1+listeelements[i].indiceelement].couleuraxe, listemiroirconique[-1+listeelements[i].indiceelement].hachures, listemiroirconique[-1+listeelements[i].indiceelement].axefocal); mdlsr: listelsr[-1+listeelements[i].indiceelement] .create(listelsr[-1+listeelements[i].indiceelement].a1x+dx, listelsr[-1+listeelements[i].indiceelement].a1y+dy, listelsr[-1+listeelements[i].indiceelement].a2x+dx, listelsr[-1+listeelements[i].indiceelement].a2y+dy, listelsr[-1+listeelements[i].indiceelement].couleur, listelsr[-1+listeelements[i].indiceelement].epaisseur); mdangle: listeangle[-1+listeelements[i].indiceelement] .create(listeangle[-1+listeelements[i].indiceelement].cx+dx, listeangle[-1+listeelements[i].indiceelement].cy+dy, listeangle[-1+listeelements[i].indiceelement].a1x+dx, listeangle[-1+listeelements[i].indiceelement].a1y+dy, listeangle[-1+listeelements[i].indiceelement].a2x+dx, listeangle[-1+listeelements[i].indiceelement].a2y+dy); mdmetre: listemetre[-1+listeelements[i].indiceelement].create( listemetre[-1+listeelements[i].indiceelement].a1x+dx, listemetre[-1+listeelements[i].indiceelement].a1y+dy, listemetre[-1+listeelements[i].indiceelement].a2x+dx, listemetre[-1+listeelements[i].indiceelement].a2y+dy); mdmscopa: listemscopa[-1+listeelements[i].indiceelement].create2( listemscopa[-1+listeelements[i].indiceelement].a1x+dx, listemscopa[-1+listeelements[i].indiceelement].a1y+dy, listemscopa[-1+listeelements[i].indiceelement].a2x+dx, listemscopa[-1+listeelements[i].indiceelement].a2y+dy, listemscopa[-1+listeelements[i].indiceelement].focale, listemscopa[-1+listeelements[i].indiceelement].epaisseur, listemscopa[-1+listeelements[i].indiceelement].couleur, listemscopa[-1+listeelements[i].indiceelement].couleuraxe, listemscopa[-1+listeelements[i].indiceelement].hachures, listemscopa[-1+listeelements[i].indiceelement].axefocal, listemscopa[-1+listeelements[i].indiceelement].trou, listemscopa[-1+listeelements[i].indiceelement].diametretrou); mdmscepa: listemscepa[-1+listeelements[i].indiceelement].create2( listemscepa[-1+listeelements[i].indiceelement].a1x+dx, listemscepa[-1+listeelements[i].indiceelement].a1y+dy, listemscepa[-1+listeelements[i].indiceelement].a2x+dx, listemscepa[-1+listeelements[i].indiceelement].a2y+dy, listemscepa[-1+listeelements[i].indiceelement].focale, listemscepa[-1+listeelements[i].indiceelement].epaisseur, listemscepa[-1+listeelements[i].indiceelement].couleur, listemscepa[-1+listeelements[i].indiceelement].couleuraxe, listemscepa[-1+listeelements[i].indiceelement].hachures, listemscepa[-1+listeelements[i].indiceelement].axefocal, listemscepa[-1+listeelements[i].indiceelement].trou, listemscepa[-1+listeelements[i].indiceelement].diametretrou); mdmscore: listemscore[-1+listeelements[i].indiceelement].create2( listemscore[-1+listeelements[i].indiceelement].a1x+dx, listemscore[-1+listeelements[i].indiceelement].a1y+dy, listemscore[-1+listeelements[i].indiceelement].a2x+dx, listemscore[-1+listeelements[i].indiceelement].a2y+dy, listemscore[-1+listeelements[i].indiceelement].rayoncourbure, listemscore[-1+listeelements[i].indiceelement].epaisseur, listemscore[-1+listeelements[i].indiceelement].couleur, listemscore[-1+listeelements[i].indiceelement].couleuraxe, listemscore[-1+listeelements[i].indiceelement].hachures, listemscore[-1+listeelements[i].indiceelement].axefocal, listemscore[-1+listeelements[i].indiceelement].aigu, listemscore[-1+listeelements[i].indiceelement].trou, listemscore[-1+listeelements[i].indiceelement].diametretrou); mdmscere: listemscere[-1+listeelements[i].indiceelement].create2( listemscere[-1+listeelements[i].indiceelement].a1x+dx, listemscere[-1+listeelements[i].indiceelement].a1y+dy, listemscere[-1+listeelements[i].indiceelement].a2x+dx, listemscere[-1+listeelements[i].indiceelement].a2y+dy, listemscere[-1+listeelements[i].indiceelement].rayoncourbure, listemscere[-1+listeelements[i].indiceelement].epaisseur, listemscere[-1+listeelements[i].indiceelement].couleur, listemscere[-1+listeelements[i].indiceelement].couleuraxe, listemscere[-1+listeelements[i].indiceelement].hachures, listemscere[-1+listeelements[i].indiceelement].axefocal, listemscere[-1+listeelements[i].indiceelement].aigu, listemscere[-1+listeelements[i].indiceelement].trou, listemscere[-1+listeelements[i].indiceelement].diametretrou); mdlmc: listelmc[-1+listeelements[i].indiceelement].create2( listelmc[-1+listeelements[i].indiceelement].a1x+dx, listelmc[-1+listeelements[i].indiceelement].a1y+dy, listelmc[-1+listeelements[i].indiceelement].a2x+dx, listelmc[-1+listeelements[i].indiceelement].a2y+dy, listelmc[-1+listeelements[i].indiceelement].focale, listelmc[-1+listeelements[i].indiceelement].epaisseur, listelmc[-1+listeelements[i].indiceelement].couleur, listelmc[-1+listeelements[i].indiceelement].couleuraxe, listelmc[-1+listeelements[i].indiceelement].axefocal); mdlmd: listelmd[-1+listeelements[i].indiceelement].create2( listelmd[-1+listeelements[i].indiceelement].a1x+dx, listelmd[-1+listeelements[i].indiceelement].a1y+dy, listelmd[-1+listeelements[i].indiceelement].a2x+dx, listelmd[-1+listeelements[i].indiceelement].a2y+dy, listelmd[-1+listeelements[i].indiceelement].focale, listelmd[-1+listeelements[i].indiceelement].epaisseur, listelmd[-1+listeelements[i].indiceelement].couleur, listelmd[-1+listeelements[i].indiceelement].couleuraxe, listelmd[-1+listeelements[i].indiceelement].axefocal); mdlec: listelec[-1+listeelements[i].indiceelement].create( listelec[-1+listeelements[i].indiceelement].s1x+dx, listelec[-1+listeelements[i].indiceelement].s1y+dy, listelec[-1+listeelements[i].indiceelement].s2x+dx, listelec[-1+listeelements[i].indiceelement].s2y+dy, listelec[-1+listeelements[i].indiceelement].r1, listelec[-1+listeelements[i].indiceelement].r2, listelec[-1+listeelements[i].indiceelement].diametre, listelec[-1+listeelements[i].indiceelement].couleurfond, listelec[-1+listeelements[i].indiceelement].couleuraxe, listelec[-1+listeelements[i].indiceelement].axefocal, listelec[-1+listeelements[i].indiceelement].indicerouge, listelec[-1+listeelements[i].indiceelement].indicebleu, listelec[-1+listeelements[i].indiceelement].indicevert, listelec[-1+listeelements[i].indiceelement].reflechientrant, listelec[-1+listeelements[i].indiceelement].reflechisortant); mdrayon: listerayon[-1+listeelements[i].indiceelement].create( listerayon[-1+listeelements[i].indiceelement].ax+dx, listerayon[-1+listeelements[i].indiceelement].ay+dy, listerayon[-1+listeelements[i].indiceelement].kx, listerayon[-1+listeelements[i].indiceelement].ky, listerayon[-1+listeelements[i].indiceelement].couleur, listerayon[-1+listeelements[i].indiceelement].epaisseur, listerayon[-1+listeelements[i].indiceelement].vav, listerayon[-1+listeelements[i].indiceelement].vaa, listerayon[-1+listeelements[i].indiceelement].nombremaxenfant, listerayon[-1+listeelements[i].indiceelement].maxsegment); mdsourceponctuelle: listesourceponctuelle[-1+listeelements[i].indiceelement].create( listesourceponctuelle[-1+listeelements[i].indiceelement].nombrederayon, listesourceponctuelle[-1+listeelements[i].indiceelement].sx+dx, listesourceponctuelle[-1+listeelements[i].indiceelement].sy+dy, listesourceponctuelle[-1+listeelements[i].indiceelement].a1x+dx, listesourceponctuelle[-1+listeelements[i].indiceelement].a1y+dy, listesourceponctuelle[-1+listeelements[i].indiceelement].a2x+dx, listesourceponctuelle[-1+listeelements[i].indiceelement].a2y+dy, listesourceponctuelle[-1+listeelements[i].indiceelement].couleur, listesourceponctuelle[-1+listeelements[i].indiceelement].epaisseur, listesourceponctuelle[-1+listeelements[i].indiceelement].vav, listesourceponctuelle[-1+listeelements[i].indiceelement].vaa, listesourceponctuelle[-1+listeelements[i].indiceelement].maxenfantparrayon, listesourceponctuelle[-1+listeelements[i].indiceelement].sourcevirtuelle, listesourceponctuelle[-1+listeelements[i].indiceelement].tracersurfacesonde, listesourceponctuelle[-1+listeelements[i].indiceelement].listechemins, listesourceponctuelle[-1+listeelements[i].indiceelement].maxsegment) ; mdondeplane: listeondeplane[-1+listeelements[i].indiceelement].create( listeondeplane[-1+listeelements[i].indiceelement].nombrederayon, listeondeplane[-1+listeelements[i].indiceelement].sx+dx, listeondeplane[-1+listeelements[i].indiceelement].sy+dy, listeondeplane[-1+listeelements[i].indiceelement].a1x+dx, listeondeplane[-1+listeelements[i].indiceelement].a1y+dy, listeondeplane[-1+listeelements[i].indiceelement].a2x+dx, listeondeplane[-1+listeelements[i].indiceelement].a2y+dy, listeondeplane[-1+listeelements[i].indiceelement].couleur, listeondeplane[-1+listeelements[i].indiceelement].epaisseur, listeondeplane[-1+listeelements[i].indiceelement].vav, listeondeplane[-1+listeelements[i].indiceelement].vaa, listeondeplane[-1+listeelements[i].indiceelement].maxenfantparrayon, listeondeplane[-1+listeelements[i].indiceelement].tracersurfacesonde, listeondeplane[-1+listeelements[i].indiceelement].listechemins, listeondeplane[-1+listeelements[i].indiceelement].maxsegment) ; mdpolyhedre: begin for j:=1 to listepolyhedre[-1+listeelements[i].indiceelement].nombresommet do begin ttpoly[j].ax:=listepolyhedre[-1+listeelements[i].indiceelement].messommets[j].ax+dx; ttpoly[j].ay:=listepolyhedre[-1+listeelements[i].indiceelement].messommets[j].ay+dy; end; listepolyhedre[-1+listeelements[i].indiceelement].create( listepolyhedre[-1+listeelements[i].indiceelement].nombresommet, ttpoly, listepolyhedre[-1+listeelements[i].indiceelement].indicerouge, listepolyhedre[-1+listeelements[i].indiceelement].indicebleu, listepolyhedre[-1+listeelements[i].indiceelement].indicevert, listepolyhedre[-1+listeelements[i].indiceelement].couleurbord, listepolyhedre[-1+listeelements[i].indiceelement].couleurfond, listepolyhedre[-1+listeelements[i].indiceelement].reflechientrant, listepolyhedre[-1+listeelements[i].indiceelement].reflechisortant); end; mdpolycercle: begin for j:=1 to listepolycercle[-1+listeelements[i].indiceelement].nombresommet do begin ttpoly[j].ax:=listepolycercle[-1+listeelements[i].indiceelement].messommets[j].ax+dx; ttpoly[j].ay:=listepolycercle[-1+listeelements[i].indiceelement].messommets[j].ay+dy; ttsom[j].ax:=listepolycercle[-1+listeelements[i].indiceelement].mess[j].ax+dx; ttsom[j].ay:=listepolycercle[-1+listeelements[i].indiceelement].mess[j].ay+dy; end; listepolycercle[-1+listeelements[i].indiceelement].create( listepolycercle[-1+listeelements[i].indiceelement].nombresommet, ttpoly,ttsom, listepolycercle[-1+listeelements[i].indiceelement].rectiligne, listepolycercle[-1+listeelements[i].indiceelement].indicerouge, listepolycercle[-1+listeelements[i].indiceelement].indicebleu, listepolycercle[-1+listeelements[i].indiceelement].indicevert, listepolycercle[-1+listeelements[i].indiceelement].couleurbord, listepolycercle[-1+listeelements[i].indiceelement].couleurfond, listepolycercle[-1+listeelements[i].indiceelement].reflechientrant, listepolycercle[-1+listeelements[i].indiceelement].reflechisortant) ; end; mdsphere: listesphere[-1+listeelements[i].indiceelement].create( listesphere[-1+listeelements[i].indiceelement].cx+dx, listesphere[-1+listeelements[i].indiceelement].cy+dy, listesphere[-1+listeelements[i].indiceelement].rayon, listesphere[-1+listeelements[i].indiceelement].indicerouge, listesphere[-1+listeelements[i].indiceelement].indicebleu, listesphere[-1+listeelements[i].indiceelement].indicevert, listesphere[-1+listeelements[i].indiceelement].couleurbord, listesphere[-1+listeelements[i].indiceelement].couleurfond, listesphere[-1+listeelements[i].indiceelement].reflechientrant, listesphere[-1+listeelements[i].indiceelement].reflechisortant); mdprisme: listeprisme[-1+listeelements[i].indiceelement].create( listeprisme[-1+listeelements[i].indiceelement].gx+dx, listeprisme[-1+listeelements[i].indiceelement].gy+dy, listeprisme[-1+listeelements[i].indiceelement].ax+dx, listeprisme[-1+listeelements[i].indiceelement].ay+dy, listeprisme[-1+listeelements[i].indiceelement].bx+dx, listeprisme[-1+listeelements[i].indiceelement].by+dy, listeprisme[-1+listeelements[i].indiceelement].indicerouge, listeprisme[-1+listeelements[i].indiceelement].indicebleu, listeprisme[-1+listeelements[i].indiceelement].indicevert, listeprisme[-1+listeelements[i].indiceelement].couleurbord, listeprisme[-1+listeelements[i].indiceelement].couleurfond, listeprisme[-1+listeelements[i].indiceelement].reflechientrant, listeprisme[-1+listeelements[i].indiceelement].reflechisortant); end; {du case et de la boucle} recalculeiso; end; function diaphragme.create(_cx,_cy,_a1x,_a1y,_a2x,_a2y:extended; _couleur:tcolor; _epaisseur:integer):boolean; begin cx:=_cx; cy:=_cy; a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; rint:=sqrt(sqr(a1x-cx)+sqr(a1y-cy)); rext:=sqrt(sqr(a2x-cx)+sqr(a2y-cy)); anglepolaire:=donneanglepolairedanspipi(a1x-cx,a1y-cy); a2x:=cx+rext*cos(anglepolaire); a2y:=cy+rext*sin(anglepolaire); {on les recalcule en cas de pbe d'alignement} couleur:=_couleur; epaisseur:=_epaisseur; ap1x:=2*cx-a1x; ap2x:=2*cx-a2x; ap1y:=2*cy-a1y; ap2y:=2*cy-a2y; if ( (a1x>xxmax) or (a1xyymax) or (a1yxxmax) or (ap1xyymax) or (ap1yxxmax) or (a2xyymax) or (a2yxxmax) or (ap2xyymax) or (ap2yrext) or (abs(rint-rext)xxmax) or (axyymax) or (ayxxmax) or (cxyymax) or (cyxxmax) or (c1xyymax) or (c1yxxmax) or (c2xyymax) or (c2yxxmax) or (axyymax) or (ayxxmax) or (cxyymax) or (cyxxmax) or (c1xyymax) or (c1yxxmax) or (c2xyymax) or (c2yxxmax) or (a1xyymax) or (a1yxxmax) or (ap1xyymax) or (ap1yxxmax) or (a2xyymax) or (a2yxxmax) or (ap2xyymax) or (ap2yrext) or (abs(rint-rext)xxmax) or (xyymax) or (y1 then begin arccos:=0; exit; end; if x=0 then begin arccos:=Pi/2; exit; end; if x>0 then begin arccos:=arctan(sqrt(1-sqr(x))/x); exit; end; if x<0 then begin arccos:=arctan(sqrt(1-sqr(x))/x)+pi; exit; end; end; function MiroirConique.create2(_fx,_fy,_theta0,_theta1,_theta2,_excentricite,_parametre:extended; _concave:boolean; _couleur,_couleuraxe:tcolor; _hachures,_axefocal:boolean):boolean; var toto:extended; monmax_x,monmax_y,monmin_x,monmin_y:extended; jj:integer; begin couleuraxe:=_couleuraxe; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; fx:=_fx; fy:=_fy; theta0:=_theta0; theta1:=_theta1; theta2:=_theta2; excentricite:=abs(_excentricite); if theta1<0 then theta1:=theta1+2*Pi*(int(-theta1/2/Pi)+1); if theta2<0 then theta2:=theta2+2*Pi*(int(-theta2/2/Pi)+1); theta1:=frac(theta1/2/pi)*2*pi; theta2:=frac(theta2/2/pi)*2*pi; if theta1>=theta2 then theta2:=theta2+2*pi; parametre:=abs(_parametre); concave:=_concave; sx:=fx+parametre/(1+excentricite)*cos(theta0); sy:=fy+parametre/(1+excentricite)*sin(theta0); if ((fx>xxmax) or (fxyymax) or (fy1 then begin toto:=theta1-theta0; if toto<-pi then toto:=toto+2*pi; if toto>pi then toto:=toto-2*pi; if ((toto>arccos(-1/excentricite)) or (toto<-arccos(-1/excentricite))) then begin create2:=false; exit; end; toto:=theta2-theta0; if toto<-pi then toto:=toto+2*pi; if toto>pi then toto:=toto-2*pi; if ((toto>arccos(-1/excentricite)) or (toto<-arccos(-1/excentricite))) then begin create2:=false; exit; end; end; a1x:=fx+cos(theta1)*parametre/(1+excentricite*cos(theta1-theta0)); a1y:=fy+sin(theta1)*parametre/(1+excentricite*cos(theta1-theta0)); a2x:=fx+cos(theta2)*parametre/(1+excentricite*cos(theta2-theta0)); a2y:=fy+sin(theta2)*parametre/(1+excentricite*cos(theta2-theta0)); sx:=fx+cos(theta0)*parametre/(1+excentricite); sy:=fy+sin(theta0)*parametre/(1+excentricite); monmax_x:=fx+cos(theta1)*parametre/(1+excentricite*cos(theta1-theta0)); monmax_y:=fy+sin(theta1)*parametre/(1+excentricite*cos(theta1-theta0)); monmin_x:=monmax_x; monmin_y:=monmax_y; for jj:=1 to 200 do begin monmax_x:=maximum(fx+cos(theta1+(theta2-theta1)*jj/200)*parametre/(1+excentricite*cos(theta1+(theta2-theta1)*jj/200-theta0)),monmax_x); monmin_x:=minimum(fx+cos(theta1+(theta2-theta1)*jj/200)*parametre/(1+excentricite*cos(theta1+(theta2-theta1)*jj/200-theta0)),monmin_x); monmax_y:=maximum(fy+sin(theta1+(theta2-theta1)*jj/200)*parametre/(1+excentricite*cos(theta1+(theta2-theta1)*jj/200-theta0)),monmax_y); monmin_y:=minimum(fy+sin(theta1+(theta2-theta1)*jj/200)*parametre/(1+excentricite*cos(theta1+(theta2-theta1)*jj/200-theta0)),monmin_y); end; if ((monmin_xxxmax) or (monmin_yyymax) ) then begin create2:=false; exit; end; create2:=true; modifie:=true; end; function MiroirConique.create(_fx,_fy,_sx,_sy,_a1x,_a1y,_a2x,_a2y:extended; _concave:boolean; _couleur,_couleuraxe:tcolor; _hachures,_axefocal:boolean):boolean; var fs,fm:extended; monmax_x,monmax_y,monmin_x,monmin_y:extended; jj:integer; label 159; begin couleuraxe:=_couleuraxe; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; fx:=_fx; fy:=_fy; sx:=_sx; sy:=_sy; concave:=_concave; if ( (a1x>xxmax) or (a1xxxmax) or (a2xyymax) or (a1yyymax) or (a2yxxmax) or (monmin_yyymax) ) then begin create:=false; exit; end; create:=true; modifie:=true; end; procedure miroirconique.dessine(mc:tmonbitmap); var pas,theta,r,r1,ract,thetaact,nx,ny,ttai:extended; nombrepas,i:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); ract:=parametre/(1+excentricite*cos(theta1-theta0)); thetaact:=theta1; theta:=theta1; //pas:=ttai/200/ract/zoomfactor; pas:=abs(theta2-theta1)/180; while (theta0 then for i:=1 to nombrepolyhedre do if listepolyhedre[-1+i].dispersif then unmilieudispersif:=true; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do if listepolycercle[-1+i].dispersif then unmilieudispersif:=true; if nombresphere>0 then for i:=1 to nombresphere do if listesphere[-1+i].dispersif then unmilieudispersif:=true; if nombrelec>0 then for i:=1 to nombrelec do if listelec[-1+i].dispersif then unmilieudispersif:=true; if nombreprisme>0 then for i:=1 to nombreprisme do if listeprisme[-1+i].dispersif then unmilieudispersif:=true; end; procedure Rafraichit; var i,j,iii,n1,n2:integer; tt1,tt2,rra:extended; label 3012,628; begin optionsurfacesonde:=false; retaillepsegment(listesegment,nombretotalsegment,0); retaillepsegment(listenormale,nombrenormale,0); if nombreanglesatracer>0 then begin retaillepangle(listeanglesatracer,nombreanglesatracer,0); nombreanglesatracer:=0; end; nombretotalsegment:=0; nombreenfant:=0; nombrenormale:=0; creeprayon(listerayonenfant,0); if nombrerayon>0 then for i:=1 to nombrerayon do if not( (listerayon[-1+i].couleur=clblack) and (unmilieudispersif or (nombrereseau>0))) then calculesegment0(listerayon[-1+i].ax, listerayon[-1+i].ay,listerayon[-1+i].kx,listerayon[-1+i].ky,listerayon[-1+i].anglepolaire,listerayon[-1+i].epaisseur, listerayon[-1+i].couleur,listerayon[-1+i].vav, listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment) else begin retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clred,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clgreen,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clblue,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listesourceponctuelle[-1+i].calculesegment; if nombreondeplane>0 then for i:=1 to nombreondeplane do listeondeplane[-1+i].calculesegment; if nombreenfant=0 then goto 3012; i:=0; 628: inc(i); calculesegment0(listerayonenfant[-1+i].ax, listerayonenfant[-1+i].ay,listerayonenfant[-1+i].kx,listerayonenfant[-1+i].ky,listerayonenfant[-1+i].anglepolaire, listerayonenfant[-1+i].epaisseur, listerayonenfant[-1+i].couleur,listerayonenfant[-1+i].vav, listerayonenfant[-1+i].vaa,listerayonenfant[-1+i].nombremaxenfant,listerayonenfant[-1+i].maxsegment); if i0 then for i:=1 to nombregroupe do listegroupe[-1+i].recalculeiso; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do listepolycercle[-1+i].dessine(BIBI); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do listepolyhedre[-1+i].dessine(BIBI); if nombresphere>0 then for i:=1 to nombresphere do listesphere[-1+i].dessine(BIBI); if nombrelec>0 then for i:=1 to nombrelec do listelec[-1+i].dessine(BIBI); if nombremiroirplan>0 then for i:=1 to nombremiroirplan do ListeMiroirPlan[-1+i].dessine(BIBI); if nombrereseau>0 then for i:=1 to nombrereseau do Listereseau[-1+i].dessine(BIBI); if nombrefleche>0 then for i:=1 to nombrefleche do ListeFleche[-1+i].dessine(BIBI); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do ListeMiroirconique[-1+i].dessine(BIBI); if nombrerayon>0 then for i:=1 to nombrerayon do listerayon[-1+i].dessine(BIBI); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listesourceponctuelle[-1+i].dessine(BIBI); if nombreondeplane>0 then for i:=1 to nombreondeplane do listeondeplane[-1+i].dessine(BIBI); if nombremscopa>0 then for i:=1 to nombremscopa do listemscopa[-1+i].dessine(BIBI); if nombremscore>0 then for i:=1 to nombremscore do listemscore[-1+i].dessine(BIBI); if nombremscere>0 then for i:=1 to nombremscere do listemscere[-1+i].dessine(BIBI); if nombremscepa>0 then for i:=1 to nombremscepa do listemscepa[-1+i].dessine(BIBI); if nombrelmc>0 then for i:=1 to nombrelmc do listelmc[-1+i].dessine(BIBI); if nombrelmd>0 then for i:=1 to nombrelmd do listelmd[-1+i].dessine(BIBI); if nombreecran>0 then for i:=1 to nombreecran do listeecran[-1+i].dessine(BIBI); if nombreoeil>0 then for i:=1 to nombreoeil do listeoeil[-1+i].dessine(BIBI); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do listediaphragme[-1+i].dessine(BIBI); if nombrelsr>0 then for i:=1 to nombrelsr do listelsr[-1+i].dessine(BIBI); if nombremetre>0 then for i:=1 to nombremetre do listemetre[-1+i].dessine(BIBI); if nombreangle>0 then for i:=1 to nombreangle do listeangle[-1+i].dessine(BIBI); if nombretexte>0 then for i:=1 to nombretexte do listetexteaffiche[-1+i].dessine(BIBI); if nombreanglesatracer>0 then for i:=1 to nombreanglesatracer do listeanglesatracer[-1+i].dessinebis(BIBI); if nombregroupe>0 then for i:=1 to nombregroupe do listegroupe[-1+i].dessine(BIBI); if nombreprisme>0 then for i:=1 to nombreprisme do listeprisme[-1+i].dessine(BIBI); if (nombrelmc+nombrelmd+nombremscopa+nombremscepa=0) then for i:=1 to nombresourceponctuelle do if listesourceponctuelle[-1+i].tracersurfacesonde then if not(listesourceponctuelle[-1+i].sourcevirtuelle) then if listesourceponctuelle[-1+i].nombrecheminsoptiques>0 then begin tt1:=listesourceponctuelle[-1+i].ray[1].anglepolaire; tt2:=listesourceponctuelle[-1+i].ray[listesourceponctuelle[-1+i].nombrederayon].anglepolaire; if tt20 then begin for j:=1 to listeondeplane[-1+i].nombrecheminsoptiques do begin optionsurfacesonde:=true; premierpointsurfacesonde:=true; cheminactuelaobtenir:=listeondeplane[-1+i].listecheminsoptiques[j]; for iii:=1 to maxrayonsrecherchesurfacesonde do begin calculesegment0(listeondeplane[-1+i].a1x+ (iii-1)*(listeondeplane[-1+i].a2x-listeondeplane[-1+i].a1x)/ (maxrayonsrecherchesurfacesonde-1), listeondeplane[-1+i].a1y+ (iii-1)*(listeondeplane[-1+i].a2y-listeondeplane[-1+i].a1y)/ (maxrayonsrecherchesurfacesonde-1), listeondeplane[-1+i].ray[1].kx, listeondeplane[-1+i].ray[1].ky, listeondeplane[-1+i].ray[1].anglepolaire ,1,listeondeplane[-1+i].couleur,'','',0,listeondeplane[-1+i].maxsegment); BIBI.trait(listesegment[-1+nombretotalsegment].a1x, listesegment[-1+nombretotalsegment].a1y, listesegment[-1+nombretotalsegment].a2x, listesegment[-1+nombretotalsegment].a2y,1, listesegment[-1+nombretotalsegment].couleur,psdot,pmcopy,true); end; end; end; n2:=nombretotalsegment; nombretotalsegment:=n1; DessineTousLesSegments(BIBI); finally {//form1.monimage1.free;} end; //form1.image1.Picture.Assign(bibi); form1.ScrollBox1.Refresh; form1.Image1.Refresh; {bibi.free; BIBI:=tmonbitmap.Create; BIBI.LimitesEtAxes(xxmin,xxmax,yymin,yymax,yymin,yymax,form1.image1.width, form1.image1.height,'',policedefaut,true,clwhite,false,0,clblack,false,0,0,clblack, policedefaut,false,false,{grillex,grilley,}1,clblack,clblack,'','','','','','',false,false,false); BIBI.background(couleurfondsimulation); } nombretotalsegment:=n2; end; procedure Traitegroupement(Sender: TObject; Shift: TShiftState; X, Y: Integer); var x1,y1,tx,ty,distance,lambda,xx1,yy1,dtheta,AiAj,ux,uy:extended; i,j:integer; boum:string; label 314; begin graphepresent:=true; BIBI.convert(x,y,x1,y1,true); BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; affichecoordonnees(x1,y1); distance:=sqrt(sqr(xxmax-xxmin)+sqr(yymin-yymax)); {on recherche si le curseur est proche d'un centre} if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1)) then begin boum:=rsCeTexte; goto 314; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteSphRe; goto 314; end; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].gx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].gy-y1)<=ty*1.1)) then begin boum:=rsCePrisme; goto 314; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeTrait; goto 314; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetOeil; goto 314; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirPlan; goto 314; end; if nombrereseau>0 then for i:=1 to nombrereseau do if ((abs(listereseau[-1+i].cx-x1)<=tx*1.1) and (abs(listereseau[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeReSeau; goto 314; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirConi; goto 314; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do if ((abs(listepolyhedre[-1+i].xiso-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].yiso-y1)<=ty*1.1)) then begin boum:=rsCePolygone; goto 314; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do if ((abs(listepolycercle[-1+i].xiso-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].yiso-y1)<=ty*1.1)) then begin boum:=rsCePolycercle; goto 314; end; for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetCran; goto 314; end; for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeDiaphragme; goto 314; end; for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteLameSem; goto 314; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirConc; goto 314; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirConv; goto 314; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR; goto 314; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR2; goto 314; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then begin boum:=rsCetteLentill; goto 314; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then begin boum:=rsCetteLentill2; goto 314; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then begin boum:=rsCetteLentill3; goto 314; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeRayonLumin; goto 314; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].gx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].gy-y1)<=ty*1.1)) then begin boum:=rsCetteSourceP; goto 314; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCetteOndePla; goto 314; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetAngle; goto 314; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].cx-x1)<=tx*1.1) and (abs(listemetre[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteMesureD; goto 314; end; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=rsFaitesPasser; exit; 314: form1.image1.Cursor:=crgroupe; form1.StatusBar1.Panels[2].text:=Format(rsClicGauchePo, [boum]); exit; end; procedure TraiteModif(Sender: TObject; Shift: TShiftState; X, Y: Integer); var x1,y1,tx,ty,distance,lambda,xx1,yy1,dtheta,AiAj,ux,uy,hx,hy,dAB,dIS:extended; i,j:integer; label 314, 315,316,317,319,320,321; begin graphepresent:=true; BIBI.convert(x,y,x1,y1,true); if bloqueaxe then begin if (ssalt in shift) then x1:=lastxr; if (ssctrl in shift) then y1:=lastyr; end; BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; affichecoordonnees(x1,y1); distance:=sqrt(sqr(xxmax-xxmin)+sqr(yymin-yymax)); {on recherche si le curseur est proche d'un centre} if not(modifencours) then begin if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1)) then goto 314; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a1x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a2x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx+listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then goto 315; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy+listesphere[-1+i].rayon-y1)<=ty*1.1)) then goto 315; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then goto 315; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-listesphere[-1+i].rayon-y1)<=ty*1.1)) then goto 315; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].ax-x1)<=tx*1.1) and (abs(listeoeil[-1+i].ay-y1)<=ty*1.1)) then goto 315; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombrereseau>0 then for i:=1 to nombrereseau do if ((abs(listereseau[-1+i].cx-x1)<=tx*1.1) and (abs(listereseau[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombrereseau>0 then for i:=1 to nombrereseau do if ((abs(listereseau[-1+i].a1x-x1)<=tx*1.1) and (abs(listereseau[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombrereseau>0 then for i:=1 to nombrereseau do if ((abs(listereseau[-1+i].a2x-x1)<=tx*1.1) and (abs(listereseau[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1)) then goto 314; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].fx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].fy-y1)<=ty*1.1)) then goto 316; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].gx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].gy-y1)<=ty*1.1)) then goto 314; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].ax-x1)<=tx*1.1) and (abs(listeprisme[-1+i].ay-y1)<=ty*1.1)) then goto 315; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].bx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].by-y1)<=ty*1.1)) then goto 321; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].cx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].cy-y1)<=ty*1.1)) then goto 321; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs(listepolyhedre[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].messommets[j].ay-y1)<=ty*1.1)) then goto 315; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs((listepolyhedre[-1+i].messommets[j].ax+listepolyhedre[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolyhedre[-1+i].messommets[j].ay+listepolyhedre[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then goto 314; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs(listepolycercle[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].messommets[j].ay-y1)<=ty*1.1)) then goto 315; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs((listepolycercle[-1+i].messommets[j].ax+listepolycercle[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolycercle[-1+i].messommets[j].ay+listepolycercle[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then goto 314; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if not(listepolycercle[-1+i].rectiligne[j]) then if ((abs(listepolycercle[-1+i].mess[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].mess[j].ay-y1)<=ty*1.1)) then goto 320; for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1)) then goto 314; for i:=1 to nombregroupe do if ((abs(listegroupe[-1+i].isox-x1)<=tx*1.1) and (abs(listegroupe[-1+i].isoy-y1)<=ty*1.1)) then goto 314; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a1x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a2x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a2y-y1)<=ty*1.1)) then goto 315; for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a1y-y1)<=ty*1.1)) then goto 319; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap1y-y1)<=ty*1.1)) then goto 319; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap2y-y1)<=ty*1.1)) then goto 315; for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a1x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a2x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then goto 314; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].fy-y1)<=ty*1.1)) then goto 316; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then goto 314; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].fy-y1)<=ty*1.1)) then goto 316; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then goto 314; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].cx-x1)<=tx*1.1) and (abs(listemscore[-1+i].cy-y1)<=ty*1.1)) then goto 317; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then goto 314; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].cx-x1)<=tx*1.1) and (abs(listemscere[-1+i].cy-y1)<=ty*1.1)) then goto 317; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then goto 314; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f1y-y1)<=ty*1.1)) then goto 316; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f2y-y1)<=ty*1.1)) then goto 316; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then goto 314; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s1x-x1)<=tx*1.1) and (abs(listelec[-1+i].s1y-y1)<=ty*1.1)) then goto 315; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s2x-x1)<=tx*1.1) and (abs(listelec[-1+i].s2y-y1)<=ty*1.1)) then goto 315; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then goto 314; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f1y-y1)<=ty*1.1)) then goto 316; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f2y-y1)<=ty*1.1)) then goto 316; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then goto 314; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].ax-x1)<=tx*1.1) and (abs(listerayon[-1+i].ay-y1)<=ty*1.1)) then goto 315; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].bx-x1)<=tx*1.1) and (abs(listerayon[-1+i].by-y1)<=ty*1.1)) then goto 315; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].gx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].gy-y1)<=ty*1.1)) then goto 314; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].sx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].sy-y1)<=ty*1.1)) then goto 315; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a1x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a2x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1)) then goto 314; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1)) then goto 315; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a2x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].dx-x1)<=tx*1.1) and (abs(listeangle[-1+i].dy-y1)<=ty*1.1)) then goto 314; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a1x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1)) then goto 315; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a2x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a1x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a1y-y1)<=ty*1.1)) then goto 315; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a2x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a2y-y1)<=ty*1.1)) then goto 315; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].cx-x1)<=tx*1.1) and (abs(listemetre[-1+i].cy-y1)<=ty*1.1)) then goto 314; form1.image1.Cursor:=crdepla; form1.StatusBar1.Panels[2].text:=rsFaitesPasser2; exit; 314: form1.image1.Cursor:=crTranslation; form1.StatusBar1.Panels[2].text:=rsClicGauchePo2; exit; 315: form1.image1.Cursor:=crrotation; form1.StatusBar1.Panels[2].text:=rsClicGauchePo3; exit; 317: form1.image1.Cursor:=crdepcentre; form1.StatusBar1.Panels[2].text:=rsClicGauchePo4; exit; 316: form1.image1.Cursor:=crdepfoyer; form1.StatusBar1.Panels[2].text:=rsClicGauchePo5; exit; 319: form1.image1.Cursor:=crtaille; form1.StatusBar1.Panels[2].text:=rsClicGauchePo6; exit; 321: form1.image1.Cursor:=crtaille; form1.StatusBar1.Panels[2].text:=rsClicGauchePo7; exit; 320: form1.image1.Cursor:=crdepsommet; form1.StatusBar1.Panels[2].text:=rsClicGauchePo8; exit; end; if moderotation then begin case typeelementmodif of mdsphere: begin if ((x1<>listesphere[-1+indiceelementmodif].cx) or (y1<>listesphere[-1+indiceelementmodif].cy)) then begin retaillepsphere(listesphere,nombresphere,nombresphere+1); if listesphere[-1+nombresphere+1].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, sqrt(sqr(x1-listesphere[-1+indiceelementmodif].cx)+ sqr(y1-listesphere[-1+indiceelementmodif].cy)), listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) then listesphere[-1+indiceelementmodif].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, sqrt(sqr(x1-listesphere[-1+indiceelementmodif].cx)+ sqr(y1-listesphere[-1+indiceelementmodif].cy)), listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) else listesphere[-1+indiceelementmodif].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant); retaillepsphere(listesphere,nombresphere+1,nombresphere); Rafraichit; end; end; mdprisme: begin if ((tprirot=tpa) and ((x1<>listeprisme[-1+indiceelementmodif].ax) or (y1<>listeprisme[-1+indiceelementmodif].ay))) then begin retaillePprisme(listeprisme,nombreprisme,nombreprisme+1); if listeprisme[-1+nombreprisme+1].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)) , listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) then listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)) , listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) else listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay, listeprisme[-1+indiceelementmodif].bx, listeprisme[-1+indiceelementmodif].by, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant); retaillePprisme(listeprisme,nombreprisme+1,nombreprisme); Rafraichit; end; if ((tprirot=tpc) and ((x1<>listeprisme[-1+indiceelementmodif].cx) or (y1<>listeprisme[-1+indiceelementmodif].cy))) then begin hx:=listeprisme[-1+indiceelementmodif].gx -0.5*(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx); hy:=listeprisme[-1+indiceelementmodif].gy -0.5*(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy); ux:=(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx)/ sqrt(sqr(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx)+ sqr(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy)); uy:=(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy)/ sqrt(sqr(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx)+ sqr(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy)); lambda:=(x1-hx)*ux+(y1-hy)*uy; retaillePprisme(listeprisme,nombreprisme,nombreprisme+1); if listeprisme[-1+nombreprisme+1].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , x1-lambda*ux, y1-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) then listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , x1-lambda*ux, y1-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) else listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay, listeprisme[-1+indiceelementmodif].bx, listeprisme[-1+indiceelementmodif].by, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant); retaillePprisme(listeprisme,nombreprisme+1,nombreprisme); Rafraichit; end; if ((tprirot=tpb) and ((x1<>listeprisme[-1+indiceelementmodif].bx) or (y1<>listeprisme[-1+indiceelementmodif].by))) then begin ux:=cos(donneanglepolairedans02pi(listeprisme[-1+indiceelementmodif].bx-listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].by-listeprisme[-1+indiceelementmodif].ay)); uy:=sin(donneanglepolairedans02pi(listeprisme[-1+indiceelementmodif].bx-listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].by-listeprisme[-1+indiceelementmodif].ay)); lambda:=-(x1-listeprisme[-1+indiceelementmodif].ax)*ux-(y1-listeprisme[-1+indiceelementmodif].ay)*uy; retaillePprisme(listeprisme,nombreprisme,nombreprisme+1); if listeprisme[-1+nombreprisme+1].create( listeprisme[-1+indiceelementmodif].ax+2/3*abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*cos(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ay+2/3* abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*sin(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , listeprisme[-1+indiceelementmodif].ax-lambda*ux, listeprisme[-1+indiceelementmodif].ay-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) then listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].ax+2/3*abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*cos(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ay+2/3* abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*sin(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , listeprisme[-1+indiceelementmodif].ax-lambda*ux, listeprisme[-1+indiceelementmodif].ay-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) else listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay, listeprisme[-1+indiceelementmodif].bx, listeprisme[-1+indiceelementmodif].by, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant); retaillePprisme(listeprisme,nombreprisme+1,nombreprisme); Rafraichit; end; end; mdmetre: begin if ((tprot=tpa1) and ((x1<>listemetre[-1+indiceelementmodif].a2x) or (y1<>listemetre[-1+indiceelementmodif].a2y))) then begin retaillePmetre(listemetre,nombremetre,nombremetre+1); if listemetre[-1+nombremetre+1].create( x1,y1, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y) then listemetre[-1+indiceelementmodif].create( x1,y1, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y) else listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y); retaillePmetre(listemetre,nombremetre+1,nombremetre); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemetre[-1+indiceelementmodif].a1x) or (y1<>listemetre[-1+indiceelementmodif].a1y))) then begin retaillePmetre(listemetre,nombremetre,nombremetre+1); if listemetre[-1+nombremetre+1].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, x1,y1) then listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, x1,y1) else listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y); Rafraichit; end; end; {du cas metre} mdfleche: begin if ((tprot=tpa1) and ((x1<>listefleche[-1+indiceelementmodif].a2x) or (y1<>listefleche[-1+indiceelementmodif].a2y))) then begin retaillePfleche(listefleche,nombrefleche,nombrefleche+1); if listefleche[-1+nombrefleche+1].create( x1,y1, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) then listefleche[-1+indiceelementmodif].create( x1,y1, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) else listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2); retaillePfleche(listefleche,nombrefleche+1,nombrefleche); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listefleche[-1+indiceelementmodif].a1x) or (y1<>listefleche[-1+indiceelementmodif].a1y))) then begin retaillePfleche(listefleche,nombrefleche,nombrefleche+1); if listefleche[-1+nombrefleche+1].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y,x1,y1, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) then listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y,x1,y1, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) else listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2); retaillePfleche(listefleche,nombrefleche+1,nombrefleche); Rafraichit; end; end; mdangle: begin if ((tprot=tpa1) and ((x1<>listeangle[-1+indiceelementmodif].a2x) or (y1<>listeangle[-1+indiceelementmodif].a2y))) then begin retaillePangle(listeangle,nombreangle,nombreangle+1); if listeangle[-1+nombreangle+1].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, x1,y1, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y) then listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, x1,y1, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y) else listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y); retaillePangle(listeangle,nombreangle+1,nombreangle); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeangle[-1+indiceelementmodif].a1x) or (y1<>listeangle[-1+indiceelementmodif].a1y))) then begin retaillePangle(listeangle,nombreangle,nombreangle+1); if listeangle[-1+nombreangle+1].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, x1,y1) then listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, x1,y1) else listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y); retaillePangle(listeangle,nombreangle+1,nombreangle); Rafraichit; end; if ((tprot=tpce) and ((x1<>listeangle[-1+indiceelementmodif].cx) or (y1<>listeangle[-1+indiceelementmodif].cy))) then begin retaillePangle(listeangle,nombreangle,nombreangle+1); if listeangle[-1+nombreangle+1].create(x1,y1, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y ) then listeangle[-1+indiceelementmodif].create(x1,y1, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y) else listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y); retaillePangle(listeangle,nombreangle+1,nombreangle); Rafraichit; end; end; {du cas angle} mdmiroirplan: begin if ((tprot=tpa1) and ((x1<>listemiroirplan[-1+indiceelementmodif].a2x) or (y1<>listemiroirplan[-1+indiceelementmodif].a2y))) then begin retaillePMiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan+1); if listemiroirplan[-1+nombremiroirplan+1].create( x1,y1, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) then listemiroirplan[-1+indiceelementmodif].create( x1,y1, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) else listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures); retaillePMiroirplan(listemiroirplan,nombremiroirplan+1,nombremiroirplan); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemiroirplan[-1+indiceelementmodif].a1x) or (y1<>listemiroirplan[-1+indiceelementmodif].a1y))) then begin retaillePMiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan+1); if listemiroirplan[-1+nombremiroirplan+1].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, x1,y1, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) then listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, x1,y1, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) else listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures); retaillePMiroirplan(listemiroirplan,nombremiroirplan+1,nombremiroirplan); Rafraichit; end; end; {du cas miroir plan} mdreseau: begin if ((tprot=tpa1) and ((x1<>listereseau[-1+indiceelementmodif].a2x) or (y1<>listeReseau[-1+indiceelementmodif].a2y))) then begin retaillePReseau(listeReseau,nombreReseau,nombreReseau+1); if listeReseau[-1+nombreReseau+1].create( x1,y1, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max) then listeReseau[-1+indiceelementmodif].create( x1,y1, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max) else listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max); retaillePReseau(listeReseau,nombreReseau+1,nombreReseau); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeReseau[-1+indiceelementmodif].a1x) or (y1<>listeReseau[-1+indiceelementmodif].a1y))) then begin retaillePReseau(listeReseau,nombreReseau,nombreReseau+1); if listeReseau[-1+nombreReseau+1].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, x1,y1, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max) then listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, x1,y1, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max) else listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max); retaillePReseau(listeReseau,nombreReseau+1,nombreReseau); Rafraichit; end; end; {du cas reseau} mdpolyhedre: if ( (x1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ay)) then begin retaillePpolyhedre(listepolyhedre,nombrepolyhedre,nombrepolyhedre+1); for i:=1 to listepolyhedre[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolyhedre[-1+indiceelementmodif].messommets[i].ax; ttpoly[i].ay:=listepolyhedre[-1+indiceelementmodif].messommets[i].ay; end; ttpoly[indicepointdeplace].ax:=x1; ttpoly[indicepointdeplace].ay:=y1; if listepolyhedre[-1+nombrepolyhedre+1].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) then listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) else listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, listepolyhedre[-1+indiceelementmodif].messommets, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant); retaillePpolyhedre(listepolyhedre,nombrepolyhedre+1,nombrepolyhedre); Rafraichit; end; mdpolycercle: begin if ((tprot=tpa1) and ( (x1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))) then begin retaillePpolycercle(listepolycercle,nombrepolycercle,nombrepolycercle+1); for i:=1 to listepolycercle[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolycercle[-1+indiceelementmodif].messommets[i].ax; ttpoly[i].ay:=listepolycercle[-1+indiceelementmodif].messommets[i].ay; ttsom[i].ax:=listepolycercle[-1+indiceelementmodif].mess[i].ax; ttsom[i].ay:=listepolycercle[-1+indiceelementmodif].mess[i].ay; end; ttpoly[indicepointdeplace].ax:=x1; ttpoly[indicepointdeplace].ay:=y1; {si le segment précédent est un arc de cercle} if (indicepointdeplace>1) and not(listepolycercle[-1+indiceelementmodif].rectiligne[indicepointdeplace-1]) then begin dAB:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax)+ sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay)); dIS:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ax- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))+ sqr(listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ay- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))); if (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax)* (listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ay-0.5* (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay)* (listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ax-0.5* (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))<0 then begin ttsom[indicepointdeplace-1].ax:=(y1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+x1); ttsom[indicepointdeplace-1].ay:=-(x1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+y1); end else begin ttsom[indicepointdeplace-1].ax:=-(y1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+x1); ttsom[indicepointdeplace-1].ay:=(x1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+y1); end; end; {si le segment précédent est un arc de cercle} if (indicepointdeplace=1) and not(listepolycercle[-1+indiceelementmodif].rectiligne[listepolycercle[-1+indiceelementmodif].nombresommet]) then begin dAB:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax)+ sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay)); dIS:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ax- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))+ sqr(listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ay- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))); if (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax)* (listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ay-0.5* (listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay)* (listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ax-0.5* (listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))<0 then begin ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ax:=(y1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+x1); ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ay:=-(x1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+y1); end else begin ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ax:=-(y1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+x1); ; ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ay:=(x1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+y1); end; end; {si le segment suivant est un arc de cercle} if (indicepointdeplacelisteoeil[-1+indiceelementmodif].cx) or (y1<>listeoeil[-1+indiceelementmodif].cy))) then begin retaillePoeil(listeoeil,nombreoeil,nombreoeil+1); if listeoeil[-1+nombreoeil+1].create( listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].cy, x1,y1, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur) then listeoeil[-1+indiceelementmodif].create( listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].cy, x1,y1, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur) else listeoeil[-1+indiceelementmodif].create( listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].cy, listeoeil[-1+indiceelementmodif].ax, listeoeil[-1+indiceelementmodif].ay, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur); retaillePoeil(listeoeil,nombreoeil+1,nombreoeil); Rafraichit; end; end; mdecran: begin if ((tprot=tpa1) and ((x1<>listeecran[-1+indiceelementmodif].a2x) or (y1<>listeecran[-1+indiceelementmodif].a2y))) then begin retaillePecran(listeecran,nombreecran,nombreecran+1); if listeecran[-1+nombreecran+1].create( x1,y1, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) then listeecran[-1+indiceelementmodif].create( x1,y1, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) else listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur); retaillePecran(listeecran,nombreecran+1,nombreecran); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeecran[-1+indiceelementmodif].a1x) or (y1<>listeecran[-1+indiceelementmodif].a1y))) then begin retaillePecran(listeecran,nombreecran,nombreecran+1); if listeecran[-1+nombreecran+1].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, x1,y1, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) then listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, x1,y1, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) else listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur); retaillePecran(listeecran,nombreecran+1,nombreecran); Rafraichit; end; end; {du cas ecran} mdlsr: begin if ((tprot=tpa1) and ((x1<>listelsr[-1+indiceelementmodif].a2x) or (y1<>listelsr[-1+indiceelementmodif].a2y))) then begin retaillePlsr(listelsr,nombrelsr,nombrelsr+1); if listelsr[-1+nombrelsr+1].create( x1,y1, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) then listelsr[-1+indiceelementmodif].create( x1,y1, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) else listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur); retaillePlsr(listelsr,nombrelsr+1,nombrelsr); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelsr[-1+indiceelementmodif].a1x) or (y1<>listelsr[-1+indiceelementmodif].a1y))) then begin retaillePlsr(listelsr,nombrelsr,nombrelsr+1); if listelsr[-1+nombrelsr+1].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, x1,y1, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) then listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, x1,y1, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) else listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur); retaillePlsr(listelsr,nombrelsr+1,nombrelsr); Rafraichit; end; end; {du cas lsr} mdrayon: begin if ((tprot=tpa1) and ((x1<>listerayon[-1+indiceelementmodif].bx) or (y1<>listerayon[-1+indiceelementmodif].by))) then begin retaillePrayon(listerayon,nombrerayon,nombrerayon+1); if listerayon[-1+nombrerayon+1].create(x1,y1, listerayon[-1+indiceelementmodif].bx-x1, listerayon[-1+indiceelementmodif].by-y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) then listerayon[-1+indiceelementmodif].create(x1,y1, listerayon[-1+indiceelementmodif].bx-x1, listerayon[-1+indiceelementmodif].by-y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav,listerayon[-1+indiceelementmodif].vaa , listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) else listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment); retaillePrayon(listerayon,nombrerayon+1,nombrerayon); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listerayon[-1+indiceelementmodif].ax) or (y1<>listerayon[-1+indiceelementmodif].ay))) then begin retaillePrayon(listerayon,nombrerayon,nombrerayon+1); if listerayon[-1+nombrerayon+1].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, -listerayon[-1+indiceelementmodif].ax+x1, -listerayon[-1+indiceelementmodif].ay+y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) then listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, -listerayon[-1+indiceelementmodif].ax+x1, -listerayon[-1+indiceelementmodif].ay+y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) else listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment); retaillePrayon(listerayon,nombrerayon+1,nombrerayon); Rafraichit; end; end; {du cas rayon} mdsourceponctuelle: begin if ((tprot=tpa1) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].sx) or (y1<>listesourceponctuelle[-1+indiceelementmodif].sy))) then begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].sx) or (y1<>listesourceponctuelle[-1+indiceelementmodif].sy))) then begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y,x1,y1, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y,x1,y1, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; if ((tprot=tpa0) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].a1x) or (y1<>listesourceponctuelle[-1+indiceelementmodif].a1y)) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].a2x) or (y1<>listesourceponctuelle[-1+indiceelementmodif].a2y))) then begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; end; {du cas sourceponctuelle} mdondeplane: begin if ((tprot=tpa1) and ((x1<>listeondeplane[-1+indiceelementmodif].a1x) or (y1<>listeondeplane[-1+indiceelementmodif].a1y))) then begin retaillePondeplane(listeondeplane,nombreondeplane,nombreondeplane+1); if listeondeplane[-1+nombreondeplane+1].create( listeondeplane[-1+indiceelementmodif].nombrederayon,x1,y1, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) then listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon,x1,y1, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) else listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment); retaillePondeplane(listeondeplane,nombreondeplane+1,nombreondeplane); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeondeplane[-1+indiceelementmodif].a1x) or (y1<>listeondeplane[-1+indiceelementmodif].a1y))) then begin retaillePondeplane(listeondeplane,nombreondeplane,nombreondeplane+1); if listeondeplane[-1+nombreondeplane+1].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y,x1,y1, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) then listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y,x1,y1, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) else listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment); retaillePondeplane(listeondeplane,nombreondeplane+1,nombreondeplane); Rafraichit; end; end; {du cas ondeplane} mddiaphragme: begin if (( (tprot=tpa1) or (tprot=tpap1)) and ((x1<>listediaphragme[-1+indiceelementmodif].cx) or (y1<>listediaphragme[-1+indiceelementmodif].cy))) then begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].cx)+sqr(y1-listediaphragme[-1+indiceelementmodif].cy)), listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].cx)+sqr(y1-listediaphragme[-1+indiceelementmodif].cy)), listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listediaphragme[-1+indiceelementmodif].cx) or (y1<>listediaphragme[-1+indiceelementmodif].cy))) then begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(x1-listediaphragme[-1+indiceelementmodif].ap2x,y1-listediaphragme[-1+indiceelementmodif].ap2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].ap2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].ap2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(x1-listediaphragme[-1+indiceelementmodif].ap2x,y1-listediaphragme[-1+indiceelementmodif].ap2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].ap2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].ap2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; if ((tprot=tpap2) and ((x1<>listediaphragme[-1+indiceelementmodif].cx) or (y1<>listediaphragme[-1+indiceelementmodif].cy))) then begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(-x1+listediaphragme[-1+indiceelementmodif].a2x,-y1+listediaphragme[-1+indiceelementmodif].a2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].a2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].a2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(-x1+listediaphragme[-1+indiceelementmodif].a2x,-y1+listediaphragme[-1+indiceelementmodif].a2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].a2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].a2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; end; mdmscopa: begin if ((tprot=tpa1) and ((x1<>listemscopa[-1+indiceelementmodif].a2x) or (y1<>listemscopa[-1+indiceelementmodif].a2y))) then begin retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create2( x1,y1, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create2(x1,y1, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscopa[-1+indiceelementmodif].a1x) or (y1<>listemscopa[-1+indiceelementmodif].a1y))) then begin retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y,x1,y1, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y,x1,y1, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; if ((tprot=tpfo) and ((x1<>listemscopa[-1+indiceelementmodif].sx) or (y1<>listemscopa[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscopa[-1+indiceelementmodif].sx)*(listemscopa[-1+indiceelementmodif].cx- listemscopa[-1+indiceelementmodif].sx)+(y1-listemscopa[-1+indiceelementmodif].sy)* (listemscopa[-1+indiceelementmodif].cy-listemscopa[-1+indiceelementmodif].sy))/ (sqr(listemscopa[-1+indiceelementmodif].cx-listemscopa[-1+indiceelementmodif].sx)+ sqr(listemscopa[-1+indiceelementmodif].cy-listemscopa[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscopa[-1+indiceelementmodif].sx+lambda*(listemscopa[-1+indiceelementmodif].cx- listemscopa[-1+indiceelementmodif].sx); yy1:=listemscopa[-1+indiceelementmodif].sy+lambda*(listemscopa[-1+indiceelementmodif].cy- listemscopa[-1+indiceelementmodif].sy); retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, xx1,yy1, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, xx1,yy1, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; end; {du cas mscopa} mdmscore: begin if ((tprot=tpa1) and ((x1<>listemscore[-1+indiceelementmodif].a2x) or (y1<>listemscore[-1+indiceelementmodif].a2y))) then begin retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create2(x1,y1, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create2(x1,y1, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscore[-1+indiceelementmodif].a1x) or (y1<>listemscore[-1+indiceelementmodif].a1y))) then begin retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y,x1,y1, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y,x1,y1, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; if ((tprot=tpce) and ((x1<>listemscore[-1+indiceelementmodif].sx) or (y1<>listemscore[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscore[-1+indiceelementmodif].sx)*(listemscore[-1+indiceelementmodif].cx- listemscore[-1+indiceelementmodif].sx)+(y1-listemscore[-1+indiceelementmodif].sy)* (listemscore[-1+indiceelementmodif].cy-listemscore[-1+indiceelementmodif].sy))/ (sqr(listemscore[-1+indiceelementmodif].cx-listemscore[-1+indiceelementmodif].sx)+ sqr(listemscore[-1+indiceelementmodif].cy-listemscore[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscore[-1+indiceelementmodif].sx+lambda*(listemscore[-1+indiceelementmodif].cx- listemscore[-1+indiceelementmodif].sx); yy1:=listemscore[-1+indiceelementmodif].sy+lambda*(listemscore[-1+indiceelementmodif].cy- listemscore[-1+indiceelementmodif].sy); retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, xx1,yy1, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, xx1,yy1, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; end; {du cas mscore} mdmiroirconique: begin if ((tprot=tpa2) and ((x1<>listemiroirconique[-1+indiceelementmodif].a1x) or (y1<>listemiroirconique[-1+indiceelementmodif].a1y))) then begin retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); dtheta:=donneanglepolairedans02pi(x1-listemiroirconique[-1+indiceelementmodif].a1x, y1-listemiroirconique[-1+indiceelementmodif].a1y)- donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].a2x-listemiroirconique[-1+indiceelementmodif].a1x, listemiroirconique[-1+indiceelementmodif].a2y-listemiroirconique[-1+indiceelementmodif].a1y); if listemiroirconique[-1+nombremiroirconique+1].create2( listemiroirconique[-1+indiceelementmodif].a1x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].a1y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].a1x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].a1y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal); retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; if ((tprot=tpa1) and ((x1<>listemiroirconique[-1+indiceelementmodif].a2x) or (y1<>listemiroirconique[-1+indiceelementmodif].a2y))) then begin retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); dtheta:=donneanglepolairedans02pi(x1-listemiroirconique[-1+indiceelementmodif].a2x, y1-listemiroirconique[-1+indiceelementmodif].a2y)- donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].a1x-listemiroirconique[-1+indiceelementmodif].a2x, listemiroirconique[-1+indiceelementmodif].a1y-listemiroirconique[-1+indiceelementmodif].a2y); if listemiroirconique[-1+nombremiroirconique+1].create2( listemiroirconique[-1+indiceelementmodif].a2x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].a2y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].a2x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].a2y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal); retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; if ((tprot=tpfo) and ((x1<>listemiroirconique[-1+indiceelementmodif].sx) or (y1<>listemiroirconique[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemiroirconique[-1+indiceelementmodif].sx)*(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].sx)+(y1-listemiroirconique[-1+indiceelementmodif].sy)* (listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].sy))/ (sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].sx)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemiroirconique[-1+indiceelementmodif].sx+lambda*(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].sx); yy1:=listemiroirconique[-1+indiceelementmodif].sy+lambda*(listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].sy); retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); if listemiroirconique[-1+nombremiroirconique+1].create( xx1,yy1, listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].a1x, listemiroirconique[-1+indiceelementmodif].a1y, listemiroirconique[-1+indiceelementmodif].a2x, listemiroirconique[-1+indiceelementmodif].a2y, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create( xx1,yy1, listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].a1x, listemiroirconique[-1+indiceelementmodif].a1y, listemiroirconique[-1+indiceelementmodif].a2x, listemiroirconique[-1+indiceelementmodif].a2y, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal); retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; end; {du cas miroirconique} mdmscepa: begin if ((tprot=tpa1) and ((x1<>listemscepa[-1+indiceelementmodif].a2x) or (y1<>listemscepa[-1+indiceelementmodif].a2y))) then begin retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create2( x1,y1, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create2(x1,y1, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscepa[-1+indiceelementmodif].a1x) or (y1<>listemscepa[-1+indiceelementmodif].a1y))) then begin retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y,x1,y1, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y,x1,y1, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; if ((tprot=tpfo) and ((x1<>listemscepa[-1+indiceelementmodif].sx) or (y1<>listemscepa[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscepa[-1+indiceelementmodif].sx)*(listemscepa[-1+indiceelementmodif].cx- listemscepa[-1+indiceelementmodif].sx)+(y1-listemscepa[-1+indiceelementmodif].sy)* (listemscepa[-1+indiceelementmodif].cy-listemscepa[-1+indiceelementmodif].sy))/ (sqr(listemscepa[-1+indiceelementmodif].cx-listemscepa[-1+indiceelementmodif].sx)+ sqr(listemscepa[-1+indiceelementmodif].cy-listemscepa[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscepa[-1+indiceelementmodif].sx+lambda*(listemscepa[-1+indiceelementmodif].cx- listemscepa[-1+indiceelementmodif].sx); yy1:=listemscepa[-1+indiceelementmodif].sy+lambda*(listemscepa[-1+indiceelementmodif].cy- listemscepa[-1+indiceelementmodif].sy); retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, xx1,yy1, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, xx1,yy1, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; end; {du cas mscepa} mdmscere: begin if ((tprot=tpa1) and ((x1<>listemscere[-1+indiceelementmodif].a2x) or (y1<>listemscere[-1+indiceelementmodif].a2y))) then begin retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create2( x1,y1, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create2(x1,y1, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscere[-1+indiceelementmodif].a1x) or (y1<>listemscere[-1+indiceelementmodif].a1y))) then begin retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y,x1,y1, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y,x1,y1, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; if ((tprot=tpce) and ((x1<>listemscere[-1+indiceelementmodif].sx) or (y1<>listemscere[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscere[-1+indiceelementmodif].sx)*(listemscere[-1+indiceelementmodif].cx- listemscere[-1+indiceelementmodif].sx)+(y1-listemscere[-1+indiceelementmodif].sy)* (listemscere[-1+indiceelementmodif].cy-listemscere[-1+indiceelementmodif].sy))/ (sqr(listemscere[-1+indiceelementmodif].cx-listemscere[-1+indiceelementmodif].sx)+ sqr(listemscere[-1+indiceelementmodif].cy-listemscere[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscere[-1+indiceelementmodif].sx+lambda*(listemscere[-1+indiceelementmodif].cx- listemscere[-1+indiceelementmodif].sx); yy1:=listemscere[-1+indiceelementmodif].sy+lambda*(listemscere[-1+indiceelementmodif].cy- listemscere[-1+indiceelementmodif].sy); retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, xx1,yy1, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, xx1,yy1, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; end; {du cas mscere} mdlmc: begin if ((tprot=tpa1) and ((x1<>listelmc[-1+indiceelementmodif].a2x) or (y1<>listelmc[-1+indiceelementmodif].a2y))) then begin retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create2(x1,y1, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create2(x1,y1, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelmc[-1+indiceelementmodif].a1x) or (y1<>listelmc[-1+indiceelementmodif].a1y))) then begin retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y,x1,y1, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y,x1,y1, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; if ((tprot=tpf1) and ((x1<>listelmc[-1+indiceelementmodif].ox) or (y1<>listelmc[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmc[-1+indiceelementmodif].ox)*(listelmc[-1+indiceelementmodif].f1x- listelmc[-1+indiceelementmodif].ox)+(y1-listelmc[-1+indiceelementmodif].oy)* (listelmc[-1+indiceelementmodif].f1y-listelmc[-1+indiceelementmodif].oy))/ (sqr(listelmc[-1+indiceelementmodif].f1x-listelmc[-1+indiceelementmodif].ox)+ sqr(listelmc[-1+indiceelementmodif].f1y-listelmc[-1+indiceelementmodif].oy)); xx1:=listelmc[-1+indiceelementmodif].ox+lambda*(listelmc[-1+indiceelementmodif].f1x- listelmc[-1+indiceelementmodif].ox); yy1:=listelmc[-1+indiceelementmodif].oy+lambda*(listelmc[-1+indiceelementmodif].f1y- listelmc[-1+indiceelementmodif].oy); retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; if ((tprot=tpf2) and ((x1<>listelmc[-1+indiceelementmodif].ox) or (y1<>listelmc[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmc[-1+indiceelementmodif].ox)*(listelmc[-1+indiceelementmodif].f2x- listelmc[-1+indiceelementmodif].ox)+(y1-listelmc[-1+indiceelementmodif].oy)* (listelmc[-1+indiceelementmodif].f2y-listelmc[-1+indiceelementmodif].oy))/ (sqr(listelmc[-1+indiceelementmodif].f2x-listelmc[-1+indiceelementmodif].ox)+ sqr(listelmc[-1+indiceelementmodif].f2y-listelmc[-1+indiceelementmodif].oy)); xx1:=listelmc[-1+indiceelementmodif].ox+lambda*(listelmc[-1+indiceelementmodif].f2x- listelmc[-1+indiceelementmodif].ox); yy1:=listelmc[-1+indiceelementmodif].oy+lambda*(listelmc[-1+indiceelementmodif].f2y- listelmc[-1+indiceelementmodif].oy); retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; end; {du cas lmc} {cas lec} mdlec: begin if ((tprot=tpa1) and ((x1<>listelec[-1+indiceelementmodif].s2x) or (y1<>listelec[-1+indiceelementmodif].s2y))) then begin retaillePlec(listelec,nombrelec,nombrelec+1); if listelec[-1+nombrelec+1].create(x1,y1, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) then listelec[-1+indiceelementmodif].create(x1,y1, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) else listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant); retaillePlec(listelec,nombrelec+1,nombrelec); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelec[-1+indiceelementmodif].s1x) or (y1<>listelec[-1+indiceelementmodif].s1y))) then begin retaillePlec(listelec,nombrelec,nombrelec+1); if listelec[-1+nombrelec+1].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, x1,y1, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) then listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, x1,y1, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) else listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant); retaillePlec(listelec,nombrelec+1,nombrelec); Rafraichit; end; end; {fin cas lec} mdlmd: begin if ((tprot=tpa1) and ((x1<>listelmd[-1+indiceelementmodif].a2x) or (y1<>listelmd[-1+indiceelementmodif].a2y))) then begin retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create2(x1,y1, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create2(x1,y1, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelmd[-1+indiceelementmodif].a1x) or (y1<>listelmd[-1+indiceelementmodif].a1y))) then begin retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y,x1,y1, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y,x1,y1, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; if ((tprot=tpf1) and ((x1<>listelmd[-1+indiceelementmodif].ox) or (y1<>listelmd[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmd[-1+indiceelementmodif].ox)*(listelmd[-1+indiceelementmodif].f1x- listelmd[-1+indiceelementmodif].ox)+(y1-listelmd[-1+indiceelementmodif].oy)* (listelmd[-1+indiceelementmodif].f1y-listelmd[-1+indiceelementmodif].oy))/ (sqr(listelmd[-1+indiceelementmodif].f1x-listelmd[-1+indiceelementmodif].ox)+ sqr(listelmd[-1+indiceelementmodif].f1y-listelmd[-1+indiceelementmodif].oy)); xx1:=listelmd[-1+indiceelementmodif].ox+lambda*(listelmd[-1+indiceelementmodif].f1x- listelmd[-1+indiceelementmodif].ox); yy1:=listelmd[-1+indiceelementmodif].oy+lambda*(listelmd[-1+indiceelementmodif].f1y- listelmd[-1+indiceelementmodif].oy); retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; if ((tprot=tpf2) and ((x1<>listelmd[-1+indiceelementmodif].ox) or (y1<>listelmd[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmd[-1+indiceelementmodif].ox)*(listelmd[-1+indiceelementmodif].f2x- listelmd[-1+indiceelementmodif].ox)+(y1-listelmd[-1+indiceelementmodif].oy)* (listelmd[-1+indiceelementmodif].f2y-listelmd[-1+indiceelementmodif].oy))/ (sqr(listelmd[-1+indiceelementmodif].f2x-listelmd[-1+indiceelementmodif].ox)+ sqr(listelmd[-1+indiceelementmodif].f2y-listelmd[-1+indiceelementmodif].oy)); xx1:=listelmd[-1+indiceelementmodif].ox+lambda*(listelmd[-1+indiceelementmodif].f2x- listelmd[-1+indiceelementmodif].ox); yy1:=listelmd[-1+indiceelementmodif].oy+lambda*(listelmd[-1+indiceelementmodif].f2y- listelmd[-1+indiceelementmodif].oy); retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; end; {du cas lmd} end; {du case} end; {du moderotation} if modetranslation then begin case typeelementmodif of mdprisme: begin retaillePprisme(listeprisme,nombreprisme,nombreprisme+1); if listeprisme[-1+nombreprisme+1].create( x1,y1,listeprisme[-1+indiceelementmodif].ax+x1-listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].ay+y1-listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].bx+x1-listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].by+y1-listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) then listeprisme[-1+indiceelementmodif].create( x1,y1,listeprisme[-1+indiceelementmodif].ax+x1-listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].ay+y1-listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].bx+x1-listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].by+y1-listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) else listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay, listeprisme[-1+indiceelementmodif].bx, listeprisme[-1+indiceelementmodif].by, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant); retaillePprisme(listeprisme,nombreprisme+1,nombreprisme); Rafraichit; end; mdoeil: begin retaillePoeil(listeoeil,nombreoeil,nombreoeil+1); if listeoeil[-1+nombreoeil+1].create( x1,y1,listeoeil[-1+indiceelementmodif].ax+x1-listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].ay+y1-listeoeil[-1+indiceelementmodif].cy, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur) then listeoeil[-1+indiceelementmodif].create( x1,y1,listeoeil[-1+indiceelementmodif].ax+x1-listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].ay+y1-listeoeil[-1+indiceelementmodif].cy, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur) else listeoeil[-1+indiceelementmodif].create( listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].cy, listeoeil[-1+indiceelementmodif].ax, listeoeil[-1+indiceelementmodif].ay, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur); retaillePoeil(listeoeil,nombreoeil+1,nombreoeil); Rafraichit; end; mdangle: begin retaillePangle(listeangle,nombreangle,nombreangle+1); if listeangle[-1+nombreangle+1].create( listeangle[-1+indiceelementmodif].cx+x1-listeangle[-1+indiceelementmodif].dx, listeangle[-1+indiceelementmodif].cy+y1-listeangle[-1+indiceelementmodif].dy, listeangle[-1+indiceelementmodif].a1x+x1-listeangle[-1+indiceelementmodif].dx, listeangle[-1+indiceelementmodif].a1y+y1-listeangle[-1+indiceelementmodif].dy, listeangle[-1+indiceelementmodif].a2x+x1-listeangle[-1+indiceelementmodif].dx, listeangle[-1+indiceelementmodif].a2y+y1-listeangle[-1+indiceelementmodif].dy) then listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx+x1-listeangle[-1+indiceelementmodif].dx, listeangle[-1+indiceelementmodif].cy+y1-listeangle[-1+indiceelementmodif].dy, listeangle[-1+indiceelementmodif].a1x+x1-listeangle[-1+indiceelementmodif].dx, listeangle[-1+indiceelementmodif].a1y+y1-listeangle[-1+indiceelementmodif].dy, listeangle[-1+indiceelementmodif].a2x+x1-listeangle[-1+indiceelementmodif].dx, listeangle[-1+indiceelementmodif].a2y+y1-listeangle[-1+indiceelementmodif].dy) else listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y); retaillePangle(listeangle,nombreangle+1,nombreangle); Rafraichit; end; mdmetre: begin retaillePmetre(listemetre,nombremetre,nombremetre+1); if listemetre[-1+nombremetre+1].create( listemetre[-1+indiceelementmodif].a1x+x1-(listemetre[-1+indiceelementmodif].a1x+ listemetre[-1+indiceelementmodif].a2x)/2, listemetre[-1+indiceelementmodif].a1y+y1-(listemetre[-1+indiceelementmodif].a1y+ listemetre[-1+indiceelementmodif].a2y)/2, listemetre[-1+indiceelementmodif].a2x+x1-(listemetre[-1+indiceelementmodif].a1x+ listemetre[-1+indiceelementmodif].a2x)/2, listemetre[-1+indiceelementmodif].a2y+y1-(listemetre[-1+indiceelementmodif].a1y+ listemetre[-1+indiceelementmodif].a2y)/2) then listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x+x1-(listemetre[-1+indiceelementmodif].a1x+ listemetre[-1+indiceelementmodif].a2x)/2, listemetre[-1+indiceelementmodif].a1y+y1-(listemetre[-1+indiceelementmodif].a1y+ listemetre[-1+indiceelementmodif].a2y)/2, listemetre[-1+indiceelementmodif].a2x+x1-(listemetre[-1+indiceelementmodif].a1x+ listemetre[-1+indiceelementmodif].a2x)/2, listemetre[-1+indiceelementmodif].a2y+y1-(listemetre[-1+indiceelementmodif].a1y+ listemetre[-1+indiceelementmodif].a2y)/2) else listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y); retaillePmetre(listemetre,nombremetre+1,nombremetre); Rafraichit; end; mdfleche: begin retaillePfleche(listefleche,nombrefleche,nombrefleche+1); if listefleche[-1+nombrefleche+1].create( listefleche[-1+indiceelementmodif].a1x+x1-listefleche[-1+indiceelementmodif].cx, listefleche[-1+indiceelementmodif].a1y+y1-listefleche[-1+indiceelementmodif].cy, listefleche[-1+indiceelementmodif].a2x+x1-listefleche[-1+indiceelementmodif].cx, listefleche[-1+indiceelementmodif].a2y+y1-listefleche[-1+indiceelementmodif].cy, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) then listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x+x1-listefleche[-1+indiceelementmodif].cx, listefleche[-1+indiceelementmodif].a1y+y1-listefleche[-1+indiceelementmodif].cy, listefleche[-1+indiceelementmodif].a2x+x1-listefleche[-1+indiceelementmodif].cx, listefleche[-1+indiceelementmodif].a2y+y1-listefleche[-1+indiceelementmodif].cy, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) else listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2); retaillePfleche(listefleche,nombrefleche+1,nombrefleche); Rafraichit; end; mdsourceponctuelle: begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].sy+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a1x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a1y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a2x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a2y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].sy+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a1x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a1y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a2x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a2y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; mdtexteaffiche: begin if ((x1<>listetexteaffiche[-1+indiceelementmodif].x) or (y1<>listetexteaffiche[-1+indiceelementmodif].y)) then begin retailleptexteaffiche(listetexteaffiche,nombretexte,nombretexte+1); if listetexteaffiche[-1+nombretexte+1].create(listetexteaffiche[-1+indiceelementmodif].texteluimeme, listetexteaffiche[-1+indiceelementmodif].policename,listetexteaffiche[-1+indiceelementmodif]. policecharset,listetexteaffiche[-1+indiceelementmodif].policecolor, listetexteaffiche[-1+indiceelementmodif].policesize, listetexteaffiche[-1+indiceelementmodif].policepitch, listetexteaffiche[-1+indiceelementmodif].policefsbold, listetexteaffiche[-1+indiceelementmodif].policefsitalic, listetexteaffiche[-1+indiceelementmodif].policefsunderline, listetexteaffiche[-1+indiceelementmodif].policefsstrikeout, x1,y1) then listetexteaffiche[-1+indiceelementmodif].create(listetexteaffiche[-1+indiceelementmodif].texteluimeme, listetexteaffiche[-1+indiceelementmodif].policename,listetexteaffiche[-1+indiceelementmodif]. policecharset,listetexteaffiche[-1+indiceelementmodif].policecolor, listetexteaffiche[-1+indiceelementmodif].policesize, listetexteaffiche[-1+indiceelementmodif].policepitch, listetexteaffiche[-1+indiceelementmodif].policefsbold, listetexteaffiche[-1+indiceelementmodif].policefsitalic, listetexteaffiche[-1+indiceelementmodif].policefsunderline, listetexteaffiche[-1+indiceelementmodif].policefsstrikeout, x1,y1) else listetexteaffiche[-1+indiceelementmodif].create(listetexteaffiche[-1+indiceelementmodif].texteluimeme, listetexteaffiche[-1+indiceelementmodif].policename,listetexteaffiche[-1+indiceelementmodif]. policecharset,listetexteaffiche[-1+indiceelementmodif].policecolor, listetexteaffiche[-1+indiceelementmodif].policesize, listetexteaffiche[-1+indiceelementmodif].policepitch, listetexteaffiche[-1+indiceelementmodif].policefsbold, listetexteaffiche[-1+indiceelementmodif].policefsitalic, listetexteaffiche[-1+indiceelementmodif].policefsunderline, listetexteaffiche[-1+indiceelementmodif].policefsstrikeout, listetexteaffiche[-1+indiceelementmodif].x, listetexteaffiche[-1+indiceelementmodif].y); retailleptexteaffiche(listetexteaffiche,nombretexte+1,nombretexte); Rafraichit; end; end; mdsphere: begin if ((x1<>listesphere[-1+indiceelementmodif].cx) or (y1<>listesphere[-1+indiceelementmodif].cy)) then begin retaillepsphere(listesphere,nombresphere,nombresphere+1); if listesphere[-1+nombresphere+1].create( x1,y1, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) then listesphere[-1+indiceelementmodif].create(x1,y1, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) else listesphere[-1+indiceelementmodif].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant); retaillepsphere(listesphere,nombresphere+1,nombresphere); Rafraichit; end; end; mdpolyhedre: if ( (x1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ay)) then begin retaillePpolyhedre(listepolyhedre,nombrepolyhedre,nombrepolyhedre+1); for i:=1 to listepolyhedre[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolyhedre[-1+indiceelementmodif].messommets[i].ax+x1- (listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ax+ listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace+1].ax)/2; ttpoly[i].ay:=listepolyhedre[-1+indiceelementmodif].messommets[i].ay+y1- (listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ay+ listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace+1].ay)/2; end; if listepolyhedre[-1+nombrepolyhedre+1].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) then listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) else listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, listepolyhedre[-1+indiceelementmodif].messommets, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant); retaillePpolyhedre(listepolyhedre,nombrepolyhedre+1,nombrepolyhedre); Rafraichit; end; mdpolycercle: if ( (x1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay)) then begin retaillePpolycercle(listepolycercle,nombrepolycercle,nombrepolycercle+1); for i:=1 to listepolycercle[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolycercle[-1+indiceelementmodif].messommets[i].ax+x1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ax)/2; ttpoly[i].ay:=listepolycercle[-1+indiceelementmodif].messommets[i].ay+y1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ay)/2; ttsom[i].ax:=listepolycercle[-1+indiceelementmodif].mess[i].ax+x1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ax)/2; ttsom[i].ay:=listepolycercle[-1+indiceelementmodif].mess[i].ay+y1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ay)/2; end; if listepolycercle[-1+nombrepolycercle+1].create( listepolycercle[-1+indiceelementmodif].nombresommet, ttpoly,ttsom, listepolycercle[-1+indiceelementmodif].rectiligne, listepolycercle[-1+indiceelementmodif].indicerouge, listepolycercle[-1+indiceelementmodif].indicebleu, listepolycercle[-1+indiceelementmodif].indicevert, listepolycercle[-1+indiceelementmodif].couleurbord, listepolycercle[-1+indiceelementmodif].couleurfond, listepolycercle[-1+indiceelementmodif].reflechientrant, listepolycercle[-1+indiceelementmodif].reflechisortant) then listepolycercle[-1+indiceelementmodif].create( listepolycercle[-1+indiceelementmodif].nombresommet, ttpoly,ttsom, listepolycercle[-1+indiceelementmodif].rectiligne, listepolycercle[-1+indiceelementmodif].indicerouge, listepolycercle[-1+indiceelementmodif].indicebleu, listepolycercle[-1+indiceelementmodif].indicevert, listepolycercle[-1+indiceelementmodif].couleurbord, listepolycercle[-1+indiceelementmodif].couleurfond, listepolycercle[-1+indiceelementmodif].reflechientrant, listepolycercle[-1+indiceelementmodif].reflechisortant) else listepolycercle[-1+indiceelementmodif].create( listepolycercle[-1+indiceelementmodif].nombresommet, listepolycercle[-1+indiceelementmodif].messommets, listepolycercle[-1+indiceelementmodif].mess, listepolycercle[-1+indiceelementmodif].rectiligne, listepolycercle[-1+indiceelementmodif].indicerouge, listepolycercle[-1+indiceelementmodif].indicebleu, listepolycercle[-1+indiceelementmodif].indicevert, listepolycercle[-1+indiceelementmodif].couleurbord, listepolycercle[-1+indiceelementmodif].couleurfond, listepolycercle[-1+indiceelementmodif].reflechientrant, listepolycercle[-1+indiceelementmodif].reflechisortant); retaillePpolycercle(listepolycercle,nombrepolycercle+1,nombrepolycercle); Rafraichit; end; mdmiroirplan: begin retaillePMiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan+1); if listemiroirplan[-1+nombremiroirplan+1].create( listemiroirplan[-1+indiceelementmodif].a1x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a1y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].a2x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a2y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) then listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a1y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].a2x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a2y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) else listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures); retaillePMiroirplan(listemiroirplan,nombremiroirplan+1,nombremiroirplan); Rafraichit; end; {du cas miroir plan} mdReseau: begin retaillePReseau(listeReseau,nombreReseau,nombreReseau+1); if listeReseau[-1+nombreReseau+1].create( listeReseau[-1+indiceelementmodif].a1x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a1y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].a2x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a2y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max) then listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a1y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].a2x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a2y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max) else listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listereseau[-1+indiceelementmodif].entransmission, listereseau[-1+indiceelementmodif].hachures, listereseau[-1+indiceelementmodif].ordre_min, listereseau[-1+indiceelementmodif].ordre_max); retaillePReseau(listeReseau,nombreReseau+1,nombreReseau); Rafraichit; end; {du cas reseau} mdgroupe: begin listegroupe[-1+indiceelementmodif].translate(x1-listegroupe[-1+indiceelementmodif].isox, y1-listegroupe[-1+indiceelementmodif].isoy); Rafraichit; end; mdecran: begin retaillePecran(listeecran,nombreecran,nombreecran+1); if listeecran[-1+nombreecran+1].create( listeecran[-1+indiceelementmodif].a1x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a1y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].a2x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a2y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) then listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a1y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].a2x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a2y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) else listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur); retaillePecran(listeecran,nombreecran+1,nombreecran); Rafraichit; end; {du cas ecran} mddiaphragme: begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2(x1,y1, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2(x1,y1, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; {du cas diaphragme} mdlsr: begin retaillePlsr(listelsr,nombrelsr,nombrelsr+1); if listelsr[-1+nombrelsr+1].create( listelsr[-1+indiceelementmodif].a1x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a1y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].a2x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a2y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) then listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a1y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].a2x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a2y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) else listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur); retaillePlsr(listelsr,nombrelsr+1,nombrelsr); Rafraichit; end; {du cas lsr} mdrayon: begin retaillePrayon(listerayon,nombrerayon,nombrerayon+1); if listerayon[-1+nombrerayon+1].create( listerayon[-1+indiceelementmodif].ax+x1- listerayon[-1+indiceelementmodif].cx, listerayon[-1+indiceelementmodif].ay+y1- listerayon[-1+indiceelementmodif].cy, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) then listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax+x1- listerayon[-1+indiceelementmodif].cx, listerayon[-1+indiceelementmodif].ay+y1- listerayon[-1+indiceelementmodif].cy, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) else listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment); retaillePrayon(listerayon,nombrerayon+1,nombrerayon); Rafraichit; end; {du cas rayon} mdondeplane: begin retaillePondeplane(listeondeplane,nombreondeplane,nombreondeplane+1); if listeondeplane[-1+nombreondeplane+1].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].sy+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a1x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a2y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) then listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].sy+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a1x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a2y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) else listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment); retaillePondeplane(listeondeplane,nombreondeplane+1,nombreondeplane); Rafraichit; end; {du cas ondeplane} mdmscopa: begin retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create2( listemscopa[-1+indiceelementmodif].a1x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a1y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].a2x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a2y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a1y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].a2x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a2y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; {du cas mscopa} mdmscore: begin retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create2( listemscore[-1+indiceelementmodif].a1x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a1y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].a2x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a2y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a1y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].a2x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a2y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; {du cas mscore} mdmiroirconique: begin retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); if listemiroirconique[-1+nombremiroirconique+1].create2( listemiroirconique[-1+indiceelementmodif].fx+x1- listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].fy+y1- listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx+x1- listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].fy+y1- listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) ; retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; {du cas miroirconique} mdmscepa: begin retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create2( listemscepa[-1+indiceelementmodif].a1x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a1y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].a2x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a2y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a1y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].a2x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a2y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; {du cas mscepa} mdmscere: begin retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create2( listemscere[-1+indiceelementmodif].a1x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a1y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].a2x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a2y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a1y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].a2x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a2y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; {du cas mscere} mdlmc: begin retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create2( listelmc[-1+indiceelementmodif].a1x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a1y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].a2x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a2y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a1y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].a2x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a2y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; {du cas lmc} mdlec: begin retaillePlec(listelec,nombrelec,nombrelec+1); if listelec[-1+nombrelec+1].create( listelec[-1+indiceelementmodif].s1x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s1y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].s2x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s2y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) then listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s1y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].s2x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s2y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) else listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant); retaillePlec(listelec,nombrelec+1,nombrelec); Rafraichit; end; {du cas lec} mdlmd: begin retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create2( listelmd[-1+indiceelementmodif].a1x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a1y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].a2x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a2y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a1y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].a2x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a2y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; {du cas lmd} end; {du case} end; {du modetranslation} end; procedure Traitesuppression(Sender: TObject; Shift: TShiftState; X, Y: Integer); var x1,y1,tx,ty,distance,lambda,xx1,yy1,dtheta,AiAj,ux,uy:extended; i,j:integer; boum:string; label 314, 315,316,317,319,320,321; begin graphepresent:=true; BIBI.convert(x,y,x1,y1,true); BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; affichecoordonnees(x1,y1); distance:=sqrt(sqr(xxmax-xxmin)+sqr(yymin-yymax)); {on recherche si le curseur est proche d'un centre} if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1)) then begin boum:=rsCeTexte; goto 314; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeTrait; goto 314; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a1x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeTrait; goto 314; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a2x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeTrait; goto 314; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteSphRe; goto 314; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx+listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteSphRe; goto 314; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy+listesphere[-1+i].rayon-y1)<=ty*1.1)) then begin boum:=rsCetteSphRe; goto 314; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteSphRe; goto 314; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-listesphere[-1+i].rayon-y1)<=ty*1.1)) then begin boum:=rsCetteSphRe; goto 314; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirPlan; goto 314; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirPlan; goto 314; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirPlan; goto 314; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeReseau; goto 314; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a1x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeReseau; goto 314; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a2x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeReseau; goto 314; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirCNiq; goto 314; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirCNiq; goto 314; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirCNiq; goto 314; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].fx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].fy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirCNiq; goto 314; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs(listepolyhedre[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].messommets[j].ay-y1)<=ty*1.1)) then begin boum:=rsCePolygNe; goto 314; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs((listepolyhedre[-1+i].messommets[j].ax+listepolyhedre[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolyhedre[-1+i].messommets[j].ay+listepolyhedre[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin boum:=rsCePolygNe; goto 314; end; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs(listeprisme[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listeprisme[-1+i].messommets[j].ay-y1)<=ty*1.1)) then begin boum:=rsCePrisme; goto 314; end; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs((listeprisme[-1+i].messommets[j].ax+listeprisme[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listeprisme[-1+i].messommets[j].ay+listeprisme[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin boum:=rsCePrisme; goto 314; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs(listepolycercle[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].messommets[j].ay-y1)<=ty*1.1)) then begin boum:=rsCePolycercle; goto 314; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs((listepolycercle[-1+i].messommets[j].ax+listepolycercle[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolycercle[-1+i].messommets[j].ay+listepolycercle[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin boum:=rsCePolycercle; goto 314; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if not(listepolycercle[-1+i].rectiligne[j]) then if ((abs(listepolycercle[-1+i].mess[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].mess[j].ay-y1)<=ty*1.1)) then begin boum:=rsCePolycercle; goto 314; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetOeil; goto 314; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].ax-x1)<=tx*1.1) and (abs(listeoeil[-1+i].ay-y1)<=ty*1.1)) then begin boum:=rsCetOeil; goto 314; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetCran; goto 314; end; if nombregroupe>0 then for i:=1 to nombregroupe do if ((abs(listegroupe[-1+i].isox-x1)<=tx*1.1) and (abs(listegroupe[-1+i].isoy-y1)<=ty*1.1)) then begin boum:=rsCeGroupe; goto 314; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a1x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetCran; goto 314; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a2x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetCran; goto 314; end; for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeDiaphragme; goto 314; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeDiaphragme; goto 314; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeDiaphragme; goto 314; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap1y-y1)<=ty*1.1)) then begin boum:=rsCeDiaphragme; goto 314; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap2y-y1)<=ty*1.1)) then begin boum:=rsCeDiaphragme; goto 314; end; for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteLameSem; goto 314; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a1x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetteLameSem; goto 314; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a2x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetteLameSem; goto 314; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].fy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].fy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].cx-x1)<=tx*1.1) and (abs(listemscore[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].cx-x1)<=tx*1.1) and (abs(listemscere[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeMiroirSphR3; goto 314; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f1y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f2y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s1x-x1)<=tx*1.1) and (abs(listelec[-1+i].s1y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s2x-x1)<=tx*1.1) and (abs(listelec[-1+i].s2y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f1y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f2y-y1)<=ty*1.1)) then begin boum:=rsCetteLentill4; goto 314; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCeRayon; goto 314; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].ax-x1)<=tx*1.1) and (abs(listerayon[-1+i].ay-y1)<=ty*1.1)) then begin boum:=rsCeRayon; goto 314; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].bx-x1)<=tx*1.1) and (abs(listerayon[-1+i].by-y1)<=ty*1.1)) then begin boum:=rsCeRayon; goto 314; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].gx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].gy-y1)<=ty*1.1)) then begin boum:=rsCetteSourceP; goto 314; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].sx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCetteSourceP; goto 314; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a1x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetteSourceP; goto 314; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a2x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetteSourceP; goto 314; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetteOndePla; goto 314; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1)) then begin boum:=rsCetteOndePla; goto 314; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a2x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetteOndePla; goto 314; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a1x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetteMesureD2; goto 314; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1)) then begin boum:=rsCetteMesureD3; goto 314; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a2x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetteMesureD4; goto 314; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a1x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a1y-y1)<=ty*1.1)) then begin boum:=rsCetteMesureD; goto 314; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a2x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a2y-y1)<=ty*1.1)) then begin boum:=rsCetteMesureD; goto 314; end; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=rsFaitesPasser3; exit; 314: 315: 317: 316: 319: 320: form1.image1.Cursor:=crmarteau; form1.StatusBar1.Panels[2].text:=Format(rsClicGauchePo9, [boum]); exit; end; {*****************debut modif***************************************} procedure DebutModif(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var x1,y1,tx,ty,distance:extended; i,j:integer; begin modetranslation:=false; moderotation:=false; graphepresent:=true; BIBI.convert(x,y,x1,y1,true); BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; distance:=sqrt(sqr(xxmax-xxmin)+sqr(yymin-yymax)); affichecoordonnees(x1,y1); bloqueaxe:=false; {on recherche si le curseur est proche d'un centre, et si oui lequel} nombre_typeelementmodif:=0; tprot:=tpa1; tprirot:=tpa; lastxr:=0; lastyr:=0; if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdtexteaffiche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listetexteaffiche[-1+i].x; lastyr:=listetexteaffiche[-1+i].y; bloqueaxe:=true; end; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemiroirconique[-1+i].sx; lastyr:=listemiroirconique[-1+i].sy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemiroirconique[-1+i].a1x; lastyr:=listemiroirconique[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemiroirconique[-1+i].a2x; lastyr:=listemiroirconique[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].fx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].fy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpfo; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemiroirconique[-1+i].fx; lastyr:=listemiroirconique[-1+i].fy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesphere[-1+i].cx; lastyr:=listesphere[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx+listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=false; moderotation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesphere[-1+i].cx+listesphere[-1+i].rayon; lastyr:=listesphere[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=false; moderotation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesphere[-1+i].cx-listesphere[-1+i].rayon; lastyr:=listesphere[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy+listesphere[-1+i].rayon-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=false; moderotation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesphere[-1+i].cx; lastyr:=listesphere[-1+i].cy+listesphere[-1+i].rayon; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-listesphere[-1+i].rayon-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=false; moderotation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesphere[-1+i].cx; lastyr:=listesphere[-1+i].cy-listesphere[-1+i].rayon; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdoeil; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeoeil[-1+i].cx; lastyr:=listeoeil[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].ax-x1)<=tx*1.1) and (abs(listeoeil[-1+i].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdoeil; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeoeil[-1+i].ax; lastyr:=listeoeil[-1+i].ay; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemiroirplan[-1+i].cx; lastyr:=listemiroirplan[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemiroirplan[-1+i].a1x; lastyr:=listemiroirplan[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemiroirplan[-1+i].a2x; lastyr:=listemiroirplan[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeReseau[-1+i].cx; lastyr:=listeReseau[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a1x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeReseau[-1+i].a1x; lastyr:=listeReseau[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a2x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeReseau[-1+i].a2x; lastyr:=listeReseau[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].dx-x1)<=tx*1.1) and (abs(listeangle[-1+i].dy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeangle[-1+i].dx; lastyr:=listeangle[-1+i].dy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=false; moderotation:=true; tprot:=tpce; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeangle[-1+i].cx; lastyr:=listeangle[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a1x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeangle[-1+i].a1x; lastyr:=listeangle[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a2x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeangle[-1+i].a2x; lastyr:=listeangle[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a1x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listefleche[-1+i].a1x; lastyr:=listefleche[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a2x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listefleche[-1+i].a2x; lastyr:=listefleche[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=false; modetranslation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listefleche[-1+i].cx; lastyr:=listefleche[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].gx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].gy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=false; modetranslation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeprisme[-1+i].gx; lastyr:=listeprisme[-1+i].gy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].ax-x1)<=tx*1.1) and (abs(listeprisme[-1+i].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; modetranslation:=false; tprirot:=tpa; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeprisme[-1+i].ax; lastyr:=listeprisme[-1+i].ay; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].bx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].by-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; modetranslation:=false; tprirot:=tpb; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeprisme[-1+i].bx; lastyr:=listeprisme[-1+i].by; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].cx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; modetranslation:=false; tprirot:=tpc; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeprisme[-1+i].cx; lastyr:=listeprisme[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a1x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemetre[-1+i].a1x; lastyr:=listemetre[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a2x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemetre[-1+i].a2x; lastyr:=listemetre[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs((listemetre[-1+i].a2x+listemetre[-1+i].a1x)/2-x1)<=tx*1.1) and (abs((listemetre[-1+i].a2y+listemetre[-1+i].a1y)/2-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=false; modetranslation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=(listemetre[-1+i].a2x+listemetre[-1+i].a1x)/2; lastyr:=(listemetre[-1+i].a2y+listemetre[-1+i].a1y)/2; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs(listepolyhedre[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].messommets[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolyhedre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listepolyhedre[-1+i].messommets[j].ax; lastyr:=listepolyhedre[-1+i].messommets[j].ay; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs((listepolyhedre[-1+i].messommets[j].ax+listepolyhedre[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolyhedre[-1+i].messommets[j].ay+listepolyhedre[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolyhedre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=false; modetranslation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=(listepolyhedre[-1+i].messommets[j].ax+listepolyhedre[-1+i].messommets[j+1].ax)/2; lastyr:=(listepolyhedre[-1+i].messommets[j].ay+listepolyhedre[-1+i].messommets[j+1].ay)/2; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs(listepolycercle[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].messommets[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listepolycercle[-1+i].messommets[j].ax; lastyr:=listepolycercle[-1+i].messommets[j].ay; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs((listepolycercle[-1+i].messommets[j].ax+listepolycercle[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolycercle[-1+i].messommets[j].ay+listepolycercle[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) and not((listepolycercle[-1+i].nombresommet=2) and (j=2)) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=false; modetranslation:=true; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=(listepolycercle[-1+i].messommets[j].ax+listepolycercle[-1+i].messommets[j+1].ax)/2; lastyr:=(listepolycercle[-1+i].messommets[j].ay+listepolycercle[-1+i].messommets[j+1].ay)/2; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if not(listepolycercle[-1+i].rectiligne[j]) then if ((abs(listepolycercle[-1+i].mess[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].mess[j].ay-y1)<=ty*1.1)) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpso; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listepolycercle[-1+i].mess[j].ax; lastyr:=listepolycercle[-1+i].mess[j].ay; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listediaphragme[-1+i].cx; lastyr:=listediaphragme[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listediaphragme[-1+i].a1x; lastyr:=listediaphragme[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listediaphragme[-1+i].a2x; lastyr:=listediaphragme[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpap1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listediaphragme[-1+i].ap1x; lastyr:=listediaphragme[-1+i].ap1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpap2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listediaphragme[-1+i].ap2x; lastyr:=listediaphragme[-1+i].ap2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeecran[-1+i].cx; lastyr:=listeecran[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombregroupe>0 then for i:=1 to nombregroupe do if ((abs(listegroupe[-1+i].isox-x1)<=tx*1.1) and (abs(listegroupe[-1+i].isoy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdgroupe; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listegroupe[-1+i].isox; lastyr:=listegroupe[-1+i].isoy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a1x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeecran[-1+i].a1x; lastyr:=listeecran[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a2x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeecran[-1+i].a2x; lastyr:=listeecran[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelsr[-1+i].cx; lastyr:=listelsr[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a1x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelsr[-1+i].a1x; lastyr:=listelsr[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a2x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelsr[-1+i].a2x; lastyr:=listelsr[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscopa[-1+i].sx; lastyr:=listemscopa[-1+i].sy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscopa[-1+i].a1x; lastyr:=listemscopa[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscopa[-1+i].a2x; lastyr:=listemscopa[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].fy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpfo; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscopa[-1+i].fx; lastyr:=listemscopa[-1+i].fy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscepa[-1+i].sx; lastyr:=listemscepa[-1+i].sy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscepa[-1+i].a1x; lastyr:=listemscepa[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscepa[-1+i].a2x; lastyr:=listemscepa[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].fy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpfo; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscepa[-1+i].fx; lastyr:=listemscepa[-1+i].fy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscore[-1+i].sx; lastyr:=listemscore[-1+i].sy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscore[-1+i].a1x; lastyr:=listemscore[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscore[-1+i].a2x; lastyr:=listemscore[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].cx-x1)<=tx*1.1) and (abs(listemscore[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpce; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscore[-1+i].cx; lastyr:=listemscore[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscere[-1+i].sx; lastyr:=listemscere[-1+i].sy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscere[-1+i].a1x; lastyr:=listemscere[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscere[-1+i].a2x; lastyr:=listemscere[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].cx-x1)<=tx*1.1) and (abs(listemscere[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpce; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listemscere[-1+i].cx; lastyr:=listemscere[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmc[-1+i].ox; lastyr:=listelmc[-1+i].oy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmc[-1+i].a1x; lastyr:=listelmc[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpf1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmc[-1+i].f1x; lastyr:=listelmc[-1+i].f1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmc[-1+i].a2x; lastyr:=listelmc[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpf2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmc[-1+i].f2x; lastyr:=listelmc[-1+i].f2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelec[-1+i].ox; lastyr:=listelec[-1+i].oy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s1x-x1)<=tx*1.1) and (abs(listelec[-1+i].s1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelec[-1+i].s1x; lastyr:=listelec[-1+i].s1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s2x-x1)<=tx*1.1) and (abs(listelec[-1+i].s2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelec[-1+i].s2x; lastyr:=listelec[-1+i].s2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmd[-1+i].ox; lastyr:=listelmd[-1+i].oy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmd[-1+i].a1x; lastyr:=listelmd[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpf1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmd[-1+i].f1x; lastyr:=listelmd[-1+i].f1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmd[-1+i].a2x; lastyr:=listelmd[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpf2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listelmd[-1+i].f2x; lastyr:=listelmd[-1+i].f2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listerayon[-1+i].cx; lastyr:=listerayon[-1+i].cy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].ax-x1)<=tx*1.1) and (abs(listerayon[-1+i].ay-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa1; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listerayon[-1+i].ax; lastyr:=listerayon[-1+i].ay; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].bx-x1)<=tx*1.1) and (abs(listerayon[-1+i].by-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; tprot:=tpa2; modetranslation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listerayon[-1+i].bx; lastyr:=listerayon[-1+i].by; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].gx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].gy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesourceponctuelle[-1+i].gx; lastyr:=listesourceponctuelle[-1+i].gy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].sx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=false; moderotation:=true; tprot:=tpa0; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesourceponctuelle[-1+i].sx; lastyr:=listesourceponctuelle[-1+i].sy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a1x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; modetranslation:=false; tprot:=tpa1; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesourceponctuelle[-1+i].a1x; lastyr:=listesourceponctuelle[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a2x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; modetranslation:=false; tprot:=tpa2; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listesourceponctuelle[-1+i].a2x; lastyr:=listesourceponctuelle[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; modetranslation:=true; moderotation:=false; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeondeplane[-1+i].a1x; lastyr:=listeondeplane[-1+i].a1y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; modetranslation:=false; tprot:=tpa1; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeondeplane[-1+i].sx; lastyr:=listeondeplane[-1+i].sy; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a2x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; moderotation:=true; modetranslation:=false; tprot:=tpa2; setlength(liste_modetranslation,nombre_typeelementmodif); setlength(liste_moderotation,nombre_typeelementmodif); setlength(liste_tprot,nombre_typeelementmodif); setlength(liste_tprirot,nombre_typeelementmodif); liste_tprirot[nombre_typeelementmodif-1]:=tprirot; liste_modetranslation[nombre_typeelementmodif-1]:=modetranslation; liste_moderotation[nombre_typeelementmodif-1]:=moderotation; liste_tprot[nombre_typeelementmodif-1]:=tprot; if ((ssalt in shift) or (ssctrl in shift)) then begin lastxr:=listeondeplane[-1+i].a2x; lastyr:=listeondeplane[-1+i].a2y; bloqueaxe:=true; end; setlength(liste_lastxr,nombre_typeelementmodif); setlength(liste_lastyr,nombre_typeelementmodif); setlength(liste_bloqueaxe,nombre_typeelementmodif); liste_lastxr[nombre_typeelementmodif-1]:=lastxr; liste_lastyr[nombre_typeelementmodif-1]:=lastyr; liste_bloqueaxe[nombre_typeelementmodif-1]:=bloqueaxe; end; if nombre_typeelementmodif >1 then begin form_quelobjet.ComboBox1.Items.Clear; form_quelobjet.Caption:=rsChoixDeLObje; for i:=1 to nombre_typeelementmodif do begin case liste_typeelementmodif[i-1] of mdmetre: form_quelobjet.ComboBox1.Items.Add(Format(rsMesureDeDist2, [inttostr (liste_indiceelementmodif[i-1])])); mdprisme: form_quelobjet.ComboBox1.Items.Add(Format(rsPrismeN, [inttostr( liste_indiceelementmodif[i-1])])); mdMiroirPlan: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirPlanN, [ inttostr(liste_indiceelementmodif[i-1])])); mdreseau: form_quelobjet.ComboBox1.Items.Add(Format(rsReseauN, [ inttostr(liste_indiceelementmodif[i-1])])); mdMscopa: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConcav, [inttostr( liste_indiceelementmodif[i-1])])); mdMscepa: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConvex, [inttostr( liste_indiceelementmodif[i-1])])); mdMscore: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConcav2, [inttostr( liste_indiceelementmodif[i-1])])); mdMscere: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConvex2, [inttostr( liste_indiceelementmodif[i-1])])); mdLmc: form_quelobjet.ComboBox1.Items.Add(Format(rsLentilleMinc5, [inttostr( liste_indiceelementmodif[i-1])])); mdLmd: form_quelobjet.ComboBox1.Items.Add(Format(rsLentilleMinc6, [inttostr( liste_indiceelementmodif[i-1])])); mdRayon: form_quelobjet.ComboBox1.Items.Add(Format(rsRayonN, [inttostr( liste_indiceelementmodif[i-1])])); mdSourcePonctuelle: form_quelobjet.ComboBox1.Items.Add(Format(rsSourcePonctu2, [inttostr(liste_indiceelementmodif[i-1])])); mdOndePlane: form_quelobjet.ComboBox1.Items.Add(Format(rsOndePlaneN, [inttostr( liste_indiceelementmodif[i-1])])); mdecran: form_quelobjet.ComboBox1.Items.Add(Format(rsEcranN, [inttostr( liste_indiceelementmodif[i-1])])); mdlsr: form_quelobjet.ComboBox1.Items.Add(Format(rsLameSemiRFlC3, [inttostr( liste_indiceelementmodif[i-1])])); mdpolyhedre: form_quelobjet.ComboBox1.Items.Add(Format(rsPolyhDreRFra2, [ inttostr(liste_indiceelementmodif[i-1])])); mdsphere: form_quelobjet.ComboBox1.Items.Add(Format(rsSphReRFracta2, [inttostr( liste_indiceelementmodif[i-1])])); mdmiroirconique: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirCNique2, [ inttostr(liste_indiceelementmodif[i-1])])); mdtexteaffiche: form_quelobjet.ComboBox1.Items.Add(Format(rsTexteN, [inttostr( liste_indiceelementmodif[i-1])])); mddiaphragme: form_quelobjet.ComboBox1.Items.Add(Format(rsDiaphragmeN, [ inttostr(liste_indiceelementmodif[i-1])])); mdlec: form_quelobjet.ComboBox1.Items.Add(Format(rsLentillePais2, [inttostr( liste_indiceelementmodif[i-1])])); mdangle: form_quelobjet.ComboBox1.Items.Add(Format(rsMesureDAngle2, [inttostr( liste_indiceelementmodif[i-1])])); mdpolycercle: form_quelobjet.ComboBox1.Items.Add(Format(rsPolycercleRF2, [ inttostr(liste_indiceelementmodif[i-1])])); mdfleche: form_quelobjet.ComboBox1.Items.Add(Format(rsFlCheN, [inttostr( liste_indiceelementmodif[i-1])])); mdoeil: form_quelobjet.ComboBox1.Items.Add(Format(rsOeilN, [inttostr( liste_indiceelementmodif[i-1])])); mdneant: form_quelobjet.ComboBox1.Items.Add(Format(rsNAntN, [inttostr( liste_indiceelementmodif[i-1])])); mdgroupe: form_quelobjet.ComboBox1.Items.Add(Format(rsGroupeN, [inttostr( liste_indiceelementmodif[i-1])])); end; end; with form_quelobjet do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; form_quelobjet.ShowModal; if form_quelobjet.ComboBox1.ItemIndex>=0 then begin typeelementmodif:=liste_typeelementmodif[form_quelobjet.ComboBox1.ItemIndex]; indiceelementmodif:=liste_indiceelementmodif[form_quelobjet.ComboBox1.ItemIndex]; modetranslation:=liste_modetranslation[form_quelobjet.ComboBox1.ItemIndex]; moderotation:=liste_moderotation [form_quelobjet.ComboBox1.ItemIndex]; tprot:=liste_tprot[form_quelobjet.ComboBox1.ItemIndex]; tprirot:=liste_tprirot[form_quelobjet.ComboBox1.ItemIndex]; lastxr:=liste_lastxr[form_quelobjet.ComboBox1.ItemIndex]; lastyr:=liste_lastyr[form_quelobjet.ComboBox1.ItemIndex]; bloqueaxe:=liste_bloqueaxe[form_quelobjet.ComboBox1.ItemIndex]; end; end; if modetranslation then begin form1.image1.Cursor:=crTranslation; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLLMen; form1.StatusBar1.Panels[3].text:=rsModeTranslat; exit; end; if (moderotation and (typeelementmodif=mddiaphragme) and ((tprot=tpa1) or (tprot=tpap1))) then begin form1.image1.Cursor:=crtaille; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLeBor; form1.StatusBar1.Panels[3].text:=rsModeChangeme; exit; end; if (moderotation and (typeelementmodif=mdprisme) and ((tprirot=tpa))) then begin form1.image1.Cursor:=crrotation; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLeSom; form1.StatusBar1.Panels[3].text:=rsModeChangeme2; exit; end; if (moderotation and (typeelementmodif=mdprisme) and ((tprirot=tpb) )) then begin form1.image1.Cursor:=crtaille; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLeSom; form1.StatusBar1.Panels[3].text:=rsModeChangeme3; exit; end; if (moderotation and (typeelementmodif=mdprisme) and ( (tprirot=tpc))) then begin form1.image1.Cursor:=crtaille; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLeSom; form1.StatusBar1.Panels[3].text:=rsModeChangeme4; exit; end; if (moderotation and ((tprot=tpfo) or (tprot=tpf1) or (tprot=tpf2))) then begin form1.image1.Cursor:=crdepfoyer; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLeFoy; form1.StatusBar1.Panels[3].text:=rsModeChangeme5; exit; end; if (moderotation and (tprot=tpce)) then begin form1.image1.Cursor:=crdepcentre; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLeCen; form1.StatusBar1.Panels[3].text:=rsModeChgtRayo; exit; end; if (moderotation and (tprot=tpso)) then begin form1.image1.Cursor:=crdepsommet; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLeSom; form1.StatusBar1.Panels[3].text:=rsModeChgtRayo2; exit; end; if moderotation then begin form1.image1.Cursor:=crrotation; modifencours:=true; form1.StatusBar1.Panels[2].text:=rsDPlacerLLMen2; form1.StatusBar1.Panels[3].text:=rsModeRotation; exit; end; form1.image1.Cursor:=crdepla; form1.StatusBar1.Panels[2].text:=rsFaitesPasser4; form1.StatusBar1.Panels[3].text:=rsModeDPlaceme2; exit; end; procedure effectuesuppression(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var x1,y1,tx,ty,distance:extended; i,j:integer; boum:string; begin graphepresent:=true; BIBI.convert(x,y,x1,y1,true); BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; distance:=sqrt(sqr(xxmax-xxmin)+sqr(yymin-yymax)); affichecoordonnees(x1,y1); {on recherche si le curseur est proche d'un centre, et si oui lequel} indiceelementmodif:=0; nombre_typeelementmodif:=0; if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdtexteaffiche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeTexte; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirCNiq; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirCNiq; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirCNiq; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].fx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].fy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirCNiq; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteSphRe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx+listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteSphRe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteSphRe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy+listesphere[-1+i].rayon-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteSphRe; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-listesphere[-1+i].rayon-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteSphRe; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirPlan; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirPlan; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirPlan; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeReseau; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a1x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeReseau; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a2x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeReseau; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteMesureD5; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a1x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteMesureD6; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].a2x-x1)<=tx*1.1) and (abs(listeangle[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteMesureD7; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a1x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteMesureD; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].a2x-x1)<=tx*1.1) and (abs(listemetre[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteMesureD; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a1x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeTrait; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].a2x-x1)<=tx*1.1) and (abs(listefleche[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeTrait; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeTrait; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs(listepolyhedre[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].messommets[j].ay-y1)<=ty*1.1)) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolyhedre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCePolygNe; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs((listepolyhedre[-1+i].messommets[j].ax+listepolyhedre[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolyhedre[-1+i].messommets[j].ay+listepolyhedre[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolyhedre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCePolygNe; end; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs(listeprisme[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listeprisme[-1+i].messommets[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCePrisme; end; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs((listeprisme[-1+i].messommets[j].ax+listeprisme[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listeprisme[-1+i].messommets[j].ay+listeprisme[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCePrisme; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs(listepolycercle[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].messommets[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCePolycercle; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs((listepolycercle[-1+i].messommets[j].ax+listepolycercle[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolycercle[-1+i].messommets[j].ay+listepolycercle[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) and not((listepolycercle[-1+i].nombresommet=2) and (j=2))) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCePolycercle; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if not(listepolycercle[-1+i].rectiligne[j]) then if ((abs(listepolycercle[-1+i].mess[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].mess[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCePolycercle; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeDiaphragme; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeDiaphragme; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeDiaphragme; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeDiaphragme; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeDiaphragme; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdoeil; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetOeil; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].ax-x1)<=tx*1.1) and (abs(listeoeil[-1+i].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdoeil; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetOeil; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetCran; end; if nombregroupe>0 then for i:=1 to nombregroupe do if ((abs(listegroupe[-1+i].isox-x1)<=tx*1.1) and (abs(listegroupe[-1+i].isoy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdgroupe; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeGroupe; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a1x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetCran; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a2x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetCran; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLameSem; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a1x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLameSem; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a2x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLameSem; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].fy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].fy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].cx-x1)<=tx*1.1) and (abs(listemscore[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].cx-x1)<=tx*1.1) and (abs(listemscere[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeMiroirSphR4; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s1x-x1)<=tx*1.1) and (abs(listelec[-1+i].s1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s2x-x1)<=tx*1.1) and (abs(listelec[-1+i].s2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteLentill4; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=pchar(rscettelentill4); end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeRayon; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].ax-x1)<=tx*1.1) and (abs(listerayon[-1+i].ay-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCeRayon; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].bx-x1)<=tx*1.1) and (abs(listerayon[-1+i].by-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rscerayon; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].gx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].gy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteSourceP; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].sx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rscettesourcep; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a1x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rscettesourcep; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a2x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rscettesourcep; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteOndePla; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteOndePla; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a2x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); setlength(liste_boum,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; liste_boum[nombre_typeelementmodif-1]:=rsCetteOndePla; end; if nombre_typeelementmodif >1 then begin form_quelobjet.ComboBox1.Items.Clear; form_quelobjet.Caption:=rsChoisissezLO; for i:=1 to nombre_typeelementmodif do begin case liste_typeelementmodif[i-1] of mdmetre: form_quelobjet.ComboBox1.Items.Add(Format(rsMesureDeDist2, [inttostr (liste_indiceelementmodif[i-1])])); mdprisme: form_quelobjet.ComboBox1.Items.Add(Format(rsPrismeN, [inttostr( liste_indiceelementmodif[i-1])])); mdMiroirPlan: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirPlanN, [ inttostr(liste_indiceelementmodif[i-1])])); mdReseau: form_quelobjet.ComboBox1.Items.Add(Format(rsReseauN, [ inttostr(liste_indiceelementmodif[i-1])])); mdMscopa: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConcav, [inttostr( liste_indiceelementmodif[i-1])])); mdMscepa: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConvex, [inttostr( liste_indiceelementmodif[i-1])])); mdMscore: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConcav2, [inttostr( liste_indiceelementmodif[i-1])])); mdMscere: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConvex2, [inttostr( liste_indiceelementmodif[i-1])])); mdLmc: form_quelobjet.ComboBox1.Items.Add(Format(rsLentilleMinc5, [inttostr( liste_indiceelementmodif[i-1])])); mdLmd: form_quelobjet.ComboBox1.Items.Add(Format(rsLentilleMinc6, [inttostr( liste_indiceelementmodif[i-1])])); mdRayon: form_quelobjet.ComboBox1.Items.Add(Format(rsRayonN, [inttostr( liste_indiceelementmodif[i-1])])); mdSourcePonctuelle: form_quelobjet.ComboBox1.Items.Add(Format(rsSourcePonctu2, [inttostr(liste_indiceelementmodif[i-1])])); mdOndePlane: form_quelobjet.ComboBox1.Items.Add(Format(rsOndePlaneN, [inttostr( liste_indiceelementmodif[i-1])])); mdecran: form_quelobjet.ComboBox1.Items.Add(Format(rsEcranN, [inttostr( liste_indiceelementmodif[i-1])])); mdlsr: form_quelobjet.ComboBox1.Items.Add(Format(rsLameSemiRFlC3, [inttostr( liste_indiceelementmodif[i-1])])); mdpolyhedre: form_quelobjet.ComboBox1.Items.Add(Format(rsPolyhDreRFra2, [ inttostr(liste_indiceelementmodif[i-1])])); mdsphere: form_quelobjet.ComboBox1.Items.Add(Format(rsSphReRFracta2, [inttostr( liste_indiceelementmodif[i-1])])); mdmiroirconique: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirCNique2, [ inttostr(liste_indiceelementmodif[i-1])])); mdtexteaffiche: form_quelobjet.ComboBox1.Items.Add(Format(rsTexteN, [inttostr( liste_indiceelementmodif[i-1])])); mddiaphragme: form_quelobjet.ComboBox1.Items.Add(Format(rsDiaphragmeN, [ inttostr(liste_indiceelementmodif[i-1])])); mdlec: form_quelobjet.ComboBox1.Items.Add(Format(rsLentillePais2, [inttostr( liste_indiceelementmodif[i-1])])); mdangle: form_quelobjet.ComboBox1.Items.Add(Format(rsMesureDAngle3, [inttostr( liste_indiceelementmodif[i-1])])); mdpolycercle: form_quelobjet.ComboBox1.Items.Add(Format(rsPolycercleRF2, [ inttostr(liste_indiceelementmodif[i-1])])); mdfleche: form_quelobjet.ComboBox1.Items.Add(Format(rsFlCheN, [inttostr( liste_indiceelementmodif[i-1])])); mdoeil: form_quelobjet.ComboBox1.Items.Add(Format(rsOeilN, [inttostr( liste_indiceelementmodif[i-1])])); mdneant: form_quelobjet.ComboBox1.Items.Add(Format(rsNAntN, [inttostr( liste_indiceelementmodif[i-1])])); mdgroupe: form_quelobjet.ComboBox1.Items.Add(Format(rsGroupeN, [inttostr( liste_indiceelementmodif[i-1])])); end; end; with form_quelobjet do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; form_quelobjet.ShowModal; if form_quelobjet.ComboBox1.ItemIndex>=0 then begin typeelementmodif:=liste_typeelementmodif[form_quelobjet.ComboBox1.ItemIndex]; indiceelementmodif:=liste_indiceelementmodif[form_quelobjet.ComboBox1.ItemIndex]; boum:=liste_boum[form_quelobjet.ComboBox1.ItemIndex]; end else indiceelementmodif:=0; end; if indiceelementmodif=0 then exit; if application.messagebox(pchar(Format(rsEtesVousSurD, [boum])), pchar( rsattention), mb_yesno)= idno then exit; case typeelementmodif of mdmiroirplan: supprime1pmiroirplan(listemiroirplan,indiceelementmodif,nombremiroirplan); mdReseau: supprime1pReseau(listeReseau,indiceelementmodif,nombreReseau); mdfleche: supprime1pfleche(listefleche,indiceelementmodif,nombrefleche); mdlmc: supprime1plmc(listelmc,indiceelementmodif,nombrelmc); mdlmd: supprime1plmd(listelmd,indiceelementmodif,nombrelmd); mdlsr: supprime1plsr(listelsr,indiceelementmodif,nombrelsr); mdmscopa: supprime1pmscopa(listemscopa,indiceelementmodif,nombremscopa); mdmscepa: supprime1pmscepa(listemscepa,indiceelementmodif,nombremscepa); mdmscore: supprime1pmscore(listemscore,indiceelementmodif,nombremscore); mdmscere: supprime1pmscere(listemscere,indiceelementmodif,nombremscere); mdmiroirconique: supprime1pmiroirconique(listemiroirconique,indiceelementmodif,nombremiroirconique); mdecran: supprime1pecran(listeecran,indiceelementmodif,nombreecran); mdgroupe: supprime1pgroupe(listegroupe,indiceelementmodif,nombregroupe); mdoeil: supprime1poeil(listeoeil,indiceelementmodif,nombreoeil); mddiaphragme: supprime1pdiaphragme(listediaphragme,indiceelementmodif,nombrediaphragme); mdrayon: supprime1prayon(listerayon,indiceelementmodif,nombrerayon); mdsourceponctuelle: supprime1psourceponctuelle(listesourceponctuelle,indiceelementmodif,nombresourceponctuelle); mdondeplane: supprime1pondeplane(listeondeplane,indiceelementmodif,nombreondeplane); mdlec: supprime1plec(listelec,indiceelementmodif,nombrelec); mdpolyhedre: supprime1ppolyhedre(listepolyhedre,indiceelementmodif,nombrepolyhedre); mdprisme: supprime1pprisme(listeprisme,indiceelementmodif,nombreprisme); mdpolycercle: supprime1ppolycercle(listepolycercle,indiceelementmodif,nombrepolycercle); mdsphere: supprime1psphere(listesphere,indiceelementmodif,nombresphere); mdmetre: supprime1pmetre(listemetre,indiceelementmodif,nombremetre); mdangle: supprime1pangle(listeangle,indiceelementmodif,nombreangle); mdtexteaffiche: supprime1ptexteaffiche(listetexteaffiche,indiceelementmodif,nombretexte); end; form1.activeboutons; modesuppression:=false; form_palette.boutonsuppression.caption:=rsSupprimer; form1.image1.Cursor:=crDefault; form1.StatusBar1.Panels[2].text:=''; form1.StatusBar1.Panels[3].text:=''; Rafraichit; end; procedure effectuegroupement(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var x1,y1,tx,ty,distance:extended; i,j:integer; boum:string; begin graphepresent:=true; BIBI.convert(x,y,x1,y1,true); BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; distance:=sqrt(sqr(xxmax-xxmin)+sqr(yymin-yymax)); affichecoordonnees(x1,y1); {on recherche si le curseur est proche d'un centre, et si oui lequel} indiceelementmodif:=0; if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1) and (sqrt(sqr(listetexteaffiche[-1+i].x-x1)+sqr(listetexteaffiche[-1+i].y-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdtexteaffiche; boum:=rsTexte; distance:=sqrt(sqr(listetexteaffiche[-1+i].x-x1)+sqr(listetexteaffiche[-1+i].y-y1)); end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1) and (sqrt(sqr(listemiroirconique[-1+i].sx-x1)+sqr(listemiroirconique[-1+i].sy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; boum:=rsMiroirConiqu; distance:=sqrt(sqr(listemiroirconique[-1+i].sx-x1)+sqr(listemiroirconique[-1+i].sy-y1)); end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listesphere[-1+i].cx-x1)+sqr(listesphere[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; boum:=rsSphRe; distance:=sqrt(sqr(listesphere[-1+i].cx-x1)+sqr(listesphere[-1+i].cy-y1)); end; if nombreprisme>0 then for i:=1 to nombreprisme do if ((abs(listeprisme[-1+i].gx-x1)<=tx*1.1) and (abs(listeprisme[-1+i].gy-y1)<=ty*1.1) and (sqrt(sqr(listeprisme[-1+i].gx-x1)+sqr(listeprisme[-1+i].gy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdprisme; boum:=rsPrisme; distance:=sqrt(sqr(listeprisme[-1+i].gx-x1)+sqr(listeprisme[-1+i].gy-y1)); end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listemiroirplan[-1+i].cx-x1)+sqr(listemiroirplan[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; boum:=rsMiroirPlan; distance:=sqrt(sqr(listemiroirplan[-1+i].cx-x1)+sqr(listemiroirplan[-1+i].cy-y1)); end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listeReseau[-1+i].cx-x1)+sqr(listeReseau[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; boum:=rsReseau; distance:=sqrt(sqr(listeReseau[-1+i].cx-x1)+sqr(listeReseau[-1+i].cy-y1)); end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listeangle[-1+i].cx-x1)+sqr(listeangle[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; boum:=rsMesureDAngle4; distance:=sqrt(sqr(listeangle[-1+i].cx-x1)+sqr(listeangle[-1+i].cy-y1)); end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].cx-x1)<=tx*1.1) and (abs(listemetre[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listemetre[-1+i].cx-x1)+sqr(listemetre[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; boum:=rsMesureDeDist; distance:=sqrt(sqr(listemetre[-1+i].cx-x1)+sqr(listemetre[-1+i].cy-y1)); end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listefleche[-1+i].cx-x1)+sqr(listefleche[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; boum:=rsTrait; distance:=sqrt(sqr(listefleche[-1+i].cx-x1)+sqr(listefleche[-1+i].cy-y1)); end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do if ((abs(listepolyhedre[-1+i].xiso-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].yiso-y1)<=ty*1.1) and (sqrt(sqr(listepolyhedre[-1+i].xiso-x1)+sqr(listepolyhedre[-1+i].yiso-y1))0 then for i:=1 to nombrepolycercle do if ((abs(listepolycercle[-1+i].xiso-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].yiso-y1)<=ty*1.1) and (sqrt(sqr(listepolycercle[-1+i].xiso-x1)+sqr(listepolycercle[-1+i].yiso-y1))0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listediaphragme[-1+i].cx-x1)+sqr(listediaphragme[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; boum:=rsDiaphragme; distance:=sqrt(sqr(listediaphragme[-1+i].cx-x1)+sqr(listediaphragme[-1+i].cy-y1)); end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listeoeil[-1+i].cx-x1)+sqr(listeoeil[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; boum:=rsOeil; typeelementmodif:=mdoeil; distance:=sqrt(sqr(listeoeil[-1+i].cx-x1)+sqr(listeoeil[-1+i].cy-y1)); end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listeecran[-1+i].cx-x1)+sqr(listeecran[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; boum:=rsEcran; distance:=sqrt(sqr(listeecran[-1+i].cx-x1)+sqr(listeecran[-1+i].cy-y1)); end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1) and (sqrt(sqr(listelsr[-1+i].cx-x1)+sqr(listelsr[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; boum:=rsLameSemiRFle; distance:=sqrt(sqr(listelsr[-1+i].cx-x1)+sqr(listelsr[-1+i].cy-y1)); end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)and (sqrt(sqr(listemscopa[-1+i].sx-x1)+sqr(listemscopa[-1+i].sy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; boum:=rsMiroirConcav3; distance:=sqrt(sqr(listemscopa[-1+i].sx-x1)+sqr(listemscopa[-1+i].sy-y1)); end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)and (sqrt(sqr(listemscepa[-1+i].sx-x1)+sqr(listemscepa[-1+i].sy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; boum:=rsMiroirConvex3; distance:=sqrt(sqr(listemscepa[-1+i].sx-x1)+sqr(listemscepa[-1+i].sy-y1)); end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)and (sqrt(sqr(listemscore[-1+i].sx-x1)+sqr(listemscore[-1+i].sy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; boum:=rsMiroirSphRiq; distance:=sqrt(sqr(listemscore[-1+i].sx-x1)+sqr(listemscore[-1+i].sy-y1)); end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)and (sqrt(sqr(listemscere[-1+i].sx-x1)+sqr(listemscere[-1+i].sy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; boum:=rsMiroirSphRiq2; distance:=sqrt(sqr(listemscere[-1+i].sx-x1)+sqr(listemscere[-1+i].sy-y1)); end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)and (sqrt(sqr(listelmc[-1+i].ox-x1)+sqr(listelmc[-1+i].oy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; boum:=rsLentilleMinc; distance:=sqrt(sqr(listelmc[-1+i].ox-x1)+sqr(listelmc[-1+i].oy-y1)); end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)and (sqrt(sqr(listelec[-1+i].ox-x1)+sqr(listelec[-1+i].oy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; boum:=rsLentillePais; distance:=sqrt(sqr(listelec[-1+i].ox-x1)+sqr(listelec[-1+i].oy-y1)); end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)and (sqrt(sqr(listelmd[-1+i].ox-x1)+sqr(listelmd[-1+i].oy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; boum:=rsLentilleMinc2; distance:=sqrt(sqr(listelmd[-1+i].ox-x1)+sqr(listelmd[-1+i].oy-y1)); end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)and (sqrt(sqr(listerayon[-1+i].cx-x1)+sqr(listerayon[-1+i].cy-y1))< distance)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; boum:=rsRayon; distance:=sqrt(sqr(listerayon[-1+i].cx-x1)+sqr(listerayon[-1+i].cy-y1)); end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].gx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].gy-y1)<=ty*1.1) and (sqrt(sqr(listesourceponctuelle[-1+i].gx-x1)+ sqr(listesourceponctuelle[-1+i].gy-y1))< distance )) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; boum:=rsSourcePonctu; distance:=sqrt(sqr(listesourceponctuelle[-1+i].gx-x1)+ sqr(listesourceponctuelle[-1+i].gy-y1)); end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1) and (sqrt(sqr(listeondeplane[-1+i].sx-x1)+ sqr(listeondeplane[-1+i].sy-y1))< distance )) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; boum:=rsOndePlane; distance:=sqrt(sqr(listeondeplane[-1+i].sx-x1)+ sqr(listeondeplane[-1+i].sy-y1)); end; if indiceelementmodif=0 then exit; groupeprovisoire.add(typeelementmodif,indiceelementmodif); application.messagebox(pchar(Format(rsAjoutAuGroup, [boum, inttostr( nombregroupe+1)])), pchar(rsFait), mb_ok); end;{de effectue groupement} {*****************info en cas de clic***************************************} procedure Info(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var newmenuitem:tmenuitem; x1,y1,tx,ty,tx1,ty1,distance:extended; i,j:integer; infofound:boolean; oldnombremiroirplan,oldnombrereseau,oldnombremscopa,oldnombremscepa,oldnombremscore, oldnombremscere,oldnombrelmc,oldnombrelmd,oldnombrerayon, oldnombresourceponctuelle,oldnombreondeplane,oldnombreecran,oldnombrepolyhedre, oldnombrelsr,oldnombresphere,oldnombremiroirconique, oldnombretexte,oldnombrediaphragme,oldnombrelec,oldnombremetre,oldnombreangle, oldnombrepolycercle,oldnombrefleche,oldnombreoeil,oldnombregroupe, oldnombreprisme:integer; begin infofound:=false; graphepresent:=true; BIBI.convert(x,y,x1,y1,true); BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; distance:=sqrt(sqr(xxmax-xxmin)+sqr(yymin-yymax)); affichecoordonnees(x1,y1); {on recherche si le curseur est proche d'un centre, et si oui lequel} if not(modeduplication) then begin nombre_typeelementmodif:=0; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].cx-x1)<=tx*1.1) and (abs(listemetre[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdtexteaffiche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx+listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy+listesphere[-1+i].rayon-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-listesphere[-1+i].rayon-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].fx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].fy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a1x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a2x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs(listepolyhedre[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].messommets[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdpolyhedre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs(listeprisme[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listeprisme[-1+i].messommets[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs(listepolycercle[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].messommets[j].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdoeil; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].ax-x1)<=tx*1.1) and (abs(listeoeil[-1+i].ay-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdoeil; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a1x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a2x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a1x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a2x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].fy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].fy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].cx-x1)<=tx*1.1) and (abs(listemscore[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].cx-x1)<=tx*1.1) and (abs(listemscere[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s1x-x1)<=tx*1.1) and (abs(listelec[-1+i].s1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s2x-x1)<=tx*1.1) and (abs(listelec[-1+i].s2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a1y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].ax-x1)<=tx*1.1) and (abs(listerayon[-1+i].ay-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].bx-x1)<=tx*1.1) and (abs(listerayon[-1+i].by-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].sx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a1x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a2x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a2y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a2x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a2y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].ray[listeondeplane[-1+i].nombrederayon].bx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].ray[listeondeplane[-1+i].nombrederayon].by-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; end; {mode duplication} if modeduplication then begin nombre_typeelementmodif:=0; if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdtexteaffiche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdfleche; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].cx-x1)<=tx*1.1) and (abs(listemetre[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmetre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdangle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx+listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy+listesphere[-1+i].rayon-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-listesphere[-1+i].rayon-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsphere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirplan; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdReseau; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdmiroirconique; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs((listepolyhedre[-1+i].messommets[j].ax+ listepolyhedre[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolyhedre[-1+i].messommets[j].ay+listepolyhedre[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolyhedre; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs((listeprisme[-1+i].messommets[j].ax+ listeprisme[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listeprisme[-1+i].messommets[j].ay+listeprisme[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdprisme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs((listepolycercle[-1+i].messommets[j].ax+ listepolycercle[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolycercle[-1+i].messommets[j].ay+listepolycercle[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) and not((listepolycercle[-1+i].nombresommet=2) and (j=2))) then begin indiceelementmodif:=i; indicepointdeplace:=j; typeelementmodif:=mdpolycercle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdecran; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdoeil; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mddiaphragme; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdlsr; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscopa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscepa; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscore; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdmscere; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmc; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlec; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdlmd; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then begin indiceelementmodif:=i; typeelementmodif:=mdrayon; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs((listesourceponctuelle[-1+i].a1x+listesourceponctuelle[-1+i].a2x)/2-x1)<=tx*1.1) and (abs((listesourceponctuelle[-1+i].a1y+listesourceponctuelle[-1+i].a2y)/2-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdsourceponctuelle; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1) ) then begin indiceelementmodif:=i; typeelementmodif:=mdondeplane; inc(nombre_typeelementmodif); setlength(liste_typeelementmodif,nombre_typeelementmodif); setlength(liste_indiceelementmodif,nombre_typeelementmodif); liste_typeelementmodif[nombre_typeelementmodif-1]:=typeelementmodif; liste_indiceelementmodif[nombre_typeelementmodif-1]:=indiceelementmodif; infofound:=true; end; end; {du cas duplication} if not(infofound) then begin if not(modeduplication) then form1.image1.Cursor:=crprop else form1.image1.Cursor:=crdefault; exit; end; if nombre_typeelementmodif >1 then begin form_quelobjet.ComboBox1.Items.Clear; if not(modeduplication) then form_quelobjet.Caption:=rsPropriTSDeLO2 else form_quelobjet.Caption:=rsObjetDupliqu; for i:=1 to nombre_typeelementmodif do begin case liste_typeelementmodif[i-1] of mdmetre: form_quelobjet.ComboBox1.Items.Add(Format(rsMesureDeDist2, [inttostr (liste_indiceelementmodif[i-1])])); mdprisme: form_quelobjet.ComboBox1.Items.Add(Format(rsPrismeN, [inttostr( liste_indiceelementmodif[i-1])])); mdMiroirPlan: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirPlanN, [ inttostr(liste_indiceelementmodif[i-1])])); mdReseau: form_quelobjet.ComboBox1.Items.Add(Format(rsReseauN, [ inttostr(liste_indiceelementmodif[i-1])])); mdMscopa: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConcav, [inttostr( liste_indiceelementmodif[i-1])])); mdMscepa: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConvex, [inttostr( liste_indiceelementmodif[i-1])])); mdMscore: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConcav2, [inttostr( liste_indiceelementmodif[i-1])])); mdMscere: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirConvex2, [inttostr( liste_indiceelementmodif[i-1])])); mdLmc: form_quelobjet.ComboBox1.Items.Add(Format(rsLentilleMinc5, [inttostr( liste_indiceelementmodif[i-1])])); mdLmd: form_quelobjet.ComboBox1.Items.Add(Format(rsLentilleMinc6, [inttostr( liste_indiceelementmodif[i-1])])); mdRayon: form_quelobjet.ComboBox1.Items.Add(Format(rsRayonN, [inttostr( liste_indiceelementmodif[i-1])])); mdSourcePonctuelle: form_quelobjet.ComboBox1.Items.Add(Format(rsSourcePonctu2, [inttostr(liste_indiceelementmodif[i-1])])); mdOndePlane: form_quelobjet.ComboBox1.Items.Add(Format(rsOndePlaneN, [inttostr( liste_indiceelementmodif[i-1])])); mdecran: form_quelobjet.ComboBox1.Items.Add(Format(rsEcranN, [inttostr( liste_indiceelementmodif[i-1])])); mdlsr: form_quelobjet.ComboBox1.Items.Add(Format(rsLameSemiRFlC3, [inttostr( liste_indiceelementmodif[i-1])])); mdpolyhedre: form_quelobjet.ComboBox1.Items.Add(Format(rsPolyhDreRFra2, [ inttostr(liste_indiceelementmodif[i-1])])); mdsphere: form_quelobjet.ComboBox1.Items.Add(Format(rsSphReRFracta2, [inttostr( liste_indiceelementmodif[i-1])])); mdmiroirconique: form_quelobjet.ComboBox1.Items.Add(Format(rsMiroirCNique2, [ inttostr(liste_indiceelementmodif[i-1])])); mdtexteaffiche: form_quelobjet.ComboBox1.Items.Add(Format(rsTexteN, [inttostr( liste_indiceelementmodif[i-1])])); mddiaphragme: form_quelobjet.ComboBox1.Items.Add(Format(rsDiaphragmeN, [ inttostr(liste_indiceelementmodif[i-1])])); mdlec: form_quelobjet.ComboBox1.Items.Add(Format(rsLentillePais2, [inttostr( liste_indiceelementmodif[i-1])])); mdangle: form_quelobjet.ComboBox1.Items.Add(Format(rsMesureDAngle5, [inttostr( liste_indiceelementmodif[i-1])])); mdpolycercle: form_quelobjet.ComboBox1.Items.Add(Format(rsPolycercleRF2, [ inttostr(liste_indiceelementmodif[i-1])])); mdfleche: form_quelobjet.ComboBox1.Items.Add(Format(rsFlCheN, [inttostr( liste_indiceelementmodif[i-1])])); mdoeil: form_quelobjet.ComboBox1.Items.Add(Format(rsOeilN, [inttostr( liste_indiceelementmodif[i-1])])); mdneant: form_quelobjet.ComboBox1.Items.Add(Format(rsNAntN, [inttostr( liste_indiceelementmodif[i-1])])); mdgroupe: form_quelobjet.ComboBox1.Items.Add(Format(rsGroupeN, [inttostr( liste_indiceelementmodif[i-1])])); end; end; with form_quelobjet do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; showmodal; end; if form_quelobjet.ComboBox1.ItemIndex>=0 then begin typeelementmodif:=liste_typeelementmodif[form_quelobjet.ComboBox1.ItemIndex]; indiceelementmodif:=liste_indiceelementmodif[form_quelobjet.ComboBox1.ItemIndex]; end else begin indiceelementmodif:=0; typeelementmodif:=mdneant; end; end; if not(modeduplication) then case typeelementmodif of mdmetre:begin oldnombremetre:=nombremetre; with saisiemetre do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemetre.Caption:=rsPropriTSDeCe23; saisiemetre.boutonsup.enabled:=true; saisiemetre.editx1.text:=floattostr(listemetre[-1+indiceelementmodif].a1x); saisiemetre.editx2.text:=floattostr(listemetre[-1+indiceelementmodif].a2x); saisiemetre.edity1.text:=floattostr(listemetre[-1+indiceelementmodif].a1y); saisiemetre.edity2.text:=floattostr(listemetre[-1+indiceelementmodif].a2y); saisiemetre.log1.Caption:=unitelongueur; saisiemetre.log2.Caption:=unitelongueur; saisiemetre.log3.Caption:=unitelongueur; saisiemetre.log4.Caption:=unitelongueur; if saisiemetre.showmodal=mrno then begin supprime1pmetre(listemetre,indiceelementmodif,nombremetre); sauvevirtuel; end else if nombremetre>oldnombremetre then begin listemetre[-1+indiceelementmodif].create(listemetre[-1+nombremetre].a1x, listemetre[-1+nombremetre].a1y,listemetre[-1+nombremetre].a2x,listemetre[-1+nombremetre].a2y); retaillepmetre(listemetre,nombremetre,nombremetre-1); dec(nombremetre); sauvevirtuel; end; end; mdfleche:begin oldnombrefleche:=nombrefleche; with saisiefle1 do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiefle1.boutonsup.enabled:=true; saisiefle1.caption:=rsPropriTSDeCe4; saisiefle1.editx1.text:=floattostr(listefleche[-1+indiceelementmodif].a1x); saisiefle1.editx2.text:=floattostr(listefleche[-1+indiceelementmodif].a2x); saisiefle1.edity1.text:=floattostr(listefleche[-1+indiceelementmodif].a1y); saisiefle1.edity2.text:=floattostr(listefleche[-1+indiceelementmodif].a2y); saisiefle1.spinepaisseur.value:=listefleche[-1+indiceelementmodif].epaisseur; saisiefle1.spintaille1.value:=listefleche[-1+indiceelementmodif].taille1; saisiefle1.spintaille2.value:=listefleche[-1+indiceelementmodif].taille2; case listefleche[-1+indiceelementmodif].ext1 of trien: saisiefle1.radioext1.itemindex:=0; tffleche: saisiefle1.radioext1.itemindex:=1; ttrait: saisiefle1.radioext1.itemindex:=2; trond: saisiefle1.radioext1.itemindex:=3; tcroix: saisiefle1.radioext1.itemindex:=4; tcroixx: saisiefle1.radioext1.itemindex:=5; tdisque: saisiefle1.radioext1.itemindex:=6; end; case listefleche[-1+indiceelementmodif].ext2 of trien: saisiefle1.radioext2.itemindex:=0; tffleche: saisiefle1.radioext2.itemindex:=1; ttrait: saisiefle1.radioext2.itemindex:=2; trond: saisiefle1.radioext2.itemindex:=3; tcroix: saisiefle1.radioext2.itemindex:=4; tcroixx: saisiefle1.radioext2.itemindex:=5; tdisque: saisiefle1.radioext2.itemindex:=6; end; case listefleche[-1+indiceelementmodif].styletrait of pssolid: saisiefle1.radiostyletrait.itemindex:=0; psdot: saisiefle1.radiostyletrait.itemindex:=1; psdash: saisiefle1.radiostyletrait.itemindex:=2; psdashdot: saisiefle1.radiostyletrait.itemindex:=3; psdashdotdot: saisiefle1.radiostyletrait.itemindex:=4; end; saisiefle1.colorgrid1.selected:=( listefleche[-1+indiceelementmodif].couleur) ; saisiefle1.log1.Caption:=unitelongueur; saisiefle1.log2.Caption:=unitelongueur; saisiefle1.log3.Caption:=unitelongueur; saisiefle1.log4.Caption:=unitelongueur; if saisiefle1.showmodal=mrno then begin supprime1pfleche(listefleche,indiceelementmodif,nombrefleche); sauvevirtuel; end else if nombrefleche>oldnombrefleche then begin listefleche[-1+indiceelementmodif].create(listefleche[-1+nombrefleche].a1x, listefleche[-1+nombrefleche].a1y,listefleche[-1+nombrefleche].a2x,listefleche[-1+nombrefleche].a2y, listefleche[-1+nombrefleche].epaisseur,listefleche[-1+nombrefleche].couleur, listefleche[-1+nombrefleche].ext1,listefleche[-1+nombrefleche].ext2, listefleche[-1+nombrefleche].styletrait, listefleche[-1+nombrefleche].taille1, listefleche[-1+nombrefleche].taille2); retaillepfleche(listefleche,nombrefleche,nombrefleche-1); dec(nombrefleche); sauvevirtuel; end; end; mdangle:begin oldnombreangle:=nombreangle; with saisieangle do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieangle.boutonsup.enabled:=true; saisieangle.editx1.text:=floattostr(listeangle[-1+indiceelementmodif].a1x); saisieangle.editx2.text:=floattostr(listeangle[-1+indiceelementmodif].a2x); saisieangle.editcx.text:=floattostr(listeangle[-1+indiceelementmodif].cx); saisieangle.editcy.text:=floattostr(listeangle[-1+indiceelementmodif].cy); saisieangle.edity1.text:=floattostr(listeangle[-1+indiceelementmodif].a1y); saisieangle.edity2.text:=floattostr(listeangle[-1+indiceelementmodif].a2y); saisieangle.log1.Caption:=unitelongueur; saisieangle.Caption:=rsPropriTSDeCe5; saisieangle.log2.Caption:=unitelongueur; saisieangle.log3.Caption:=unitelongueur; saisieangle.log4.Caption:=unitelongueur; saisieangle.log5.Caption:=unitelongueur; saisieangle.log6.Caption:=unitelongueur; if saisieangle.showmodal=mrno then begin supprime1pangle(listeangle,indiceelementmodif,nombreangle); sauvevirtuel; end else if nombreangle>oldnombreangle then begin listeangle[-1+indiceelementmodif].create(listeangle[-1+nombreangle].cx, listeangle[-1+nombreangle].cy,listeangle[-1+nombreangle].a1x, listeangle[-1+nombreangle].a1y,listeangle[-1+nombreangle].a2x,listeangle[-1+nombreangle].a2y); retaillepangle(listeangle,nombreangle,nombreangle-1); dec(nombreangle); sauvevirtuel; end; end; mdtexteaffiche: begin oldnombretexte:=nombretexte; with saisietexte2 do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; fontetexte2:=saisietexte2.edit1.Font; saisietexte2.fontdialog1.font:=saisietexte2.edit1.Font; saisietexte2.fontdialog1.font.name:=listetexteaffiche[-1+indiceelementmodif].policename; saisietexte2.fontdialog1.font.charset:=listetexteaffiche[-1+indiceelementmodif].policecharset; saisietexte2.fontdialog1.font.size:=listetexteaffiche[-1+indiceelementmodif].policesize; saisietexte2.fontdialog1.font.color:=listetexteaffiche[-1+indiceelementmodif].policecolor; saisietexte2.fontdialog1.font.pitch:=listetexteaffiche[-1+indiceelementmodif].policepitch; saisietexte2.fontdialog1.font.style:=[]; if listetexteaffiche[-1+indiceelementmodif].policefsbold then saisietexte2.fontdialog1.font.style:=saisietexte2.fontdialog1.font.style+[fsbold]; if listetexteaffiche[-1+indiceelementmodif].policefsitalic then saisietexte2.fontdialog1.font.style:=saisietexte2.fontdialog1.font.style+[fsitalic]; if listetexteaffiche[-1+indiceelementmodif].policefsunderline then saisietexte2.fontdialog1.font.style:=saisietexte2.fontdialog1.font.style+[fsunderline]; if listetexteaffiche[-1+indiceelementmodif].policefsstrikeout then saisietexte2.fontdialog1.font.style:=saisietexte2.fontdialog1.font.style+[fsstrikeout]; unit10.fontetexte2:=saisietexte2.fontdialog1.font; saisietexte2.edit1.text:=listetexteaffiche[-1+indiceelementmodif].texteluimeme; saisietexte2.editx.text:=floattostr(listetexteaffiche[-1+indiceelementmodif].x); saisietexte2.edity.text:=floattostr(listetexteaffiche[-1+indiceelementmodif].y); saisietexte2.boutonsup.enabled:=true; saisietexte2.log2.Caption:=unitelongueur; saisietexte2.log1.Caption:=unitelongueur; saisietexte2.Caption:=rsPropriTSDeCe6; if saisietexte2.showmodal=mrno then begin supprime1ptexteaffiche(listetexteaffiche,indiceelementmodif,nombretexte); sauvevirtuel; end else if nombretexte>oldnombretexte then begin listetexteaffiche[-1+indiceelementmodif].create({texteaafficher2,fontetexte2.name, fontetexte2.charset,fontetexte2.color,fontetexte2.size,fontetexte2.pitch, (fsbold in fontetexte2.style),(fsitalic in fontetexte2.style), (fsunderline in fontetexte2.style),(fsstrikeout in fontetexte2.style), textex,textey} listetexteaffiche[-1+nombretexte].texteluimeme, listetexteaffiche[-1+nombretexte].policename, listetexteaffiche[-1+nombretexte].policecharset,listetexteaffiche[-1+nombretexte].policecolor, listetexteaffiche[-1+nombretexte].policesize,listetexteaffiche[-1+nombretexte].policepitch, listetexteaffiche[-1+nombretexte].policefsbold,listetexteaffiche[-1+nombretexte].policefsitalic, listetexteaffiche[-1+nombretexte].policefsunderline,listetexteaffiche[-1+nombretexte].policefsstrikeout, listetexteaffiche[-1+nombretexte].x,listetexteaffiche[-1+nombretexte].y); retailleptexteaffiche(listetexteaffiche,nombretexte,nombretexte-1); dec(nombretexte); sauvevirtuel; end; end; mdsphere: begin oldnombresphere:=nombresphere; saisiesph.combomateriaux.items:=listemateriaux; saisiesph.combomateriaux.itemindex:=0; with saisiesph do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiesph.editx.text:=floattostr(listesphere[-1+indiceelementmodif].cx); saisiesph.edity.text:=floattostr(listesphere[-1+indiceelementmodif].cy); saisiesph.editrayon.text:=floattostr(listesphere[-1+indiceelementmodif].rayon); saisiesph.editnrouge.text:=floattostr(listesphere[-1+indiceelementmodif].indicerouge); saisiesph.editnvert.text:=floattostr(listesphere[-1+indiceelementmodif].indicevert); saisiesph.editnbleu.text:=floattostr(listesphere[-1+indiceelementmodif].indicebleu); case listesphere[-1+indiceelementmodif].reflechientrant of toujoursreflechi: saisiesph.radioentrant.ItemIndex:=0; jamaisreflechi: saisiesph.radioentrant.ItemIndex:=1; reflechisirefracte: saisiesph.radioentrant.ItemIndex:=2; reflechisipasrefracte: saisiesph.radioentrant.ItemIndex:=3; end; case listesphere[-1+indiceelementmodif].reflechisortant of toujoursreflechi: saisiesph.radiosortant.ItemIndex:=0; jamaisreflechi: saisiesph.radiosortant.ItemIndex:=1; reflechisirefracte: saisiesph.radiosortant.ItemIndex:=2; reflechisipasrefracte: saisiesph.radiosortant.ItemIndex:=3; end; saisiesph.boutonsup.enabled:=true; saisiesph.colorgrid1.selected:=( listesphere[-1+indiceelementmodif].couleurfond); saisiesph.log1.Caption:=unitelongueur; saisiesph.log2.Caption:=unitelongueur; saisiesph.log3.Caption:=unitelongueur; if saisiesph.showmodal=mrno then begin supprime1psphere(listesphere,indiceelementmodif,nombresphere); sauvevirtuel; end else if nombresphere>oldnombresphere then begin listesphere[-1+indiceelementmodif].create( listesphere[-1+nombresphere].cx, listesphere[-1+nombresphere].cy, listesphere[-1+nombresphere].rayon, listesphere[-1+nombresphere].indicerouge, listesphere[-1+nombresphere].indicebleu, listesphere[-1+nombresphere].indicevert, listesphere[-1+nombresphere].couleurbord, listesphere[-1+nombresphere].couleurfond, listesphere[-1+nombresphere].reflechientrant, listesphere[-1+nombresphere].reflechisortant); retaillepsphere(listesphere,nombresphere,nombresphere-1); dec(nombresphere); sauvevirtuel; end; end; mdpolyhedre:begin oldnombrepolyhedre:=nombrepolyhedre; saisiepolyhedre.combomateriaux.items:=listemateriaux; saisiepolyhedre.combomateriaux.itemindex:=0; with saisiepolyhedre do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiepolyhedre.ComboBox1.Items.Clear; nbpoly:=listepolyhedre[-1+indiceelementmodif].nombresommet; for i:=1 to listepolyhedre[-1+indiceelementmodif].nombresommet do begin saisiepolyhedre.ComboBox1.Items.Add(Format(rsSommet, [inttostr(i)])); ttpoly[i].ax:=listepolyhedre[-1+indiceelementmodif].messommets[i].ax; ttpoly[i].ay:=listepolyhedre[-1+indiceelementmodif].messommets[i].ay; end; saisiepolyhedre.ComboBox1.Itemindex:=0; saisiepolyhedre.editx.text:=floattostr(ttpoly[1].ax); saisiepolyhedre.edity.text:=floattostr(ttpoly[1].ay); saisiepolyhedre.editnrouge.text:=floattostr(listepolyhedre[-1+indiceelementmodif].indicerouge); saisiepolyhedre.editnvert.text:=floattostr(listepolyhedre[-1+indiceelementmodif].indicevert); saisiepolyhedre.editnbleu.text:=floattostr(listepolyhedre[-1+indiceelementmodif].indicebleu); case listepolyhedre[-1+indiceelementmodif].reflechientrant of toujoursreflechi: saisiepolyhedre.radioentrant.ItemIndex:=0; jamaisreflechi: saisiepolyhedre.radioentrant.ItemIndex:=1; reflechisirefracte: saisiepolyhedre.radioentrant.ItemIndex:=2; reflechisipasrefracte: saisiepolyhedre.radioentrant.ItemIndex:=3; end; case listepolyhedre[-1+indiceelementmodif].reflechisortant of toujoursreflechi: saisiepolyhedre.radiosortant.ItemIndex:=0; jamaisreflechi: saisiepolyhedre.radiosortant.ItemIndex:=1; reflechisirefracte: saisiepolyhedre.radiosortant.ItemIndex:=2; reflechisipasrefracte: saisiepolyhedre.radiosortant.ItemIndex:=3; end; saisiepolyhedre.boutonsup.enabled:=true; saisiepolyhedre.colorgrid1.selected:=( listepolyhedre[-1+indiceelementmodif].couleurfond); unit6.oldindex:=0; saisiepolyhedre.log1.Caption:=unitelongueur; saisiepolyhedre.log2.Caption:=unitelongueur; if saisiepolyhedre.showmodal=mrno then begin supprime1ppolyhedre(listepolyhedre,indiceelementmodif,nombrepolyhedre); sauvevirtuel; end else if nombrepolyhedre>oldnombrepolyhedre then begin listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+nombrepolyhedre].nombresommet, listepolyhedre[-1+nombrepolyhedre].messommets, listepolyhedre[-1+nombrepolyhedre].indicerouge, listepolyhedre[-1+nombrepolyhedre].indicebleu, listepolyhedre[-1+nombrepolyhedre].indicevert, listepolyhedre[-1+nombrepolyhedre].couleurbord, listepolyhedre[-1+nombrepolyhedre].couleurfond, listepolyhedre[-1+nombrepolyhedre].reflechientrant, listepolyhedre[-1+nombrepolyhedre].reflechisortant); retailleppolyhedre(listepolyhedre,nombrepolyhedre,nombrepolyhedre-1); dec(nombrepolyhedre); sauvevirtuel; end; end; mdprisme:begin oldnombreprisme:=nombreprisme; saisieprisme.combomateriaux.items:=listemateriaux; saisieprisme.combomateriaux.itemindex:=0; with saisieprisme do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieprisme.edit_gx.text:=floattostr(listeprisme[-1+indiceelementmodif].gx); saisieprisme.edit_gy.text:=floattostr(listeprisme[-1+indiceelementmodif].gy); saisieprisme.edit_hauteur.text:=floattostr(listeprisme[-1+indiceelementmodif].hauteur); saisieprisme.edit_angleausommet.text:=floattostr(listeprisme[-1+indiceelementmodif].angle_sommet); saisieprisme.edit_anglepolaire.text:=floattostr(listeprisme[-1+indiceelementmodif].angle_axe); saisieprisme.editnrouge.text:=floattostr(listeprisme[-1+indiceelementmodif].indicerouge); saisieprisme.editnvert.text:=floattostr(listeprisme[-1+indiceelementmodif].indicevert); saisieprisme.editnbleu.text:=floattostr(listeprisme[-1+indiceelementmodif].indicebleu); case listeprisme[-1+indiceelementmodif].reflechientrant of toujoursreflechi: saisieprisme.radioentrant.ItemIndex:=0; jamaisreflechi: saisieprisme.radioentrant.ItemIndex:=1; reflechisirefracte: saisieprisme.radioentrant.ItemIndex:=2; reflechisipasrefracte: saisieprisme.radioentrant.ItemIndex:=3; end; case listeprisme[-1+indiceelementmodif].reflechisortant of toujoursreflechi: saisieprisme.radiosortant.ItemIndex:=0; jamaisreflechi: saisieprisme.radiosortant.ItemIndex:=1; reflechisirefracte: saisieprisme.radiosortant.ItemIndex:=2; reflechisipasrefracte: saisieprisme.radiosortant.ItemIndex:=3; end; saisieprisme.boutonsup.enabled:=true; saisieprisme.colorgrid1.selected:=( listeprisme[-1+indiceelementmodif].couleurfond); saisieprisme.log1.Caption:=unitelongueur; saisieprisme.log2.Caption:=unitelongueur; saisieprisme.log3.Caption:=unitelongueur; if saisieprisme.showmodal=mrno then begin supprime1pprisme(listeprisme,indiceelementmodif,nombreprisme); sauvevirtuel; end else if nombreprisme>oldnombreprisme then begin listeprisme[-1+indiceelementmodif].create( listeprisme[-1+nombreprisme].gx, listeprisme[-1+nombreprisme].gy, listeprisme[-1+nombreprisme].ax, listeprisme[-1+nombreprisme].ay, listeprisme[-1+nombreprisme].bx, listeprisme[-1+nombreprisme].by, listeprisme[-1+nombreprisme].indicerouge, listeprisme[-1+nombreprisme].indicebleu, listeprisme[-1+nombreprisme].indicevert, listeprisme[-1+nombreprisme].couleurbord, listeprisme[-1+nombreprisme].couleurfond, listeprisme[-1+nombreprisme].reflechientrant, listeprisme[-1+nombreprisme].reflechisortant); retaillepprisme(listeprisme,nombreprisme,nombreprisme-1); dec(nombreprisme); sauvevirtuel; end; end; mdpolycercle:begin oldnombrepolycercle:=nombrepolycercle; saisiepolycercle.combomateriaux.items:=listemateriaux; saisiepolycercle.combomateriaux.itemindex:=0; with saisiepolycercle do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiepolycercle.ComboBox1.Items.Clear; nbpoly:=listepolycercle[-1+indiceelementmodif].nombresommet; for i:=1 to listepolycercle[-1+indiceelementmodif].nombresommet do begin saisiepolycercle.ComboBox1.Items.Add(Format(rsSommet, [inttostr(i)])); ttpoly[i].ax:=listepolycercle[-1+indiceelementmodif].messommets[i].ax; ttpoly[i].ay:=listepolycercle[-1+indiceelementmodif].messommets[i].ay; youri[i]:=listepolycercle[-1+indiceelementmodif].rectiligne[i]; helena[i]:=listepolycercle[-1+indiceelementmodif].agauche[i]; tavarich[i]:=listepolycercle[-1+indiceelementmodif].aigu[i]; selene[i]:=listepolycercle[-1+indiceelementmodif].rayon[i]; end; saisiecercle.trigogo:=listepolycercle[-1+indiceelementmodif].trigodirect; saisiepolycercle.ComboBox1.Itemindex:=0; saisiepolycercle.editx.text:=floattostr(ttpoly[1].ax); saisiepolycercle.edity.text:=floattostr(ttpoly[1].ay); if youri[1] then saisiepolycercle.radiorectiligne.itemindex:=0 else saisiepolycercle.radiorectiligne.itemindex:=1; if helena[1] then saisiepolycercle.radiorentrant.itemindex:=0 else saisiepolycercle.radiorentrant.itemindex:=1; if tavarich[1] then saisiepolycercle.radiogroupaigu.itemindex:=0 else saisiepolycercle.radiogroupaigu.itemindex:=1; saisiepolycercle.editrayon.text:=floattostr(selene[1]); saisiepolycercle.editnrouge.text:=floattostr(listepolycercle[-1+indiceelementmodif].indicerouge); saisiepolycercle.editnvert.text:=floattostr(listepolycercle[-1+indiceelementmodif].indicevert); saisiepolycercle.editnbleu.text:=floattostr(listepolycercle[-1+indiceelementmodif].indicebleu); case listepolycercle[-1+indiceelementmodif].reflechientrant of toujoursreflechi: saisiepolycercle.radioentrant.ItemIndex:=0; jamaisreflechi: saisiepolycercle.radioentrant.ItemIndex:=1; reflechisirefracte: saisiepolycercle.radioentrant.ItemIndex:=2; reflechisipasrefracte: saisiepolycercle.radioentrant.ItemIndex:=3; end; case listepolycercle[-1+indiceelementmodif].reflechisortant of toujoursreflechi: saisiepolycercle.radiosortant.ItemIndex:=0; jamaisreflechi: saisiepolycercle.radiosortant.ItemIndex:=1; reflechisirefracte: saisiepolycercle.radiosortant.ItemIndex:=2; reflechisipasrefracte: saisiepolycercle.radiosortant.ItemIndex:=3; end; saisiepolycercle.boutonsup.enabled:=true; saisiecercle.oldindex:=0; saisiepolycercle.colorgrid1.selected:=( listepolycercle[-1+indiceelementmodif].couleurfond); saisiepolycercle.log1.Caption:=unitelongueur; saisiepolycercle.log2.Caption:=unitelongueur; saisiepolycercle.log3.Caption:=unitelongueur; if saisiepolycercle.showmodal=mrno then begin supprime1ppolycercle(listepolycercle,indiceelementmodif,nombrepolycercle); sauvevirtuel; end else if nombrepolycercle>oldnombrepolycercle then begin listepolycercle[-1+indiceelementmodif].create( listepolycercle[-1+nombrepolycercle].nombresommet, listepolycercle[-1+nombrepolycercle].messommets, listepolycercle[-1+nombrepolycercle].mess, listepolycercle[-1+nombrepolycercle].rectiligne, listepolycercle[-1+nombrepolycercle].indicerouge, listepolycercle[-1+nombrepolycercle].indicebleu, listepolycercle[-1+nombrepolycercle].indicevert, listepolycercle[-1+nombrepolycercle].couleurbord, listepolycercle[-1+nombrepolycercle].couleurfond, listepolycercle[-1+nombrepolycercle].reflechientrant, listepolycercle[-1+nombrepolycercle].reflechisortant); retailleppolycercle(listepolycercle,nombrepolycercle,nombrepolycercle-1); dec(nombrepolycercle); sauvevirtuel; end; end; mdmiroirplan: begin oldnombremiroirplan:=nombremiroirplan; with saisiemiroirplan do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirplan.boutonsup.enabled:=true; saisiemiroirplan.editx1.text:=floattostr(listemiroirplan[-1+indiceelementmodif].a1x); saisiemiroirplan.editx2.text:=floattostr(listemiroirplan[-1+indiceelementmodif].a2x); saisiemiroirplan.edity1.text:=floattostr(listemiroirplan[-1+indiceelementmodif].a1y); saisiemiroirplan.edity2.text:=floattostr(listemiroirplan[-1+indiceelementmodif].a2y); saisiemiroirplan.cochehachures.checked:=listemiroirplan[-1+indiceelementmodif].hachures; saisiemiroirplan.editepaisseur.Value:=listemiroirplan[-1+indiceelementmodif].epaisseur; saisiemiroirplan.colorgrid1.selected:=( listemiroirplan[-1+indiceelementmodif].couleur); saisiemiroirplan.caption:= rsPropriTSDeCe7; saisiemiroirplan.log1.Caption:=unitelongueur; saisiemiroirplan.log2.Caption:=unitelongueur; saisiemiroirplan.log3.Caption:=unitelongueur; saisiemiroirplan.log4.Caption:=unitelongueur; if saisiemiroirplan.showmodal=mrno then begin supprime1pmiroirplan(listemiroirplan,indiceelementmodif,nombremiroirplan); sauvevirtuel; end else if nombremiroirplan>oldnombremiroirplan then begin listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+nombremiroirplan].a1x, listemiroirplan[-1+nombremiroirplan].a1y, listemiroirplan[-1+nombremiroirplan].a2x, listemiroirplan[-1+nombremiroirplan].a2y, listemiroirplan[-1+nombremiroirplan].epaisseur, listemiroirplan[-1+nombremiroirplan].couleur, listemiroirplan[-1+nombremiroirplan].hachures); retaillepmiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan-1); dec(nombremiroirplan); sauvevirtuel; end; end; mdReseau: begin oldnombreReseau:=nombreReseau; with fsaisiereseau do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; fsaisiereseau.boutonsup.enabled:=true; fsaisiereseau.editx1.text:=floattostr(listeReseau[-1+indiceelementmodif].a1x); fsaisiereseau.editx2.text:=floattostr(listeReseau[-1+indiceelementmodif].a2x); fsaisiereseau.edity1.text:=floattostr(listeReseau[-1+indiceelementmodif].a1y); fsaisiereseau.edity2.text:=floattostr(listeReseau[-1+indiceelementmodif].a2y); fsaisiereseau.cochehachures.checked:=listeReseau[-1+indiceelementmodif].hachures; fsaisiereseau.editepaisseur.Value:=listeReseau[-1+indiceelementmodif].epaisseur; fsaisiereseau.spinedit_ordre_min.value:=listeReseau[-1+indiceelementmodif].ordre_min; fsaisiereseau.spinedit_ordre_max.value:=listeReseau[-1+indiceelementmodif].ordre_max; fsaisiereseau.FloatSpinEdit1.value:=listeReseau[-1+indiceelementmodif].nombre_trait_par_mm; if listeReseau[-1+indiceelementmodif].entransmission then fsaisiereseau.radiogroup1.itemindex:=0 else fsaisiereseau.radiogroup1.itemindex:=1; fsaisiereseau.colorgrid1.selected:=( listeReseau[-1+indiceelementmodif].couleur); fsaisiereseau.caption:= rsPropriTSDeCe24; fsaisiereseau.log1.Caption:=unitelongueur; fsaisiereseau.log2.Caption:=unitelongueur; fsaisiereseau.log3.Caption:=unitelongueur; fsaisiereseau.log4.Caption:=unitelongueur; if fsaisiereseau.showmodal=mrno then begin supprime1pReseau(listeReseau,indiceelementmodif,nombreReseau); sauvevirtuel; end else if nombreReseau>oldnombreReseau then begin listeReseau[-1+indiceelementmodif].create( listeReseau[-1+nombreReseau].a1x, listeReseau[-1+nombreReseau].a1y, listeReseau[-1+nombreReseau].a2x, listeReseau[-1+nombreReseau].a2y, listeReseau[-1+nombreReseau].epaisseur, listeReseau[-1+nombreReseau].couleur, listeReseau[-1+nombreReseau].pas, listeReseau[-1+nombreReseau].entransmission, listeReseau[-1+nombreReseau].hachures, listeReseau[-1+nombreReseau].ordre_min, listeReseau[-1+nombreReseau].ordre_max); retaillepReseau(listeReseau,nombreReseau,nombreReseau-1); dec(nombreReseau); sauvevirtuel; end; end; mdecran: begin oldnombreecran:=nombreecran; with saisieecran do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieecran.boutonsup.enabled:=true; saisieecran.editx1.text:=floattostr(listeecran[-1+indiceelementmodif].a1x); saisieecran.editx2.text:=floattostr(listeecran[-1+indiceelementmodif].a2x); saisieecran.edity1.text:=floattostr(listeecran[-1+indiceelementmodif].a1y); saisieecran.edity2.text:=floattostr(listeecran[-1+indiceelementmodif].a2y); saisieecran.editepaisseur.Value:=listeecran[-1+indiceelementmodif].epaisseur; saisieecran.colorgrid1.selected:=( listeecran[-1+indiceelementmodif].couleur) ; saisieecran.caption:= rsPropriTSDeCe8; saisieecran.log1.Caption:=unitelongueur; saisieecran.log2.Caption:=unitelongueur; saisieecran.log3.Caption:=unitelongueur; saisieecran.log4.Caption:=unitelongueur; if saisieecran.showmodal=mrno then begin supprime1pecran(listeecran,indiceelementmodif,nombreecran); sauvevirtuel; end else if nombreecran>oldnombreecran then begin listeecran[-1+indiceelementmodif].create( listeecran[-1+nombreecran].a1x, listeecran[-1+nombreecran].a1y, listeecran[-1+nombreecran].a2x, listeecran[-1+nombreecran].a2y, listeecran[-1+nombreecran].epaisseur, listeecran[-1+nombreecran].couleur); retaillepecran(listeecran,nombreecran,nombreecran-1); dec(nombreecran); sauvevirtuel; end; end; mdoeil: begin oldnombreoeil:=nombreoeil; with saisieoeil do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieoeil.boutonsup.enabled:=true; saisieoeil.editx1.text:=floattostr(listeoeil[-1+indiceelementmodif].cx); saisieoeil.editx2.text:=floattostr(listeoeil[-1+indiceelementmodif].ax); saisieoeil.edity1.text:=floattostr(listeoeil[-1+indiceelementmodif].cy); saisieoeil.edity2.text:=floattostr(listeoeil[-1+indiceelementmodif].ay); saisieoeil.editepaisseur.Value:=listeoeil[-1+indiceelementmodif].epaisseur; saisieoeil.colorgrid1.selected:=( listeoeil[-1+indiceelementmodif].couleur) ; saisieoeil.caption:= rsPropriTSDeCe9; saisieoeil.log1.Caption:=unitelongueur; saisieoeil.log2.Caption:=unitelongueur; saisieoeil.log3.Caption:=unitelongueur; saisieoeil.log4.Caption:=unitelongueur; if saisieoeil.showmodal=mrno then begin supprime1poeil(listeoeil,indiceelementmodif,nombreoeil); sauvevirtuel; end else if nombreoeil>oldnombreoeil then begin listeoeil[-1+indiceelementmodif].create( listeoeil[-1+nombreoeil].cx, listeoeil[-1+nombreoeil].cy, listeoeil[-1+nombreoeil].ax, listeoeil[-1+nombreoeil].ay, listeoeil[-1+nombreoeil].epaisseur, listeoeil[-1+nombreoeil].couleur); retaillepoeil(listeoeil,nombreoeil,nombreoeil-1); dec(nombreoeil); sauvevirtuel; end; end; mddiaphragme: begin oldnombrediaphragme:=nombrediaphragme; with saisiediaphragme do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiediaphragme.boutonsup.enabled:=true; saisiediaphragme.editcx.text:=floattostr(listediaphragme[-1+indiceelementmodif].cx); saisiediaphragme.editcy.text:=floattostr(listediaphragme[-1+indiceelementmodif].cy); saisiediaphragme.editt.text:=floattostr(listediaphragme[-1+indiceelementmodif].anglepolaire); saisiediaphragme.editrint.text:=floattostr(listediaphragme[-1+indiceelementmodif].rint); saisiediaphragme.editrext.text:=floattostr(listediaphragme[-1+indiceelementmodif].rext); saisiediaphragme.spinedit1.Value:=listediaphragme[-1+indiceelementmodif].epaisseur; saisiediaphragme.colorgrid1.selected:=( listediaphragme[-1+indiceelementmodif].couleur) ; saisiediaphragme.caption:= rsPropriTSDeCe10; saisiediaphragme.log1.Caption:=unitelongueur; saisiediaphragme.log2.Caption:=unitelongueur; saisiediaphragme.log3.Caption:=unitelongueur; saisiediaphragme.log4.Caption:=unitelongueur; if saisiediaphragme.showmodal=mrno then begin supprime1pdiaphragme(listediaphragme,indiceelementmodif,nombrediaphragme); sauvevirtuel; end else if nombrediaphragme>oldnombrediaphragme then begin listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+nombrediaphragme].cx, listediaphragme[-1+nombrediaphragme].cy, listediaphragme[-1+nombrediaphragme].anglepolaire, listediaphragme[-1+nombrediaphragme].rint, listediaphragme[-1+nombrediaphragme].rext, listediaphragme[-1+nombrediaphragme].couleur, listediaphragme[-1+nombrediaphragme].epaisseur); retaillepdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme-1); dec(nombrediaphragme); sauvevirtuel; end; end; mdlsr: begin oldnombrelsr:=nombrelsr; with saisielsr do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielsr.boutonsup.enabled:=true; saisielsr.editx1.text:=floattostr(listelsr[-1+indiceelementmodif].a1x); saisielsr.editx2.text:=floattostr(listelsr[-1+indiceelementmodif].a2x); saisielsr.edity1.text:=floattostr(listelsr[-1+indiceelementmodif].a1y); saisielsr.edity2.text:=floattostr(listelsr[-1+indiceelementmodif].a2y); saisielsr.editepaisseur.Value:=listelsr[-1+indiceelementmodif].epaisseur; saisielsr.colorgrid1.selected:=( listelsr[-1+indiceelementmodif].couleur) ; saisielsr.caption:= rsPropriTSDeCe11; saisielsr.log1.Caption:=unitelongueur; saisielsr.log2.Caption:=unitelongueur; saisielsr.log3.Caption:=unitelongueur; saisielsr.log4.Caption:=unitelongueur; if saisielsr.showmodal=mrno then begin supprime1plsr(listelsr,indiceelementmodif,nombrelsr); sauvevirtuel; end else if nombrelsr>oldnombrelsr then begin listelsr[-1+indiceelementmodif].create( listelsr[-1+nombrelsr].a1x, listelsr[-1+nombrelsr].a1y, listelsr[-1+nombrelsr].a2x, listelsr[-1+nombrelsr].a2y, listelsr[-1+nombrelsr].epaisseur, listelsr[-1+nombrelsr].couleur); retailleplsr(listelsr,nombrelsr,nombrelsr-1); dec(nombrelsr); sauvevirtuel; end; end; mdrayon: begin oldnombrerayon:=nombrerayon; with saisierayon do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisierayon.boutonsup.enabled:=true; saisierayon.Spinmaxsegment.Value:=listerayon[-1+indiceelementmodif].maxsegment; saisierayon.Spinenfantmax.value:=listerayon[-1+indiceelementmodif].nombremaxenfant; saisierayon.editx1.text:=floattostr(listerayon[-1+indiceelementmodif].ax); saisierayon.editx2.text:=floattostr(listerayon[-1+indiceelementmodif].bx); saisierayon.edity1.text:=floattostr(listerayon[-1+indiceelementmodif].ay); saisierayon.edity2.text:=floattostr(listerayon[-1+indiceelementmodif].by); saisierayon.editvav.text:=listerayon[-1+indiceelementmodif].vav; saisierayon.editvaa.text:=listerayon[-1+indiceelementmodif].vaa; saisierayon.editepaisseur.Value:=listerayon[-1+indiceelementmodif].epaisseur; case listerayon[-1+indiceelementmodif].couleur of clred: saisierayon.radiocouleur.ItemIndex:=0; clgreen: saisierayon.radiocouleur.ItemIndex:=1; clblue: saisierayon.radiocouleur.ItemIndex:=2; clblack: saisierayon.radiocouleur.ItemIndex:=3; end; saisierayon.caption:= rsPropriTSDeCe12; saisierayon.log1.Caption:=unitelongueur; saisierayon.log2.Caption:=unitelongueur; saisierayon.log3.Caption:=unitelongueur; saisierayon.log4.Caption:=unitelongueur; if saisierayon.showmodal=mrno then begin supprime1prayon(listerayon,indiceelementmodif,nombrerayon); sauvevirtuel; end else if nombrerayon>oldnombrerayon then begin listerayon[-1+indiceelementmodif].create( listerayon[-1+nombrerayon].ax, listerayon[-1+nombrerayon].ay, listerayon[-1+nombrerayon].kx, listerayon[-1+nombrerayon].ky, listerayon[-1+nombrerayon].couleur, listerayon[-1+nombrerayon].epaisseur, listerayon[-1+nombrerayon].vav, listerayon[-1+nombrerayon].vaa, listerayon[-1+nombrerayon].nombremaxenfant, listerayon[-1+nombrerayon].maxsegment); retailleprayon(listerayon,nombrerayon,nombrerayon-1); dec(nombrerayon); sauvevirtuel; end; end; mdsourceponctuelle: begin oldnombresourceponctuelle:=nombresourceponctuelle; with saisiespp do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiespp.spinmaxenfant.value:=listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon; saisiespp.boutonsup.enabled:=true; saisiespp.spinnombrerayons.Value:=listesourceponctuelle[-1+indiceelementmodif].nombrederayon; saisiespp.editlistechemins.text:=listesourceponctuelle[-1+indiceelementmodif].listechemins; saisiespp.cochesurfacesonde.checked:=listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde; saisiespp.editx1.text:=floattostr(listesourceponctuelle[-1+indiceelementmodif].a1x); saisiespp.editx2.text:=floattostr(listesourceponctuelle[-1+indiceelementmodif].a2x); saisiespp.edity1.text:=floattostr(listesourceponctuelle[-1+indiceelementmodif].a1y); saisiespp.edity2.text:=floattostr(listesourceponctuelle[-1+indiceelementmodif].a2y); saisiespp.editsx.text:=floattostr(listesourceponctuelle[-1+indiceelementmodif].sx); saisiespp.editsy.text:=floattostr(listesourceponctuelle[-1+indiceelementmodif].sy); saisiespp.editvaa.text:=listesourceponctuelle[-1+indiceelementmodif].vaa; saisiespp.editvav.text:=listesourceponctuelle[-1+indiceelementmodif].vav; saisiespp.editepaisseur.Value:=listesourceponctuelle[-1+indiceelementmodif].epaisseur; saisiespp.Spinmaxsegment.Value:=listesourceponctuelle[-1+indiceelementmodif].maxsegment; if listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle then saisiespp.radiovirtuelle.ItemIndex:=1 else saisiespp.radiovirtuelle.ItemIndex:=0; case listesourceponctuelle[-1+indiceelementmodif].ray[1].couleur of clred: saisiespp.radiocouleur.ItemIndex:=0; clgreen: saisiespp.radiocouleur.ItemIndex:=1; clblue: saisiespp.radiocouleur.ItemIndex:=2; clblack: saisiespp.radiocouleur.ItemIndex:=3; end; saisiespp.caption:= rsPropriTSDeCe13; saisiespp.log1.Caption:=unitelongueur; saisiespp.log2.Caption:=unitelongueur; saisiespp.log3.Caption:=unitelongueur; saisiespp.log4.Caption:=unitelongueur; saisiespp.log5.Caption:=unitelongueur; saisiespp.log6.Caption:=unitelongueur; if listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle then begin saisiespp.cochesurfacesonde.enabled:=false; saisiespp.editlistechemins.enabled:=false; end; if saisiespp.showmodal=mrno then begin supprime1psourceponctuelle(listesourceponctuelle,indiceelementmodif,nombresourceponctuelle); sauvevirtuel; end else if nombresourceponctuelle>oldnombresourceponctuelle then begin listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+nombresourceponctuelle].nombrederayon, listesourceponctuelle[-1+nombresourceponctuelle].sx, listesourceponctuelle[-1+nombresourceponctuelle].sy, listesourceponctuelle[-1+nombresourceponctuelle].a1x, listesourceponctuelle[-1+nombresourceponctuelle].a1y, listesourceponctuelle[-1+nombresourceponctuelle].a2x, listesourceponctuelle[-1+nombresourceponctuelle].a2y, listesourceponctuelle[-1+nombresourceponctuelle].couleur, listesourceponctuelle[-1+nombresourceponctuelle].epaisseur, listesourceponctuelle[-1+nombresourceponctuelle].vav, listesourceponctuelle[-1+nombresourceponctuelle].vaa, listesourceponctuelle[-1+nombresourceponctuelle].maxenfantparrayon, listesourceponctuelle[-1+nombresourceponctuelle].sourcevirtuelle, listesourceponctuelle[-1+nombresourceponctuelle].tracersurfacesonde, listesourceponctuelle[-1+nombresourceponctuelle].listechemins, listesourceponctuelle[-1+nombresourceponctuelle].maxsegment) ; retaillepsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle-1); dec(nombresourceponctuelle); sauvevirtuel; end; end; mdondeplane: begin oldnombreondeplane:=nombreondeplane; with saisieopp do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieopp.spinmaxenfant.value:=listeondeplane[-1+indiceelementmodif].maxenfantparrayon; saisieopp.boutonsup.enabled:=true; saisieopp.Spinmaxsegment.Value:= listeondeplane[-1+indiceelementmodif].maxsegment; saisieopp.spinnombrerayons.Value:=listeondeplane[-1+indiceelementmodif].nombrederayon; saisieopp.editx1.text:=floattostr(listeondeplane[-1+indiceelementmodif].a1x); saisieopp.editx2.text:=floattostr(listeondeplane[-1+indiceelementmodif].a2x); saisieopp.edity1.text:=floattostr(listeondeplane[-1+indiceelementmodif].a1y); saisieopp.edity2.text:=floattostr(listeondeplane[-1+indiceelementmodif].a2y); saisieopp.editsx.text:=floattostr(listeondeplane[-1+indiceelementmodif].sx); saisieopp.editsy.text:=floattostr(listeondeplane[-1+indiceelementmodif].sy); saisieopp.editvaa.text:=listeondeplane[-1+indiceelementmodif].vaa; saisieopp.editvav.text:=listeondeplane[-1+indiceelementmodif].vav; saisieopp.editepaisseur.Value:=listeondeplane[-1+indiceelementmodif].ray[1].epaisseur; saisieopp.cochesurfaces.Checked:=listeondeplane[-1+indiceelementmodif].tracersurfacesonde; saisieopp.editlistechemins.text:=listeondeplane[-1+indiceelementmodif].listechemins; case listeondeplane[-1+indiceelementmodif].ray[1].couleur of clred: saisieopp.radiocouleur.ItemIndex:=0; clgreen: saisieopp.radiocouleur.ItemIndex:=1; clblue: saisieopp.radiocouleur.ItemIndex:=2; clblack: saisieopp.radiocouleur.ItemIndex:=3; end; saisieopp.caption:= rsPropriTSDeCe14; saisieopp.log1.Caption:=unitelongueur; saisieopp.log2.Caption:=unitelongueur; saisieopp.log3.Caption:=unitelongueur; saisieopp.log4.Caption:=unitelongueur; saisieopp.log5.Caption:=unitelongueur; saisieopp.log6.Caption:=unitelongueur; if saisieopp.showmodal=mrno then begin supprime1pondeplane(listeondeplane,indiceelementmodif,nombreondeplane); sauvevirtuel; end else if nombreondeplane>oldnombreondeplane then begin listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+nombreondeplane].nombrederayon, listeondeplane[-1+nombreondeplane].sx, listeondeplane[-1+nombreondeplane].sy, listeondeplane[-1+nombreondeplane].a1x, listeondeplane[-1+nombreondeplane].a1y, listeondeplane[-1+nombreondeplane].a2x, listeondeplane[-1+nombreondeplane].a2y, listeondeplane[-1+nombreondeplane].couleur, listeondeplane[-1+nombreondeplane].epaisseur, listeondeplane[-1+nombreondeplane].vav, listeondeplane[-1+nombreondeplane].vaa, listeondeplane[-1+nombreondeplane].maxenfantparrayon, listeondeplane[-1+nombreondeplane].tracersurfacesonde, listeondeplane[-1+nombreondeplane].listechemins, listeondeplane[-1+nombreondeplane].maxsegment); retaillepondeplane(listeondeplane,nombreondeplane,nombreondeplane-1); dec(nombreondeplane); sauvevirtuel; end; end; mdmiroirconique: begin oldnombremiroirconique:=nombremiroirconique; with saisiemiroirconique do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirconique.boutonsup.enabled:=true; saisiemiroirconique.editfx.text:=floattostr(listemiroirconique[-1+indiceelementmodif].fx); saisiemiroirconique.editfy.text:=floattostr(listemiroirconique[-1+indiceelementmodif].fy); saisiemiroirconique.edite.text:=floattostr(listemiroirconique[-1+indiceelementmodif].excentricite); saisiemiroirconique.editp.text:=floattostr(listemiroirconique[-1+indiceelementmodif].parametre); saisiemiroirconique.editt0.text:=floattostr(listemiroirconique[-1+indiceelementmodif].theta0); saisiemiroirconique.editt1.text:=floattostr(listemiroirconique[-1+indiceelementmodif].theta1); saisiemiroirconique.editt2.text:=floattostr(listemiroirconique[-1+indiceelementmodif].theta2); saisiemiroirconique.checkhachures.checked:=listemiroirconique[-1+indiceelementmodif].hachures; saisiemiroirconique.checkaxefocal.checked:=listemiroirconique[-1+indiceelementmodif].axefocal; saisiemiroirconique.checkconcave.checked:=listemiroirconique[-1+indiceelementmodif].concave; saisiemiroirconique.colorgrid1.selected:=( listemiroirconique[-1+indiceelementmodif].couleur); saisiemiroirconique.gridaxe.selected:=( listemiroirconique[-1+indiceelementmodif].couleuraxe) ; if listemiroirconique[-1+indiceelementmodif].excentricite<=0.99999999999 then saisiemiroirconique.caption:= rsPropriTSDeCe15 else if listemiroirconique[-1+indiceelementmodif].excentricite>=1.00000000001 then saisiemiroirconique.caption:= rsPropriTSDeCe16 else saisiemiroirconique.caption:= rsPropriTSDeCe17; saisiemiroirconique.log1.Caption:=unitelongueur; saisiemiroirconique.log2.Caption:=unitelongueur; saisiemiroirconique.log3.Caption:=unitelongueur; if saisiemiroirconique.showmodal=mrno then begin supprime1pmiroirconique(listemiroirconique,indiceelementmodif,nombremiroirconique); sauvevirtuel; end else if nombremiroirconique>oldnombremiroirconique then begin listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+nombremiroirconique].fx, listemiroirconique[-1+nombremiroirconique].fy, listemiroirconique[-1+nombremiroirconique].theta0, listemiroirconique[-1+nombremiroirconique].theta1, listemiroirconique[-1+nombremiroirconique].theta2, listemiroirconique[-1+nombremiroirconique].excentricite, listemiroirconique[-1+nombremiroirconique].parametre, listemiroirconique[-1+nombremiroirconique].concave, listemiroirconique[-1+nombremiroirconique].couleur, listemiroirconique[-1+nombremiroirconique].couleuraxe, listemiroirconique[-1+nombremiroirconique].hachures, listemiroirconique[-1+nombremiroirconique].axefocal); retaillepmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique-1); dec(nombremiroirconique); sauvevirtuel; end; end; mdmscopa: begin oldnombremscopa:=nombremscopa; with saisiemiroirscopa do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscopa.checktrou.checked:=listemscopa[-1+indiceelementmodif].trou; saisiemiroirscopa.editdiametretrou.enabled:=listemscopa[-1+indiceelementmodif].trou; saisiemiroirscopa.editdiametretrou.text:=floattostr(listemscopa[-1+indiceelementmodif].diametretrou); saisiemiroirscopa.boutonsup.enabled:=true; saisiemiroirscopa.editx1.text:=floattostr(listemscopa[-1+indiceelementmodif].a1x); saisiemiroirscopa.editx2.text:=floattostr(listemscopa[-1+indiceelementmodif].a2x); saisiemiroirscopa.edity1.text:=floattostr(listemscopa[-1+indiceelementmodif].a1y); saisiemiroirscopa.edity2.text:=floattostr(listemscopa[-1+indiceelementmodif].a2y); saisiemiroirscopa.editfocale.text:=floattostr(listemscopa[-1+indiceelementmodif].focale); saisiemiroirscopa.cochehachures.checked:=listemscopa[-1+indiceelementmodif].hachures; saisiemiroirscopa.cocheaxe.checked:=listemscopa[-1+indiceelementmodif].axefocal; saisiemiroirscopa.editepaisseur.Value:=listemscopa[-1+indiceelementmodif].epaisseur; saisiemiroirscopa.colorgrid1.selected:=( listemscopa[-1+indiceelementmodif].couleur) ; saisiemiroirscopa.gridaxe.selected:=( listemscopa[-1+indiceelementmodif].couleuraxe) ; saisiemiroirscopa.caption:= rsPropriTSDeCe18; saisiemiroirscopa.log1.Caption:=unitelongueur; saisiemiroirscopa.log2.Caption:=unitelongueur; saisiemiroirscopa.log3.Caption:=unitelongueur; saisiemiroirscopa.log4.Caption:=unitelongueur; saisiemiroirscopa.log5.Caption:=unitelongueur; saisiemiroirscopa.log6.Caption:=unitelongueur; if saisiemiroirscopa.showmodal=mrno then begin supprime1pmscopa(listemscopa,indiceelementmodif,nombremscopa); sauvevirtuel; end else if nombremscopa>oldnombremscopa then begin listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+nombremscopa].a1x, listemscopa[-1+nombremscopa].a1y, listemscopa[-1+nombremscopa].a2x, listemscopa[-1+nombremscopa].a2y, listemscopa[-1+nombremscopa].focale, listemscopa[-1+nombremscopa].epaisseur, listemscopa[-1+nombremscopa].couleur, listemscopa[-1+nombremscopa].couleuraxe, listemscopa[-1+nombremscopa].hachures, listemscopa[-1+nombremscopa].axefocal, listemscopa[-1+nombremscopa].trou, listemscopa[-1+nombremscopa].diametretrou); retaillepmscopa(listemscopa,nombremscopa,nombremscopa-1); dec(nombremscopa); sauvevirtuel; end; end; mdmscepa: begin oldnombremscepa:=nombremscepa; with saisiemiroirscepa do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscepa.checktrou.checked:=listemscepa[-1+indiceelementmodif].trou; saisiemiroirscepa.editdiametretrou.enabled:=listemscepa[-1+indiceelementmodif].trou; saisiemiroirscepa.editdiametretrou.text:=floattostr(listemscepa[-1+indiceelementmodif].diametretrou); saisiemiroirscepa.boutonsup.enabled:=true; saisiemiroirscepa.editx1.text:=floattostr(listemscepa[-1+indiceelementmodif].a1x); saisiemiroirscepa.editx2.text:=floattostr(listemscepa[-1+indiceelementmodif].a2x); saisiemiroirscepa.edity1.text:=floattostr(listemscepa[-1+indiceelementmodif].a1y); saisiemiroirscepa.edity2.text:=floattostr(listemscepa[-1+indiceelementmodif].a2y); saisiemiroirscepa.editfocale.text:=floattostr(listemscepa[-1+indiceelementmodif].focale); saisiemiroirscepa.cochehachures.checked:=listemscepa[-1+indiceelementmodif].hachures; saisiemiroirscepa.cocheaxe.checked:=listemscepa[-1+indiceelementmodif].axefocal; saisiemiroirscepa.editepaisseur.Value:=listemscepa[-1+indiceelementmodif].epaisseur; saisiemiroirscepa.colorgrid1.selected:=( listemscepa[-1+indiceelementmodif].couleur) ; saisiemiroirscepa.gridaxe.selected:=( listemscepa[-1+indiceelementmodif].couleuraxe) ; saisiemiroirscepa.caption:= rsPropriTSDeCe19; saisiemiroirscepa.log1.Caption:=unitelongueur; saisiemiroirscepa.log2.Caption:=unitelongueur; saisiemiroirscepa.log3.Caption:=unitelongueur; saisiemiroirscepa.log4.Caption:=unitelongueur; saisiemiroirscepa.log5.Caption:=unitelongueur; saisiemiroirscepa.log6.Caption:=unitelongueur; if saisiemiroirscepa.showmodal=mrno then begin supprime1pmscepa(listemscepa,indiceelementmodif,nombremscepa); sauvevirtuel; end else if nombremscepa>oldnombremscepa then begin listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+nombremscepa].a1x, listemscepa[-1+nombremscepa].a1y, listemscepa[-1+nombremscepa].a2x, listemscepa[-1+nombremscepa].a2y, listemscepa[-1+nombremscepa].focale, listemscepa[-1+nombremscepa].epaisseur, listemscepa[-1+nombremscepa].couleur, listemscepa[-1+nombremscepa].couleuraxe, listemscepa[-1+nombremscepa].hachures, listemscepa[-1+nombremscepa].axefocal, listemscepa[-1+nombremscepa].trou, listemscepa[-1+nombremscepa].diametretrou); retaillepmscepa(listemscepa,nombremscepa,nombremscepa-1); dec(nombremscepa); sauvevirtuel; end; end; mdmscore: begin oldnombremscore:=nombremscore; with saisiemiroirscore do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscore.boutonsup.enabled:=true; saisiemiroirscore.checkobtu.Checked:=not(listemscore[-1+indiceelementmodif].aigu); saisiemiroirscore.editx1.text:=floattostr(listemscore[-1+indiceelementmodif].a1x); saisiemiroirscore.editx2.text:=floattostr(listemscore[-1+indiceelementmodif].a2x); saisiemiroirscore.edity1.text:=floattostr(listemscore[-1+indiceelementmodif].a1y); saisiemiroirscore.edity2.text:=floattostr(listemscore[-1+indiceelementmodif].a2y); saisiemiroirscore.editrayoncourbure.text:=floattostr(listemscore[-1+indiceelementmodif].rayoncourbure); saisiemiroirscore.cochehachures.checked:=listemscore[-1+indiceelementmodif].hachures; saisiemiroirscore.cocheaxe.checked:=listemscore[-1+indiceelementmodif].axefocal; saisiemiroirscore.editepaisseur.Value:=listemscore[-1+indiceelementmodif].epaisseur; saisiemiroirscore.colorgrid1.selected:=( listemscore[-1+indiceelementmodif].couleur) ; saisiemiroirscore.gridaxe.selected:=( listemscore[-1+indiceelementmodif].couleuraxe) ; saisiemiroirscore.caption:= rsPropriTSDeCe18; saisiemiroirscore.log1.Caption:=unitelongueur; saisiemiroirscore.log2.Caption:=unitelongueur; saisiemiroirscore.log3.Caption:=unitelongueur; saisiemiroirscore.log4.Caption:=unitelongueur; saisiemiroirscore.log5.Caption:=unitelongueur; saisiemiroirscore.cochetrou.checked:=listemscore[-1+indiceelementmodif].trou; if listemscore[-1+indiceelementmodif].trou then saisiemiroirscore.editdiametretrou.text:=floattostr(listemscore[-1+indiceelementmodif].diametretrou); if saisiemiroirscore.showmodal=mrno then begin supprime1pmscore(listemscore,indiceelementmodif,nombremscore); sauvevirtuel; end else if nombremscore>oldnombremscore then begin listemscore[-1+indiceelementmodif].create2( listemscore[-1+nombremscore].a1x, listemscore[-1+nombremscore].a1y, listemscore[-1+nombremscore].a2x, listemscore[-1+nombremscore].a2y, listemscore[-1+nombremscore].rayoncourbure, listemscore[-1+nombremscore].epaisseur, listemscore[-1+nombremscore].couleur, listemscore[-1+nombremscore].couleuraxe, listemscore[-1+nombremscore].hachures, listemscore[-1+nombremscore].axefocal, listemscore[-1+nombremscore].aigu, listemscore[-1+nombremscore].trou, listemscore[-1+nombremscore].diametretrou); retaillepmscore(listemscore,nombremscore,nombremscore-1); dec(nombremscore); sauvevirtuel; end; end; mdmscere: begin oldnombremscere:=nombremscere; with saisiemiroirscere do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscere.boutonsup.enabled:=true; saisiemiroirscere.checkobtu.Checked:=not(listemscere[-1+indiceelementmodif].aigu); saisiemiroirscere.editx1.text:=floattostr(listemscere[-1+indiceelementmodif].a1x); saisiemiroirscere.editx2.text:=floattostr(listemscere[-1+indiceelementmodif].a2x); saisiemiroirscere.edity1.text:=floattostr(listemscere[-1+indiceelementmodif].a1y); saisiemiroirscere.edity2.text:=floattostr(listemscere[-1+indiceelementmodif].a2y); saisiemiroirscere.editrayoncourbure.text:=floattostr(listemscere[-1+indiceelementmodif].rayoncourbure); saisiemiroirscere.cochehachures.checked:=listemscere[-1+indiceelementmodif].hachures; saisiemiroirscere.cocheaxe.checked:=listemscere[-1+indiceelementmodif].axefocal; saisiemiroirscere.editepaisseur.Value:=listemscere[-1+indiceelementmodif].epaisseur; saisiemiroirscere.colorgrid1.selected:=( listemscere[-1+indiceelementmodif].couleur); saisiemiroirscere.gridaxe.selected:=( listemscere[-1+indiceelementmodif].couleuraxe); saisiemiroirscere.caption:= rsPropriTSDeCe19; saisiemiroirscere.log1.Caption:=unitelongueur; saisiemiroirscere.log2.Caption:=unitelongueur; saisiemiroirscere.log3.Caption:=unitelongueur; saisiemiroirscere.log4.Caption:=unitelongueur; saisiemiroirscere.log5.Caption:=unitelongueur; saisiemiroirscere.cochetrou.checked:=listemscere[-1+indiceelementmodif].trou; if listemscere[-1+indiceelementmodif].trou then saisiemiroirscere.editdiametretrou.text:=floattostr(listemscere[-1+indiceelementmodif].diametretrou); if saisiemiroirscere.showmodal=mrno then begin supprime1pmscere(listemscere,indiceelementmodif,nombremscere); sauvevirtuel; end else if nombremscere>oldnombremscere then begin listemscere[-1+indiceelementmodif].create2( listemscere[-1+nombremscere].a1x, listemscere[-1+nombremscere].a1y, listemscere[-1+nombremscere].a2x, listemscere[-1+nombremscere].a2y, listemscere[-1+nombremscere].rayoncourbure, listemscere[-1+nombremscere].epaisseur, listemscere[-1+nombremscere].couleur, listemscere[-1+nombremscere].couleuraxe, listemscere[-1+nombremscere].hachures, listemscere[-1+nombremscere].axefocal, listemscere[-1+nombremscere].aigu, listemscere[-1+nombremscere].trou, listemscere[-1+nombremscere].diametretrou); retaillepmscere(listemscere,nombremscere,nombremscere-1); dec(nombremscere); sauvevirtuel; end; end; mdlmc: begin oldnombrelmc:=nombrelmc; with saisielentillemc do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielentillemc.boutonsup.enabled:=true; saisielentillemc.editx1.text:=floattostr(listelmc[-1+indiceelementmodif].a1x); saisielentillemc.editx2.text:=floattostr(listelmc[-1+indiceelementmodif].a2x); saisielentillemc.edity1.text:=floattostr(listelmc[-1+indiceelementmodif].a1y); saisielentillemc.edity2.text:=floattostr(listelmc[-1+indiceelementmodif].a2y); saisielentillemc.editfocale.text:=floattostr(listelmc[-1+indiceelementmodif].focale); saisielentillemc.cocheaxe.checked:=listelmc[-1+indiceelementmodif].axefocal; saisielentillemc.editepaisseur.Value:=listelmc[-1+indiceelementmodif].epaisseur; saisielentillemc.colorgrid1.selected:=( listelmc[-1+indiceelementmodif].couleur) ; saisielentillemc.gridaxe.selected:=( listelmc[-1+indiceelementmodif].couleuraxe) ; saisielentillemc.caption:= rsPropriTSDeCe20; saisielentillemc.log1.Caption:=unitelongueur; saisielentillemc.log2.Caption:=unitelongueur; saisielentillemc.log3.Caption:=unitelongueur; saisielentillemc.log4.Caption:=unitelongueur; saisielentillemc.log5.Caption:=unitelongueur; if saisielentillemc.showmodal=mrno then begin supprime1plmc(listelmc,indiceelementmodif,nombrelmc); sauvevirtuel; end else if nombrelmc>oldnombrelmc then begin listelmc[-1+indiceelementmodif].create2( listelmc[-1+nombrelmc].a1x, listelmc[-1+nombrelmc].a1y, listelmc[-1+nombrelmc].a2x, listelmc[-1+nombrelmc].a2y, listelmc[-1+nombrelmc].focale, listelmc[-1+nombrelmc].epaisseur, listelmc[-1+nombrelmc].couleur, listelmc[-1+nombrelmc].couleuraxe, listelmc[-1+nombrelmc].axefocal); retailleplmc(listelmc,nombrelmc,nombrelmc-1); dec(nombrelmc); sauvevirtuel; end; end; mdlec: begin oldnombrelec:=nombrelec; saisielentille.combomateriaux.items:=listemateriaux; saisielentille.combomateriaux.itemindex:=0; with saisielentille do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielentille.boutonsup.enabled:=true; saisielentille.edits1x.text:=floattostr(listelec[-1+indiceelementmodif].s1x); saisielentille.edits2x.text:=floattostr(listelec[-1+indiceelementmodif].s2x); saisielentille.edits1y.text:=floattostr(listelec[-1+indiceelementmodif].s1y); saisielentille.edits2y.text:=floattostr(listelec[-1+indiceelementmodif].s2y); saisielentille.editr1.text:=floattostr(listelec[-1+indiceelementmodif].r1); saisielentille.editr2.text:=floattostr(listelec[-1+indiceelementmodif].r2); saisielentille.editdiametre.text:=floattostr(listelec[-1+indiceelementmodif].diametre); saisielentille.editnrouge.text:=floattostr(listelec[-1+indiceelementmodif].indicerouge); saisielentille.editnvert.text:=floattostr(listelec[-1+indiceelementmodif].indicevert); saisielentille.editnbleu.text:=floattostr(listelec[-1+indiceelementmodif].indicebleu); saisielentille.caption:= rsPropriTSDeCe21; saisielentille.colorgrid1.selected:=( listelec[-1+indiceelementmodif].couleurfond); saisielentille.log1.Caption:=unitelongueur; saisielentille.log2.Caption:=unitelongueur; saisielentille.log3.Caption:=unitelongueur; saisielentille.log4.Caption:=unitelongueur; saisielentille.log5.Caption:=unitelongueur; saisielentille.log6.Caption:=unitelongueur; saisielentille.log7.Caption:=unitelongueur; if saisielentille.showmodal=mrno then begin supprime1plec(listelec,indiceelementmodif,nombrelec); sauvevirtuel; end else if nombrelec>oldnombrelec then begin listelec[-1+indiceelementmodif].create( listelec[-1+nombrelec].s1x, listelec[-1+nombrelec].s1y, listelec[-1+nombrelec].s2x, listelec[-1+nombrelec].s2y, listelec[-1+nombrelec].r1, listelec[-1+nombrelec].r2, listelec[-1+nombrelec].diametre, listelec[-1+nombrelec].couleurfond, listelec[-1+nombrelec].couleuraxe, listelec[-1+nombrelec].axefocal,listelec[-1+nombrelec].indicerouge, listelec[-1+nombrelec].indicebleu, listelec[-1+nombrelec].indicevert, listelec[-1+nombrelec].reflechientrant, listelec[-1+nombrelec].reflechisortant); retailleplec(listelec,nombrelec,nombrelec-1); dec(nombrelec); sauvevirtuel; end; end; mdlmd: begin oldnombrelmd:=nombrelmd; with saisielentillemd do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielentillemd.boutonsup.enabled:=true; saisielentillemd.editx1.text:=floattostr(listelmd[-1+indiceelementmodif].a1x); saisielentillemd.editx2.text:=floattostr(listelmd[-1+indiceelementmodif].a2x); saisielentillemd.edity1.text:=floattostr(listelmd[-1+indiceelementmodif].a1y); saisielentillemd.edity2.text:=floattostr(listelmd[-1+indiceelementmodif].a2y); saisielentillemd.editfocale.text:=floattostr(listelmd[-1+indiceelementmodif].focale); saisielentillemd.cocheaxe.checked:=listelmd[-1+indiceelementmodif].axefocal; saisielentillemd.editepaisseur.Value:=listelmd[-1+indiceelementmodif].epaisseur; saisielentillemd.colorgrid1.selected:=( listelmd[-1+indiceelementmodif].couleur) ; saisielentillemd.gridaxe.selected:=( listelmd[-1+indiceelementmodif].couleuraxe) ; saisielentillemd.caption:= rsPropriTSDeCe22; saisielentillemd.log1.Caption:=unitelongueur; saisielentillemd.log2.Caption:=unitelongueur; saisielentillemd.log3.Caption:=unitelongueur; saisielentillemd.log4.Caption:=unitelongueur; saisielentillemd.log5.Caption:=unitelongueur; if saisielentillemd.showmodal=mrno then begin supprime1plmd(listelmd,indiceelementmodif,nombrelmd); sauvevirtuel; end else if nombrelmd>oldnombrelmd then begin listelmd[-1+indiceelementmodif].create2( listelmd[-1+nombrelmd].a1x, listelmd[-1+nombrelmd].a1y, listelmd[-1+nombrelmd].a2x, listelmd[-1+nombrelmd].a2y, listelmd[-1+nombrelmd].focale, listelmd[-1+nombrelmd].epaisseur, listelmd[-1+nombrelmd].couleur, listelmd[-1+nombrelmd].couleuraxe, listelmd[-1+nombrelmd].axefocal); retailleplmd(listelmd,nombrelmd,nombrelmd-1); dec(nombrelmd); sauvevirtuel; end; end; end; {du case} if modeduplication then begin case typeelementmodif of mdtexteaffiche: if nombretextelistetexteaffiche[-1+indiceelementmodif].x) or (y1<>listetexteaffiche[-1+indiceelementmodif].y)) then begin retailleptexteaffiche(listetexteaffiche,nombretexte,nombretexte+1); if listetexteaffiche[-1+nombretexte+1].create(listetexteaffiche[-1+indiceelementmodif].texteluimeme, listetexteaffiche[-1+indiceelementmodif].policename,listetexteaffiche[-1+indiceelementmodif]. policecharset,listetexteaffiche[-1+indiceelementmodif].policecolor, listetexteaffiche[-1+indiceelementmodif].policesize, listetexteaffiche[-1+indiceelementmodif].policepitch, listetexteaffiche[-1+indiceelementmodif].policefsbold, listetexteaffiche[-1+indiceelementmodif].policefsitalic, listetexteaffiche[-1+indiceelementmodif].policefsunderline, listetexteaffiche[-1+indiceelementmodif].policefsstrikeout, x1,y1) then listetexteaffiche[-1+indiceelementmodif].create(listetexteaffiche[-1+indiceelementmodif].texteluimeme, listetexteaffiche[-1+indiceelementmodif].policename,listetexteaffiche[-1+indiceelementmodif]. policecharset,listetexteaffiche[-1+indiceelementmodif].policecolor, listetexteaffiche[-1+indiceelementmodif].policesize, listetexteaffiche[-1+indiceelementmodif].policepitch, listetexteaffiche[-1+indiceelementmodif].policefsbold, listetexteaffiche[-1+indiceelementmodif].policefsitalic, listetexteaffiche[-1+indiceelementmodif].policefsunderline, listetexteaffiche[-1+indiceelementmodif].policefsstrikeout, x1,y1) else listetexteaffiche[-1+indiceelementmodif].create(listetexteaffiche[-1+indiceelementmodif].texteluimeme, listetexteaffiche[-1+indiceelementmodif].policename,listetexteaffiche[-1+indiceelementmodif]. policecharset,listetexteaffiche[-1+indiceelementmodif].policecolor, listetexteaffiche[-1+indiceelementmodif].policesize, listetexteaffiche[-1+indiceelementmodif].policepitch, listetexteaffiche[-1+indiceelementmodif].policefsbold, listetexteaffiche[-1+indiceelementmodif].policefsitalic, listetexteaffiche[-1+indiceelementmodif].policefsunderline, listetexteaffiche[-1+indiceelementmodif].policefsstrikeout, listetexteaffiche[-1+indiceelementmodif].x, listetexteaffiche[-1+indiceelementmodif].y); retailleptexteaffiche(listetexteaffiche,nombretexte+1,nombretexte); Rafraichit; end; end; mdsphere: begin if ((x1<>listesphere[-1+indiceelementmodif].cx) or (y1<>listesphere[-1+indiceelementmodif].cy)) then begin retaillepsphere(listesphere,nombresphere,nombresphere+1); if listesphere[-1+nombresphere+1].create( x1,y1, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) then listesphere[-1+indiceelementmodif].create(x1,y1, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) else listesphere[-1+indiceelementmodif].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant); retaillepsphere(listesphere,nombresphere+1,nombresphere); Rafraichit; end; end; mdmiroirplan: begin retaillePMiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan+1); if listemiroirplan[-1+nombremiroirplan+1].create( listemiroirplan[-1+indiceelementmodif].a1x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a1y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].a2x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a2y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) then listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a1y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].a2x+x1- listemiroirplan[-1+indiceelementmodif].cx, listemiroirplan[-1+indiceelementmodif].a2y+y1- listemiroirplan[-1+indiceelementmodif].cy, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) else listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures); retaillePMiroirplan(listemiroirplan,nombremiroirplan+1,nombremiroirplan); Rafraichit; end; {du cas miroir plan} mdReseau: begin retaillePReseau(listeReseau,nombreReseau,nombreReseau+1); if listeReseau[-1+nombreReseau+1].create( listeReseau[-1+indiceelementmodif].a1x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a1y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].a2x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a2y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max) then listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a1y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].a2x+x1- listeReseau[-1+indiceelementmodif].cx, listeReseau[-1+indiceelementmodif].a2y+y1- listeReseau[-1+indiceelementmodif].cy, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max) else listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max); retaillePReseau(listeReseau,nombreReseau+1,nombreReseau); Rafraichit; end; {du cas reseau} mdpolyhedre: if ( (x1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ay)) then begin retaillePpolyhedre(listepolyhedre,nombrepolyhedre,nombrepolyhedre+1); for i:=1 to listepolyhedre[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolyhedre[-1+indiceelementmodif].messommets[i].ax+x1- (listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ax+ listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace+1].ax)/2; ttpoly[i].ay:=listepolyhedre[-1+indiceelementmodif].messommets[i].ay+y1- (listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ay+ listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace+1].ay)/2; end; if listepolyhedre[-1+nombrepolyhedre+1].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) then listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) else listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, listepolyhedre[-1+indiceelementmodif].messommets, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant); retaillePpolyhedre(listepolyhedre,nombrepolyhedre+1,nombrepolyhedre); Rafraichit; end; mdpolycercle: if ( (x1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay)) then begin retaillePpolycercle(listepolycercle,nombrepolycercle,nombrepolycercle+1); for i:=1 to listepolycercle[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolycercle[-1+indiceelementmodif].messommets[i].ax+x1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ax)/2; ttpoly[i].ay:=listepolycercle[-1+indiceelementmodif].messommets[i].ay+y1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ay)/2; ttsom[i].ax:=listepolycercle[-1+indiceelementmodif].mess[i].ax+x1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ax)/2; ttsom[i].ay:=listepolycercle[-1+indiceelementmodif].mess[i].ay+y1- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace+1].ay)/2; end; if listepolycercle[-1+nombrepolycercle+1].create( listepolycercle[-1+indiceelementmodif].nombresommet, ttpoly,ttsom, listepolycercle[-1+indiceelementmodif].rectiligne, listepolycercle[-1+indiceelementmodif].indicerouge, listepolycercle[-1+indiceelementmodif].indicebleu, listepolycercle[-1+indiceelementmodif].indicevert, listepolycercle[-1+indiceelementmodif].couleurbord, listepolycercle[-1+indiceelementmodif].couleurfond, listepolycercle[-1+indiceelementmodif].reflechientrant, listepolycercle[-1+indiceelementmodif].reflechisortant) then listepolycercle[-1+indiceelementmodif].create( listepolycercle[-1+indiceelementmodif].nombresommet, ttpoly,ttsom, listepolycercle[-1+indiceelementmodif].rectiligne, listepolycercle[-1+indiceelementmodif].indicerouge, listepolycercle[-1+indiceelementmodif].indicebleu, listepolycercle[-1+indiceelementmodif].indicevert, listepolycercle[-1+indiceelementmodif].couleurbord, listepolycercle[-1+indiceelementmodif].couleurfond, listepolycercle[-1+indiceelementmodif].reflechientrant, listepolycercle[-1+indiceelementmodif].reflechisortant) else listepolycercle[-1+indiceelementmodif].create( listepolycercle[-1+indiceelementmodif].nombresommet, listepolycercle[-1+indiceelementmodif].messommets, listepolycercle[-1+indiceelementmodif].mess, listepolycercle[-1+indiceelementmodif].rectiligne, listepolycercle[-1+indiceelementmodif].indicerouge, listepolycercle[-1+indiceelementmodif].indicebleu, listepolycercle[-1+indiceelementmodif].indicevert, listepolycercle[-1+indiceelementmodif].couleurbord, listepolycercle[-1+indiceelementmodif].couleurfond, listepolycercle[-1+indiceelementmodif].reflechientrant, listepolycercle[-1+indiceelementmodif].reflechisortant); retaillePpolycercle(listepolycercle,nombrepolycercle+1,nombrepolycercle); Rafraichit; end; mdgroupe: begin listegroupe[-1+indiceelementmodif].translate(x1- listegroupe[-1+indiceelementmodif].isox,y1-listegroupe[-1+indiceelementmodif].isoy); Rafraichit; end; mdecran: begin retaillePecran(listeecran,nombreecran,nombreecran+1); if listeecran[-1+nombreecran+1].create( listeecran[-1+indiceelementmodif].a1x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a1y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].a2x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a2y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) then listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a1y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].a2x+x1- listeecran[-1+indiceelementmodif].cx, listeecran[-1+indiceelementmodif].a2y+y1- listeecran[-1+indiceelementmodif].cy, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) else listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur); retaillePecran(listeecran,nombreecran+1,nombreecran); Rafraichit; end; {du cas ecran} mddiaphragme: begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2(x1,y1, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2(x1,y1, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; {du cas diaphragme} mdlsr: begin retaillePlsr(listelsr,nombrelsr,nombrelsr+1); if listelsr[-1+nombrelsr+1].create( listelsr[-1+indiceelementmodif].a1x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a1y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].a2x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a2y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) then listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a1y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].a2x+x1- listelsr[-1+indiceelementmodif].cx, listelsr[-1+indiceelementmodif].a2y+y1- listelsr[-1+indiceelementmodif].cy, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) else listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur); retaillePlsr(listelsr,nombrelsr+1,nombrelsr); Rafraichit; end; {du cas lsr} mdrayon: begin retaillePrayon(listerayon,nombrerayon,nombrerayon+1); if listerayon[-1+nombrerayon+1].create( listerayon[-1+indiceelementmodif].ax+x1- listerayon[-1+indiceelementmodif].cx, listerayon[-1+indiceelementmodif].ay+y1- listerayon[-1+indiceelementmodif].cy, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) then listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax+x1- listerayon[-1+indiceelementmodif].cx, listerayon[-1+indiceelementmodif].ay+y1- listerayon[-1+indiceelementmodif].cy, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) else listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment); retaillePrayon(listerayon,nombrerayon+1,nombrerayon); Rafraichit; end; {du cas rayon} mdsourceponctuelle: begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].sy+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a1x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a1y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a2x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a2y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].sy+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a1x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a1y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].a2x+x1-listesourceponctuelle[-1+indiceelementmodif].gx, listesourceponctuelle[-1+indiceelementmodif].a2y+y1-listesourceponctuelle[-1+indiceelementmodif].gy, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; mdondeplane: begin retaillePondeplane(listeondeplane,nombreondeplane,nombreondeplane+1); if listeondeplane[-1+nombreondeplane+1].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].sy+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a1x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a2y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) then listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].sy+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a1x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x+x1- listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a2y+y1- listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) else listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment); retaillePondeplane(listeondeplane,nombreondeplane+1,nombreondeplane); Rafraichit; end; {du cas ondeplane} mdmscopa: begin retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create2( listemscopa[-1+indiceelementmodif].a1x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a1y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].a2x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a2y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a1y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].a2x+x1- listemscopa[-1+indiceelementmodif].sx, listemscopa[-1+indiceelementmodif].a2y+y1- listemscopa[-1+indiceelementmodif].sy, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; {du cas mscopa} mdmscore: begin retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create2( listemscore[-1+indiceelementmodif].a1x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a1y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].a2x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a2y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a1y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].a2x+x1- listemscore[-1+indiceelementmodif].sx, listemscore[-1+indiceelementmodif].a2y+y1- listemscore[-1+indiceelementmodif].sy, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; {du cas mscore} mdmiroirconique: begin retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); if listemiroirconique[-1+nombremiroirconique+1].create2( listemiroirconique[-1+indiceelementmodif].fx+x1- listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].fy+y1- listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx+x1- listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].fy+y1- listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) ; retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; {du cas miroirconique} mdmscepa: begin retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create2( listemscepa[-1+indiceelementmodif].a1x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a1y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].a2x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a2y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a1y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].a2x+x1- listemscepa[-1+indiceelementmodif].sx, listemscepa[-1+indiceelementmodif].a2y+y1- listemscepa[-1+indiceelementmodif].sy, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; {du cas mscepa} mdmscere: begin retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create2( listemscere[-1+indiceelementmodif].a1x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a1y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].a2x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a2y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a1y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].a2x+x1- listemscere[-1+indiceelementmodif].sx, listemscere[-1+indiceelementmodif].a2y+y1- listemscere[-1+indiceelementmodif].sy, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; {du cas mscere} mdlmc: begin retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create2( listelmc[-1+indiceelementmodif].a1x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a1y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].a2x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a2y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a1y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].a2x+x1- listelmc[-1+indiceelementmodif].ox, listelmc[-1+indiceelementmodif].a2y+y1- listelmc[-1+indiceelementmodif].oy, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; {du cas lmc} mdlec: begin retaillePlec(listelec,nombrelec,nombrelec+1); if listelec[-1+nombrelec+1].create( listelec[-1+indiceelementmodif].s1x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s1y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].s2x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s2y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) then listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s1y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].s2x+x1- listelec[-1+indiceelementmodif].ox, listelec[-1+indiceelementmodif].s2y+y1- listelec[-1+indiceelementmodif].oy, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) else listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant); retaillePlec(listelec,nombrelec+1,nombrelec); Rafraichit; end; {du cas lec} mdlmd: begin retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create2( listelmd[-1+indiceelementmodif].a1x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a1y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].a2x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a2y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a1y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].a2x+x1- listelmd[-1+indiceelementmodif].ox, listelmd[-1+indiceelementmodif].a2y+y1- listelmd[-1+indiceelementmodif].oy, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; {du cas lmd} end; {du case} modetranslation:=false; form1.StatusBar1.Panels[3].text:=rsModeDPlaceme3; form1.StatusBar1.Panels[2].text:=rsFaitesPasser2; modifencours:=false; if modeduplication then begin modeduplication:=false; modemodif:=false; modeinfo:=false; form1.activeboutons; form1.StatusBar1.Panels[3].text:=''; form1.StatusBar1.Panels[2].text:=''; form1.image1.Cursor:=crdefault; modifencours:=false; Rafraichit; end; exit; end;{du cas translation} if moderotation then begin case typeelementmodif of mdoeil: begin if (((x1<>listeoeil[-1+indiceelementmodif].cx) or (y1<>listeoeil[-1+indiceelementmodif].cy))) then begin retaillePoeil(listeoeil,nombreoeil,nombreoeil+1); if listeoeil[-1+nombreoeil+1].create( listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].cy, x1,y1, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur) then listeoeil[-1+indiceelementmodif].create( listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].cy, x1,y1, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur) else listeoeil[-1+indiceelementmodif].create( listeoeil[-1+indiceelementmodif].cx, listeoeil[-1+indiceelementmodif].cy, listeoeil[-1+indiceelementmodif].ax, listeoeil[-1+indiceelementmodif].ay, listeoeil[-1+indiceelementmodif].epaisseur, listeoeil[-1+indiceelementmodif].couleur); retaillePoeil(listeoeil,nombreoeil+1,nombreoeil); Rafraichit; end; end; mdprisme: begin if ((tprirot=tpa) and ((x1<>listeprisme[-1+indiceelementmodif].ax) or (y1<>listeprisme[-1+indiceelementmodif].ay))) then begin retaillePprisme(listeprisme,nombreprisme,nombreprisme+1); if listeprisme[-1+nombreprisme+1].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)) , listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) then listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)) , listeprisme[-1+indiceelementmodif].gx+2/3*listeprisme[-1+indiceelementmodif].hauteur* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* cos(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].gy+2/3*listeprisme[-1+indiceelementmodif].hauteur* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy))+ listeprisme[-1+indiceelementmodif].hauteur/cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)* sin(donneanglepolairedans02pi(x1-listeprisme[-1+indiceelementmodif].gx,y1-listeprisme[-1+indiceelementmodif].gy)+pi+ listeprisme[-1+indiceelementmodif].angle_sommet/2), listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) else listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay, listeprisme[-1+indiceelementmodif].bx, listeprisme[-1+indiceelementmodif].by, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant); retaillePprisme(listeprisme,nombreprisme+1,nombreprisme); Rafraichit; end; if ((tprirot=tpc) and ((x1<>listeprisme[-1+indiceelementmodif].cx) or (y1<>listeprisme[-1+indiceelementmodif].cy))) then begin hx:=listeprisme[-1+indiceelementmodif].gx -0.5*(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx); hy:=listeprisme[-1+indiceelementmodif].gy -0.5*(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy); ux:=(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx)/ sqrt(sqr(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx)+ sqr(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy)); uy:=(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy)/ sqrt(sqr(listeprisme[-1+indiceelementmodif].ax-listeprisme[-1+indiceelementmodif].gx)+ sqr(listeprisme[-1+indiceelementmodif].ay-listeprisme[-1+indiceelementmodif].gy)); lambda:=(x1-hx)*ux+(y1-hy)*uy; retaillePprisme(listeprisme,nombreprisme,nombreprisme+1); if listeprisme[-1+nombreprisme+1].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , x1-lambda*ux, y1-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) then listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , x1-lambda*ux, y1-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) else listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay, listeprisme[-1+indiceelementmodif].bx, listeprisme[-1+indiceelementmodif].by, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant); retaillePprisme(listeprisme,nombreprisme+1,nombreprisme); Rafraichit; end; if ((tprirot=tpb) and ((x1<>listeprisme[-1+indiceelementmodif].bx) or (y1<>listeprisme[-1+indiceelementmodif].by))) then begin ux:=cos(donneanglepolairedans02pi(listeprisme[-1+indiceelementmodif].bx-listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].by-listeprisme[-1+indiceelementmodif].ay)); uy:=sin(donneanglepolairedans02pi(listeprisme[-1+indiceelementmodif].bx-listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].by-listeprisme[-1+indiceelementmodif].ay)); lambda:=-(x1-listeprisme[-1+indiceelementmodif].ax)*ux-(y1-listeprisme[-1+indiceelementmodif].ay)*uy; retaillePprisme(listeprisme,nombreprisme,nombreprisme+1); if listeprisme[-1+nombreprisme+1].create( listeprisme[-1+indiceelementmodif].ax+2/3*abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*cos(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ay+2/3* abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*sin(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , listeprisme[-1+indiceelementmodif].ax-lambda*ux, listeprisme[-1+indiceelementmodif].ay-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) then listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].ax+2/3*abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*cos(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ay+2/3* abs(lambda)* cos(listeprisme[-1+indiceelementmodif].angle_sommet/2)*sin(listeprisme[-1+indiceelementmodif].angle_axe+pi), listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay , listeprisme[-1+indiceelementmodif].ax-lambda*ux, listeprisme[-1+indiceelementmodif].ay-lambda*uy, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant) else listeprisme[-1+indiceelementmodif].create( listeprisme[-1+indiceelementmodif].gx, listeprisme[-1+indiceelementmodif].gy, listeprisme[-1+indiceelementmodif].ax, listeprisme[-1+indiceelementmodif].ay, listeprisme[-1+indiceelementmodif].bx, listeprisme[-1+indiceelementmodif].by, listeprisme[-1+indiceelementmodif].indicerouge, listeprisme[-1+indiceelementmodif].indicebleu, listeprisme[-1+indiceelementmodif].indicevert, listeprisme[-1+indiceelementmodif].couleurbord, listeprisme[-1+indiceelementmodif].couleurfond, listeprisme[-1+indiceelementmodif].ReflechiEntrant, listeprisme[-1+indiceelementmodif].ReflechiSortant); retaillePprisme(listeprisme,nombreprisme+1,nombreprisme); Rafraichit; end; end; mdmetre: begin if ((tprot=tpa1) and ((x1<>listemetre[-1+indiceelementmodif].a2x) or (y1<>listemetre[-1+indiceelementmodif].a2y))) then begin retaillePmetre(listemetre,nombremetre,nombremetre+1); if listemetre[-1+nombremetre+1].create( x1,y1, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y) then listemetre[-1+indiceelementmodif].create( x1,y1, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y) else listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y); retaillePmetre(listemetre,nombremetre+1,nombremetre); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemetre[-1+indiceelementmodif].a1x) or (y1<>listemetre[-1+indiceelementmodif].a1y))) then begin retaillePmetre(listemetre,nombremetre,nombremetre+1); if listemetre[-1+nombremetre+1].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, x1,y1) then listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, x1,y1) else listemetre[-1+indiceelementmodif].create( listemetre[-1+indiceelementmodif].a1x, listemetre[-1+indiceelementmodif].a1y, listemetre[-1+indiceelementmodif].a2x, listemetre[-1+indiceelementmodif].a2y); Rafraichit; end; end; {du cas metre} mdfleche: begin if ((tprot=tpa1) and ((x1<>listefleche[-1+indiceelementmodif].a2x) or (y1<>listefleche[-1+indiceelementmodif].a2y))) then begin retaillePfleche(listefleche,nombrefleche,nombrefleche+1); if listefleche[-1+nombrefleche+1].create( x1,y1, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) then listefleche[-1+indiceelementmodif].create( x1,y1, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) else listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2); retaillePfleche(listefleche,nombrefleche+1,nombrefleche); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listefleche[-1+indiceelementmodif].a1x) or (y1<>listefleche[-1+indiceelementmodif].a1y))) then begin retaillePfleche(listefleche,nombrefleche,nombrefleche+1); if listefleche[-1+nombrefleche+1].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y,x1,y1, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) then listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y,x1,y1, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2) else listefleche[-1+indiceelementmodif].create( listefleche[-1+indiceelementmodif].a1x, listefleche[-1+indiceelementmodif].a1y, listefleche[-1+indiceelementmodif].a2x, listefleche[-1+indiceelementmodif].a2y, listefleche[-1+indiceelementmodif].epaisseur, listefleche[-1+indiceelementmodif].couleur, listefleche[-1+indiceelementmodif].ext1, listefleche[-1+indiceelementmodif].ext2, listefleche[-1+indiceelementmodif].styletrait, listefleche[-1+indiceelementmodif].taille1, listefleche[-1+indiceelementmodif].taille2); retaillePfleche(listefleche,nombrefleche+1,nombrefleche); Rafraichit; end; end; mdangle: begin if ((tprot=tpa1) and ((x1<>listeangle[-1+indiceelementmodif].a2x) or (y1<>listeangle[-1+indiceelementmodif].a2y))) then begin retaillePangle(listeangle,nombreangle,nombreangle+1); if listeangle[-1+nombreangle+1].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, x1,y1, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y) then listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, x1,y1, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y) else listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y); retaillePangle(listeangle,nombreangle+1,nombreangle); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeangle[-1+indiceelementmodif].a1x) or (y1<>listeangle[-1+indiceelementmodif].a1y))) then begin retaillePangle(listeangle,nombreangle,nombreangle+1); if listeangle[-1+nombreangle+1].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, x1,y1) then listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, x1,y1) else listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y); retaillePangle(listeangle,nombreangle+1,nombreangle); Rafraichit; end; if ((tprot=tpce) and ((x1<>listeangle[-1+indiceelementmodif].cx) or (y1<>listeangle[-1+indiceelementmodif].cy))) then begin retaillePangle(listeangle,nombreangle,nombreangle+1); if listeangle[-1+nombreangle+1].create(x1,y1, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y ) then listeangle[-1+indiceelementmodif].create(x1,y1, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y) else listeangle[-1+indiceelementmodif].create( listeangle[-1+indiceelementmodif].cx, listeangle[-1+indiceelementmodif].cy, listeangle[-1+indiceelementmodif].a1x, listeangle[-1+indiceelementmodif].a1y, listeangle[-1+indiceelementmodif].a2x, listeangle[-1+indiceelementmodif].a2y); retaillePangle(listeangle,nombreangle+1,nombreangle); Rafraichit; end; end; {du cas angle} mdsphere: begin if ((x1<>listesphere[-1+indiceelementmodif].cx) or (y1<>listesphere[-1+indiceelementmodif].cy)) then begin retaillepsphere(listesphere,nombresphere,nombresphere+1); if listesphere[-1+nombresphere+1].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, sqrt(sqr(x1-listesphere[-1+indiceelementmodif].cx)+ sqr(y1-listesphere[-1+indiceelementmodif].cy)), listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) then listesphere[-1+indiceelementmodif].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, sqrt(sqr(x1-listesphere[-1+indiceelementmodif].cx)+ sqr(y1-listesphere[-1+indiceelementmodif].cy)), listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant) else listesphere[-1+indiceelementmodif].create( listesphere[-1+indiceelementmodif].cx, listesphere[-1+indiceelementmodif].cy, listesphere[-1+indiceelementmodif].rayon, listesphere[-1+indiceelementmodif].indicerouge, listesphere[-1+indiceelementmodif].indicebleu, listesphere[-1+indiceelementmodif].indicevert, listesphere[-1+indiceelementmodif].couleurbord, listesphere[-1+indiceelementmodif].couleurfond, listesphere[-1+indiceelementmodif].reflechientrant, listesphere[-1+indiceelementmodif].reflechisortant); retaillepsphere(listesphere,nombresphere+1,nombresphere); Rafraichit; end; end; mdpolyhedre: if ( (x1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolyhedre[-1+indiceelementmodif].messommets[indicepointdeplace].ay)) then begin retaillePpolyhedre(listepolyhedre,nombrepolyhedre,nombrepolyhedre+1); for i:=1 to listepolyhedre[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolyhedre[-1+indiceelementmodif].messommets[i].ax; ttpoly[i].ay:=listepolyhedre[-1+indiceelementmodif].messommets[i].ay; end; ttpoly[indicepointdeplace].ax:=x1; ttpoly[indicepointdeplace].ay:=y1; if listepolyhedre[-1+nombrepolyhedre+1].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) then listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, ttpoly, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant) else listepolyhedre[-1+indiceelementmodif].create( listepolyhedre[-1+indiceelementmodif].nombresommet, listepolyhedre[-1+indiceelementmodif].messommets, listepolyhedre[-1+indiceelementmodif].indicerouge, listepolyhedre[-1+indiceelementmodif].indicebleu, listepolyhedre[-1+indiceelementmodif].indicevert, listepolyhedre[-1+indiceelementmodif].couleurbord, listepolyhedre[-1+indiceelementmodif].couleurfond, listepolyhedre[-1+indiceelementmodif].reflechientrant, listepolyhedre[-1+indiceelementmodif].reflechisortant); retaillePpolyhedre(listepolyhedre,nombrepolyhedre+1,nombrepolyhedre); Rafraichit; end; mdpolycercle: begin if ((tprot=tpa1) and ( (x1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax) or (y1<>listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))) then begin retaillePpolycercle(listepolycercle,nombrepolycercle,nombrepolycercle+1); for i:=1 to listepolycercle[-1+indiceelementmodif].nombresommet do begin ttpoly[i].ax:=listepolycercle[-1+indiceelementmodif].messommets[i].ax; ttpoly[i].ay:=listepolycercle[-1+indiceelementmodif].messommets[i].ay; ttsom[i].ax:=listepolycercle[-1+indiceelementmodif].mess[i].ax; ttsom[i].ay:=listepolycercle[-1+indiceelementmodif].mess[i].ay; end; ttpoly[indicepointdeplace].ax:=x1; ttpoly[indicepointdeplace].ay:=y1; {si le segment précédent est un arc de cercle} if (indicepointdeplace>1) and not(listepolycercle[-1+indiceelementmodif].rectiligne[indicepointdeplace-1]) then begin dAB:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax)+ sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay)); dIS:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ax- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))+ sqr(listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ay- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))); if (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax)* (listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ay-0.5* (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay)* (listepolycercle[-1+indiceelementmodif].MesS[indicepointdeplace-1].ax-0.5* (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))<0 then begin ttsom[indicepointdeplace-1].ax:=(y1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+x1); ttsom[indicepointdeplace-1].ay:=-(x1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+y1); end else begin ttsom[indicepointdeplace-1].ax:=-(y1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax+x1); ttsom[indicepointdeplace-1].ay:=(x1-listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace-1].ay+y1); end; end; {si le segment précédent est un arc de cercle} if (indicepointdeplace=1) and not(listepolycercle[-1+indiceelementmodif].rectiligne[listepolycercle[-1+indiceelementmodif].nombresommet]) then begin dAB:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax)+ sqr(listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay)); dIS:=sqrt(sqr(listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ax- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))+ sqr(listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ay- 0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))); if (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax)* (listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ay-0.5* (listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay))- (listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ay- listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay)* (listepolycercle[-1+indiceelementmodif].MesS[listepolycercle[-1+indiceelementmodif].nombresommet].ax-0.5* (listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+ listepolycercle[-1+indiceelementmodif].messommets[indicepointdeplace].ax))<0 then begin ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ax:=(y1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+x1); ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ay:=-(x1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+y1); end else begin ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ax:=-(y1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax+x1); ; ttsom[listepolycercle[-1+indiceelementmodif].nombresommet].ay:=(x1-listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ax) *dIS/dAB+0.5*(listepolycercle[-1+indiceelementmodif].messommets[listepolycercle[-1+indiceelementmodif].nombresommet].ay+y1); end; end; {si le segment suivant est un arc de cercle} if (indicepointdeplacelistemiroirplan[-1+indiceelementmodif].a2x) or (y1<>listemiroirplan[-1+indiceelementmodif].a2y))) then begin retaillePMiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan+1); if listemiroirplan[-1+nombremiroirplan+1].create( x1,y1, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) then listemiroirplan[-1+indiceelementmodif].create( x1,y1, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) else listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures); retaillePMiroirplan(listemiroirplan,nombremiroirplan+1,nombremiroirplan); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemiroirplan[-1+indiceelementmodif].a1x) or (y1<>listemiroirplan[-1+indiceelementmodif].a1y))) then begin retaillePMiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan+1); if listemiroirplan[-1+nombremiroirplan+1].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, x1,y1, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) then listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, x1,y1, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures) else listemiroirplan[-1+indiceelementmodif].create( listemiroirplan[-1+indiceelementmodif].a1x, listemiroirplan[-1+indiceelementmodif].a1y, listemiroirplan[-1+indiceelementmodif].a2x, listemiroirplan[-1+indiceelementmodif].a2y, listemiroirplan[-1+indiceelementmodif].epaisseur, listemiroirplan[-1+indiceelementmodif].couleur, listemiroirplan[-1+indiceelementmodif].hachures); retaillePMiroirplan(listemiroirplan,nombremiroirplan+1,nombremiroirplan); Rafraichit; end; end; {du cas miroir plan} mdReseau: begin if ((tprot=tpa1) and ((x1<>listeReseau[-1+indiceelementmodif].a2x) or (y1<>listeReseau[-1+indiceelementmodif].a2y))) then begin retaillePReseau(listeReseau,nombreReseau,nombreReseau+1); if listeReseau[-1+nombreReseau+1].create( x1,y1, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max) then listeReseau[-1+indiceelementmodif].create( x1,y1, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max) else listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max); retaillePReseau(listeReseau,nombreReseau+1,nombreReseau); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeReseau[-1+indiceelementmodif].a1x) or (y1<>listeReseau[-1+indiceelementmodif].a1y))) then begin retaillePReseau(listeReseau,nombreReseau,nombreReseau+1); if listeReseau[-1+nombreReseau+1].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, x1,y1, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max) then listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, x1,y1, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max) else listeReseau[-1+indiceelementmodif].create( listeReseau[-1+indiceelementmodif].a1x, listeReseau[-1+indiceelementmodif].a1y, listeReseau[-1+indiceelementmodif].a2x, listeReseau[-1+indiceelementmodif].a2y, listeReseau[-1+indiceelementmodif].epaisseur, listeReseau[-1+indiceelementmodif].couleur, listeReseau[-1+indiceelementmodif].pas, listeReseau[-1+indiceelementmodif].entransmission, listeReseau[-1+indiceelementmodif].hachures, listeReseau[-1+indiceelementmodif].ordre_min, listeReseau[-1+indiceelementmodif].ordre_max); retaillePReseau(listeReseau,nombreReseau+1,nombreReseau); Rafraichit; end; end; {du cas reseau} mdecran: begin if ((tprot=tpa1) and ((x1<>listeecran[-1+indiceelementmodif].a2x) or (y1<>listeecran[-1+indiceelementmodif].a2y))) then begin retaillePecran(listeecran,nombreecran,nombreecran+1); if listeecran[-1+nombreecran+1].create( x1,y1, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) then listeecran[-1+indiceelementmodif].create( x1,y1, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) else listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur); retaillePecran(listeecran,nombreecran+1,nombreecran); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeecran[-1+indiceelementmodif].a1x) or (y1<>listeecran[-1+indiceelementmodif].a1y))) then begin retaillePecran(listeecran,nombreecran,nombreecran+1); if listeecran[-1+nombreecran+1].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, x1,y1, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) then listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, x1,y1, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur) else listeecran[-1+indiceelementmodif].create( listeecran[-1+indiceelementmodif].a1x, listeecran[-1+indiceelementmodif].a1y, listeecran[-1+indiceelementmodif].a2x, listeecran[-1+indiceelementmodif].a2y, listeecran[-1+indiceelementmodif].epaisseur, listeecran[-1+indiceelementmodif].couleur); retaillePecran(listeecran,nombreecran+1,nombreecran); Rafraichit; end; end; {du cas ecran} mdlsr: begin if ((tprot=tpa1) and ((x1<>listelsr[-1+indiceelementmodif].a2x) or (y1<>listelsr[-1+indiceelementmodif].a2y))) then begin retaillePlsr(listelsr,nombrelsr,nombrelsr+1); if listelsr[-1+nombrelsr+1].create( x1,y1, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) then listelsr[-1+indiceelementmodif].create( x1,y1, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) else listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur); retaillePlsr(listelsr,nombrelsr+1,nombrelsr); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelsr[-1+indiceelementmodif].a1x) or (y1<>listelsr[-1+indiceelementmodif].a1y))) then begin retaillePlsr(listelsr,nombrelsr,nombrelsr+1); if listelsr[-1+nombrelsr+1].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, x1,y1, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) then listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, x1,y1, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur) else listelsr[-1+indiceelementmodif].create( listelsr[-1+indiceelementmodif].a1x, listelsr[-1+indiceelementmodif].a1y, listelsr[-1+indiceelementmodif].a2x, listelsr[-1+indiceelementmodif].a2y, listelsr[-1+indiceelementmodif].epaisseur, listelsr[-1+indiceelementmodif].couleur); retaillePlsr(listelsr,nombrelsr+1,nombrelsr); Rafraichit; end; end; {du cas lsr} mdrayon: begin if ((tprot=tpa1) and ((x1<>listerayon[-1+indiceelementmodif].bx) or (y1<>listerayon[-1+indiceelementmodif].by))) then begin retaillePrayon(listerayon,nombrerayon,nombrerayon+1); if listerayon[-1+nombrerayon+1].create(x1,y1, listerayon[-1+indiceelementmodif].bx-x1, listerayon[-1+indiceelementmodif].by-y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) then listerayon[-1+indiceelementmodif].create(x1,y1, listerayon[-1+indiceelementmodif].bx-x1, listerayon[-1+indiceelementmodif].by-y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) else listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment); retaillePrayon(listerayon,nombrerayon+1,nombrerayon); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listerayon[-1+indiceelementmodif].ax) or (y1<>listerayon[-1+indiceelementmodif].ay))) then begin retaillePrayon(listerayon,nombrerayon,nombrerayon+1); if listerayon[-1+nombrerayon+1].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, -listerayon[-1+indiceelementmodif].ax+x1, -listerayon[-1+indiceelementmodif].ay+y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) then listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, -listerayon[-1+indiceelementmodif].ax+x1, -listerayon[-1+indiceelementmodif].ay+y1, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment) else listerayon[-1+indiceelementmodif].create( listerayon[-1+indiceelementmodif].ax, listerayon[-1+indiceelementmodif].ay, listerayon[-1+indiceelementmodif].kx, listerayon[-1+indiceelementmodif].ky, listerayon[-1+indiceelementmodif].couleur, listerayon[-1+indiceelementmodif].epaisseur, listerayon[-1+indiceelementmodif].vav, listerayon[-1+indiceelementmodif].vaa, listerayon[-1+indiceelementmodif].nombremaxenfant, listerayon[-1+indiceelementmodif].maxsegment); retaillePrayon(listerayon,nombrerayon+1,nombrerayon); Rafraichit; end; end; {du cas rayon} mddiaphragme: begin if (( (tprot=tpa1) or (tprot=tpap1)) and ((x1<>listediaphragme[-1+indiceelementmodif].cx) or (y1<>listediaphragme[-1+indiceelementmodif].cy))) then begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].cx)+sqr(y1-listediaphragme[-1+indiceelementmodif].cy)), listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].cx)+sqr(y1-listediaphragme[-1+indiceelementmodif].cy)), listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listediaphragme[-1+indiceelementmodif].cx) or (y1<>listediaphragme[-1+indiceelementmodif].cy))) then begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(x1-listediaphragme[-1+indiceelementmodif].ap2x,y1-listediaphragme[-1+indiceelementmodif].ap2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].ap2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].ap2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(x1-listediaphragme[-1+indiceelementmodif].ap2x,y1-listediaphragme[-1+indiceelementmodif].ap2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].ap2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].ap2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; if ((tprot=tpap2) and ((x1<>listediaphragme[-1+indiceelementmodif].cx) or (y1<>listediaphragme[-1+indiceelementmodif].cy))) then begin retaillePdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); if listediaphragme[-1+nombrediaphragme+1].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(-x1+listediaphragme[-1+indiceelementmodif].a2x,-y1+listediaphragme[-1+indiceelementmodif].a2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].a2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].a2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) then listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, donneanglepolairedanspipi(-x1+listediaphragme[-1+indiceelementmodif].a2x,-y1+listediaphragme[-1+indiceelementmodif].a2y), listediaphragme[-1+indiceelementmodif].rint, sqrt(sqr(x1-listediaphragme[-1+indiceelementmodif].a2x)+sqr(y1-listediaphragme[-1+indiceelementmodif].a2y))/2, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur) else listediaphragme[-1+indiceelementmodif].create2( listediaphragme[-1+indiceelementmodif].cx, listediaphragme[-1+indiceelementmodif].cy, listediaphragme[-1+indiceelementmodif].anglepolaire, listediaphragme[-1+indiceelementmodif].rint, listediaphragme[-1+indiceelementmodif].rext, listediaphragme[-1+indiceelementmodif].couleur, listediaphragme[-1+indiceelementmodif].epaisseur); retaillePdiaphragme(listediaphragme,nombrediaphragme+1,nombrediaphragme); Rafraichit; end; end; mdmscopa: begin if ((tprot=tpa1) and ((x1<>listemscopa[-1+indiceelementmodif].a2x) or (y1<>listemscopa[-1+indiceelementmodif].a2y))) then begin retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create2( x1,y1, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create2(x1,y1, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscopa[-1+indiceelementmodif].a1x) or (y1<>listemscopa[-1+indiceelementmodif].a1y))) then begin retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y,x1,y1, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y,x1,y1, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; if ((tprot=tpfo) and ((x1<>listemscopa[-1+indiceelementmodif].sx) or (y1<>listemscopa[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscopa[-1+indiceelementmodif].sx)*(listemscopa[-1+indiceelementmodif].cx- listemscopa[-1+indiceelementmodif].sx)+(y1-listemscopa[-1+indiceelementmodif].sy)* (listemscopa[-1+indiceelementmodif].cy-listemscopa[-1+indiceelementmodif].sy))/ (sqr(listemscopa[-1+indiceelementmodif].cx-listemscopa[-1+indiceelementmodif].sx)+ sqr(listemscopa[-1+indiceelementmodif].cy-listemscopa[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscopa[-1+indiceelementmodif].sx+lambda*(listemscopa[-1+indiceelementmodif].cx- listemscopa[-1+indiceelementmodif].sx); yy1:=listemscopa[-1+indiceelementmodif].sy+lambda*(listemscopa[-1+indiceelementmodif].cy- listemscopa[-1+indiceelementmodif].sy); retaillePmscopa(listemscopa,nombremscopa,nombremscopa+1); if listemscopa[-1+nombremscopa+1].create( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, xx1,yy1, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) then listemscopa[-1+indiceelementmodif].create( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, xx1,yy1, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou) else listemscopa[-1+indiceelementmodif].create2( listemscopa[-1+indiceelementmodif].a1x, listemscopa[-1+indiceelementmodif].a1y, listemscopa[-1+indiceelementmodif].a2x, listemscopa[-1+indiceelementmodif].a2y, listemscopa[-1+indiceelementmodif].focale, listemscopa[-1+indiceelementmodif].epaisseur, listemscopa[-1+indiceelementmodif].couleur, listemscopa[-1+indiceelementmodif].couleuraxe, listemscopa[-1+indiceelementmodif].hachures, listemscopa[-1+indiceelementmodif].axefocal, listemscopa[-1+indiceelementmodif].trou, listemscopa[-1+indiceelementmodif].diametretrou); retaillePmscopa(listemscopa,nombremscopa+1,nombremscopa); Rafraichit; end; end; {du cas mscopa} mdmiroirconique: begin if ((tprot=tpa2) and ((x1<>listemiroirconique[-1+indiceelementmodif].a1x) or (y1<>listemiroirconique[-1+indiceelementmodif].a1y))) then begin retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); dtheta:=donneanglepolairedans02pi(x1-listemiroirconique[-1+indiceelementmodif].a1x, y1-listemiroirconique[-1+indiceelementmodif].a1y)- donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].a2x-listemiroirconique[-1+indiceelementmodif].a1x, listemiroirconique[-1+indiceelementmodif].a2y-listemiroirconique[-1+indiceelementmodif].a1y); if listemiroirconique[-1+nombremiroirconique+1].create2( listemiroirconique[-1+indiceelementmodif].a1x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].a1y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].a1x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].a1y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a1x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a1y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a1x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a1y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal); retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; if ((tprot=tpa1) and ((x1<>listemiroirconique[-1+indiceelementmodif].a2x) or (y1<>listemiroirconique[-1+indiceelementmodif].a2y))) then begin retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); dtheta:=donneanglepolairedans02pi(x1-listemiroirconique[-1+indiceelementmodif].a2x, y1-listemiroirconique[-1+indiceelementmodif].a2y)- donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].a1x-listemiroirconique[-1+indiceelementmodif].a2x, listemiroirconique[-1+indiceelementmodif].a1y-listemiroirconique[-1+indiceelementmodif].a2y); if listemiroirconique[-1+nombremiroirconique+1].create2( listemiroirconique[-1+indiceelementmodif].a2x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].a2y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].a2x+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* cos(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].a2y+ sqrt(sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].a2x)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].a2y))* sin(donneanglepolairedans02pi(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].a2x,listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].a2y)+dtheta), listemiroirconique[-1+indiceelementmodif].theta0+dtheta, listemiroirconique[-1+indiceelementmodif].theta1+dtheta, listemiroirconique[-1+indiceelementmodif].theta2+dtheta, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal); retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; if ((tprot=tpfo) and ((x1<>listemiroirconique[-1+indiceelementmodif].sx) or (y1<>listemiroirconique[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemiroirconique[-1+indiceelementmodif].sx)*(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].sx)+(y1-listemiroirconique[-1+indiceelementmodif].sy)* (listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].sy))/ (sqr(listemiroirconique[-1+indiceelementmodif].fx-listemiroirconique[-1+indiceelementmodif].sx)+ sqr(listemiroirconique[-1+indiceelementmodif].fy-listemiroirconique[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemiroirconique[-1+indiceelementmodif].sx+lambda*(listemiroirconique[-1+indiceelementmodif].fx- listemiroirconique[-1+indiceelementmodif].sx); yy1:=listemiroirconique[-1+indiceelementmodif].sy+lambda*(listemiroirconique[-1+indiceelementmodif].fy- listemiroirconique[-1+indiceelementmodif].sy); retaillePmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+1); if listemiroirconique[-1+nombremiroirconique+1].create( xx1,yy1, listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].a1x, listemiroirconique[-1+indiceelementmodif].a1y, listemiroirconique[-1+indiceelementmodif].a2x, listemiroirconique[-1+indiceelementmodif].a2y, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) then listemiroirconique[-1+indiceelementmodif].create( xx1,yy1, listemiroirconique[-1+indiceelementmodif].sx, listemiroirconique[-1+indiceelementmodif].sy, listemiroirconique[-1+indiceelementmodif].a1x, listemiroirconique[-1+indiceelementmodif].a1y, listemiroirconique[-1+indiceelementmodif].a2x, listemiroirconique[-1+indiceelementmodif].a2y, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal) else listemiroirconique[-1+indiceelementmodif].create2( listemiroirconique[-1+indiceelementmodif].fx, listemiroirconique[-1+indiceelementmodif].fy, listemiroirconique[-1+indiceelementmodif].theta0, listemiroirconique[-1+indiceelementmodif].theta1, listemiroirconique[-1+indiceelementmodif].theta2, listemiroirconique[-1+indiceelementmodif].excentricite, listemiroirconique[-1+indiceelementmodif].parametre, listemiroirconique[-1+indiceelementmodif].concave, listemiroirconique[-1+indiceelementmodif].couleur, listemiroirconique[-1+indiceelementmodif].couleuraxe, listemiroirconique[-1+indiceelementmodif].hachures, listemiroirconique[-1+indiceelementmodif].axefocal); retaillePmiroirconique(listemiroirconique,nombremiroirconique+1,nombremiroirconique); Rafraichit; end; end; {du cas miroirconique} mdmscore: begin if ((tprot=tpa1) and ((x1<>listemscore[-1+indiceelementmodif].a2x) or (y1<>listemscore[-1+indiceelementmodif].a2y))) then begin retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create2( x1,y1, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create2(x1,y1, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscore[-1+indiceelementmodif].a1x) or (y1<>listemscore[-1+indiceelementmodif].a1y))) then begin retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y,x1,y1, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y,x1,y1, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; if ((tprot=tpce) and ((x1<>listemscore[-1+indiceelementmodif].sx) or (y1<>listemscore[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscore[-1+indiceelementmodif].sx)*(listemscore[-1+indiceelementmodif].cx- listemscore[-1+indiceelementmodif].sx)+(y1-listemscore[-1+indiceelementmodif].sy)* (listemscore[-1+indiceelementmodif].cy-listemscore[-1+indiceelementmodif].sy))/ (sqr(listemscore[-1+indiceelementmodif].cx-listemscore[-1+indiceelementmodif].sx)+ sqr(listemscore[-1+indiceelementmodif].cy-listemscore[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscore[-1+indiceelementmodif].sx+lambda*(listemscore[-1+indiceelementmodif].cx- listemscore[-1+indiceelementmodif].sx); yy1:=listemscore[-1+indiceelementmodif].sy+lambda*(listemscore[-1+indiceelementmodif].cy- listemscore[-1+indiceelementmodif].sy); retaillePmscore(listemscore,nombremscore,nombremscore+1); if listemscore[-1+nombremscore+1].create( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, xx1,yy1, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) then listemscore[-1+indiceelementmodif].create( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, xx1,yy1, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou) else listemscore[-1+indiceelementmodif].create2( listemscore[-1+indiceelementmodif].a1x, listemscore[-1+indiceelementmodif].a1y, listemscore[-1+indiceelementmodif].a2x, listemscore[-1+indiceelementmodif].a2y, listemscore[-1+indiceelementmodif].rayoncourbure, listemscore[-1+indiceelementmodif].epaisseur, listemscore[-1+indiceelementmodif].couleur, listemscore[-1+indiceelementmodif].couleuraxe, listemscore[-1+indiceelementmodif].hachures, listemscore[-1+indiceelementmodif].axefocal, listemscore[-1+indiceelementmodif].aigu, listemscore[-1+indiceelementmodif].trou, listemscore[-1+indiceelementmodif].diametretrou); retaillePmscore(listemscore,nombremscore+1,nombremscore); Rafraichit; end; end; {du cas mscore} mdmscepa: begin if ((tprot=tpa1) and ((x1<>listemscepa[-1+indiceelementmodif].a2x) or (y1<>listemscepa[-1+indiceelementmodif].a2y))) then begin retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create2( x1,y1, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create2(x1,y1, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscepa[-1+indiceelementmodif].a1x) or (y1<>listemscepa[-1+indiceelementmodif].a1y))) then begin retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y,x1,y1, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y,x1,y1, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; if ((tprot=tpfo) and ((x1<>listemscepa[-1+indiceelementmodif].sx) or (y1<>listemscepa[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscepa[-1+indiceelementmodif].sx)*(listemscepa[-1+indiceelementmodif].cx- listemscepa[-1+indiceelementmodif].sx)+(y1-listemscepa[-1+indiceelementmodif].sy)* (listemscepa[-1+indiceelementmodif].cy-listemscepa[-1+indiceelementmodif].sy))/ (sqr(listemscepa[-1+indiceelementmodif].cx-listemscepa[-1+indiceelementmodif].sx)+ sqr(listemscepa[-1+indiceelementmodif].cy-listemscepa[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscepa[-1+indiceelementmodif].sx+lambda*(listemscepa[-1+indiceelementmodif].cx- listemscepa[-1+indiceelementmodif].sx); yy1:=listemscepa[-1+indiceelementmodif].sy+lambda*(listemscepa[-1+indiceelementmodif].cy- listemscepa[-1+indiceelementmodif].sy); retaillePmscepa(listemscepa,nombremscepa,nombremscepa+1); if listemscepa[-1+nombremscepa+1].create( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, xx1,yy1, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) then listemscepa[-1+indiceelementmodif].create( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, xx1,yy1, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou) else listemscepa[-1+indiceelementmodif].create2( listemscepa[-1+indiceelementmodif].a1x, listemscepa[-1+indiceelementmodif].a1y, listemscepa[-1+indiceelementmodif].a2x, listemscepa[-1+indiceelementmodif].a2y, listemscepa[-1+indiceelementmodif].focale, listemscepa[-1+indiceelementmodif].epaisseur, listemscepa[-1+indiceelementmodif].couleur, listemscepa[-1+indiceelementmodif].couleuraxe, listemscepa[-1+indiceelementmodif].hachures, listemscepa[-1+indiceelementmodif].axefocal, listemscepa[-1+indiceelementmodif].trou, listemscepa[-1+indiceelementmodif].diametretrou); retaillePmscepa(listemscepa,nombremscepa+1,nombremscepa); Rafraichit; end; end; {du cas mscepa} mdmscere: begin if ((tprot=tpa1) and ((x1<>listemscere[-1+indiceelementmodif].a2x) or (y1<>listemscere[-1+indiceelementmodif].a2y))) then begin retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create2( x1,y1, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create2(x1,y1, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listemscere[-1+indiceelementmodif].a1x) or (y1<>listemscere[-1+indiceelementmodif].a1y))) then begin retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y,x1,y1, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y,x1,y1, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; if ((tprot=tpce) and ((x1<>listemscere[-1+indiceelementmodif].sx) or (y1<>listemscere[-1+indiceelementmodif].sy))) then begin lambda:=((x1-listemscere[-1+indiceelementmodif].sx)*(listemscere[-1+indiceelementmodif].cx- listemscere[-1+indiceelementmodif].sx)+(y1-listemscere[-1+indiceelementmodif].sy)* (listemscere[-1+indiceelementmodif].cy-listemscere[-1+indiceelementmodif].sy))/ (sqr(listemscere[-1+indiceelementmodif].cx-listemscere[-1+indiceelementmodif].sx)+ sqr(listemscere[-1+indiceelementmodif].cy-listemscere[-1+indiceelementmodif].sy)); if lambda<0 then lambda:=0.1; xx1:=listemscere[-1+indiceelementmodif].sx+lambda*(listemscere[-1+indiceelementmodif].cx- listemscere[-1+indiceelementmodif].sx); yy1:=listemscere[-1+indiceelementmodif].sy+lambda*(listemscere[-1+indiceelementmodif].cy- listemscere[-1+indiceelementmodif].sy); retaillePmscere(listemscere,nombremscere,nombremscere+1); if listemscere[-1+nombremscere+1].create( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, xx1,yy1, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) then listemscere[-1+indiceelementmodif].create( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, xx1,yy1, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou) else listemscere[-1+indiceelementmodif].create2( listemscere[-1+indiceelementmodif].a1x, listemscere[-1+indiceelementmodif].a1y, listemscere[-1+indiceelementmodif].a2x, listemscere[-1+indiceelementmodif].a2y, listemscere[-1+indiceelementmodif].rayoncourbure, listemscere[-1+indiceelementmodif].epaisseur, listemscere[-1+indiceelementmodif].couleur, listemscere[-1+indiceelementmodif].couleuraxe, listemscere[-1+indiceelementmodif].hachures, listemscere[-1+indiceelementmodif].axefocal, listemscere[-1+indiceelementmodif].aigu, listemscere[-1+indiceelementmodif].trou, listemscere[-1+indiceelementmodif].diametretrou); retaillePmscere(listemscere,nombremscere+1,nombremscere); Rafraichit; end; end; {du cas mscere} mdlmc: begin if ((tprot=tpa1) and ((x1<>listelmc[-1+indiceelementmodif].a2x) or (y1<>listelmc[-1+indiceelementmodif].a2y))) then begin retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create2(x1,y1, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create2(x1,y1, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelmc[-1+indiceelementmodif].a1x) or (y1<>listelmc[-1+indiceelementmodif].a1y))) then begin retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y,x1,y1, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y,x1,y1, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; if ((tprot=tpf1) and ((x1<>listelmc[-1+indiceelementmodif].ox) or (y1<>listelmc[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmc[-1+indiceelementmodif].ox)*(listelmc[-1+indiceelementmodif].f1x- listelmc[-1+indiceelementmodif].ox)+(y1-listelmc[-1+indiceelementmodif].oy)* (listelmc[-1+indiceelementmodif].f1y-listelmc[-1+indiceelementmodif].oy))/ (sqr(listelmc[-1+indiceelementmodif].f1x-listelmc[-1+indiceelementmodif].ox)+ sqr(listelmc[-1+indiceelementmodif].f1y-listelmc[-1+indiceelementmodif].oy)); xx1:=listelmc[-1+indiceelementmodif].ox+lambda*(listelmc[-1+indiceelementmodif].f1x- listelmc[-1+indiceelementmodif].ox); yy1:=listelmc[-1+indiceelementmodif].oy+lambda*(listelmc[-1+indiceelementmodif].f1y- listelmc[-1+indiceelementmodif].oy); retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; if ((tprot=tpf2) and ((x1<>listelmc[-1+indiceelementmodif].ox) or (y1<>listelmc[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmc[-1+indiceelementmodif].ox)*(listelmc[-1+indiceelementmodif].f2x- listelmc[-1+indiceelementmodif].ox)+(y1-listelmc[-1+indiceelementmodif].oy)* (listelmc[-1+indiceelementmodif].f2y-listelmc[-1+indiceelementmodif].oy))/ (sqr(listelmc[-1+indiceelementmodif].f2x-listelmc[-1+indiceelementmodif].ox)+ sqr(listelmc[-1+indiceelementmodif].f2y-listelmc[-1+indiceelementmodif].oy)); xx1:=listelmc[-1+indiceelementmodif].ox+lambda*(listelmc[-1+indiceelementmodif].f2x- listelmc[-1+indiceelementmodif].ox); yy1:=listelmc[-1+indiceelementmodif].oy+lambda*(listelmc[-1+indiceelementmodif].f2y- listelmc[-1+indiceelementmodif].oy); retaillePlmc(listelmc,nombrelmc,nombrelmc+1); if listelmc[-1+nombrelmc+1].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) then listelmc[-1+indiceelementmodif].create( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, xx1,yy1, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal) else listelmc[-1+indiceelementmodif].create2( listelmc[-1+indiceelementmodif].a1x, listelmc[-1+indiceelementmodif].a1y, listelmc[-1+indiceelementmodif].a2x, listelmc[-1+indiceelementmodif].a2y, listelmc[-1+indiceelementmodif].focale, listelmc[-1+indiceelementmodif].epaisseur, listelmc[-1+indiceelementmodif].couleur, listelmc[-1+indiceelementmodif].couleuraxe, listelmc[-1+indiceelementmodif].axefocal); retaillePlmc(listelmc,nombrelmc+1,nombrelmc); Rafraichit; end; end; {du cas lmc} {cas lec} mdlec: begin if ((tprot=tpa1) and ((x1<>listelec[-1+indiceelementmodif].s2x) or (y1<>listelec[-1+indiceelementmodif].s2y))) then begin retaillePlec(listelec,nombrelec,nombrelec+1); if listelec[-1+nombrelec+1].create(x1,y1, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) then listelec[-1+indiceelementmodif].create(x1,y1, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) else listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant); retaillePlec(listelec,nombrelec+1,nombrelec); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelec[-1+indiceelementmodif].s1x) or (y1<>listelec[-1+indiceelementmodif].s1y))) then begin retaillePlec(listelec,nombrelec,nombrelec+1); if listelec[-1+nombrelec+1].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, x1,y1, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) then listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, x1,y1, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant) else listelec[-1+indiceelementmodif].create( listelec[-1+indiceelementmodif].s1x, listelec[-1+indiceelementmodif].s1y, listelec[-1+indiceelementmodif].s2x, listelec[-1+indiceelementmodif].s2y, listelec[-1+indiceelementmodif].r1, listelec[-1+indiceelementmodif].r2, listelec[-1+indiceelementmodif].diametre, listelec[-1+indiceelementmodif].couleurfond, listelec[-1+indiceelementmodif].couleuraxe, listelec[-1+indiceelementmodif].axefocal, listelec[-1+indiceelementmodif].indicerouge, listelec[-1+indiceelementmodif].indicebleu, listelec[-1+indiceelementmodif].indicevert, listelec[-1+indiceelementmodif].reflechientrant, listelec[-1+indiceelementmodif].reflechisortant); retaillePlec(listelec,nombrelec+1,nombrelec); Rafraichit; end; end; {fin cas lec} mdlmd: begin if ((tprot=tpa1) and ((x1<>listelmd[-1+indiceelementmodif].a2x) or (y1<>listelmd[-1+indiceelementmodif].a2y))) then begin retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create2(x1,y1, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create2(x1,y1, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listelmd[-1+indiceelementmodif].a1x) or (y1<>listelmd[-1+indiceelementmodif].a1y))) then begin retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y,x1,y1, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y,x1,y1, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; if ((tprot=tpf1) and ((x1<>listelmd[-1+indiceelementmodif].ox) or (y1<>listelmd[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmd[-1+indiceelementmodif].ox)*(listelmd[-1+indiceelementmodif].f1x- listelmd[-1+indiceelementmodif].ox)+(y1-listelmd[-1+indiceelementmodif].oy)* (listelmd[-1+indiceelementmodif].f1y-listelmd[-1+indiceelementmodif].oy))/ (sqr(listelmd[-1+indiceelementmodif].f1x-listelmd[-1+indiceelementmodif].ox)+ sqr(listelmd[-1+indiceelementmodif].f1y-listelmd[-1+indiceelementmodif].oy)); xx1:=listelmd[-1+indiceelementmodif].ox+lambda*(listelmd[-1+indiceelementmodif].f1x- listelmd[-1+indiceelementmodif].ox); yy1:=listelmd[-1+indiceelementmodif].oy+lambda*(listelmd[-1+indiceelementmodif].f1y- listelmd[-1+indiceelementmodif].oy); retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; if ((tprot=tpf2) and ((x1<>listelmd[-1+indiceelementmodif].ox) or (y1<>listelmd[-1+indiceelementmodif].oy))) then begin lambda:=((x1-listelmd[-1+indiceelementmodif].ox)*(listelmd[-1+indiceelementmodif].f2x- listelmd[-1+indiceelementmodif].ox)+(y1-listelmd[-1+indiceelementmodif].oy)* (listelmd[-1+indiceelementmodif].f2y-listelmd[-1+indiceelementmodif].oy))/ (sqr(listelmd[-1+indiceelementmodif].f2x-listelmd[-1+indiceelementmodif].ox)+ sqr(listelmd[-1+indiceelementmodif].f2y-listelmd[-1+indiceelementmodif].oy)); xx1:=listelmd[-1+indiceelementmodif].ox+lambda*(listelmd[-1+indiceelementmodif].f2x- listelmd[-1+indiceelementmodif].ox); yy1:=listelmd[-1+indiceelementmodif].oy+lambda*(listelmd[-1+indiceelementmodif].f2y- listelmd[-1+indiceelementmodif].oy); retaillePlmd(listelmd,nombrelmd,nombrelmd+1); if listelmd[-1+nombrelmd+1].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) then listelmd[-1+indiceelementmodif].create( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, xx1,yy1, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal) else listelmd[-1+indiceelementmodif].create2( listelmd[-1+indiceelementmodif].a1x, listelmd[-1+indiceelementmodif].a1y, listelmd[-1+indiceelementmodif].a2x, listelmd[-1+indiceelementmodif].a2y, listelmd[-1+indiceelementmodif].focale, listelmd[-1+indiceelementmodif].epaisseur, listelmd[-1+indiceelementmodif].couleur, listelmd[-1+indiceelementmodif].couleuraxe, listelmd[-1+indiceelementmodif].axefocal); retaillePlmd(listelmd,nombrelmd+1,nombrelmd); Rafraichit; end; end; {du cas lmd} mdsourceponctuelle: begin if ((tprot=tpa1) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].sx) or (y1<>listesourceponctuelle[-1+indiceelementmodif].sy))) then begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].sx) or (y1<>listesourceponctuelle[-1+indiceelementmodif].sy))) then begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y,x1,y1, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y,x1,y1, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; if ((tprot=tpa0) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].a1x) or (y1<>listesourceponctuelle[-1+indiceelementmodif].a1y)) and ((x1<>listesourceponctuelle[-1+indiceelementmodif].a2x) or (y1<>listesourceponctuelle[-1+indiceelementmodif].a2y))) then begin retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); if listesourceponctuelle[-1+nombresourceponctuelle+1].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) then listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon,x1,y1, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment) else listesourceponctuelle[-1+indiceelementmodif].create( listesourceponctuelle[-1+indiceelementmodif].nombrederayon, listesourceponctuelle[-1+indiceelementmodif].sx, listesourceponctuelle[-1+indiceelementmodif].sy, listesourceponctuelle[-1+indiceelementmodif].a1x, listesourceponctuelle[-1+indiceelementmodif].a1y, listesourceponctuelle[-1+indiceelementmodif].a2x, listesourceponctuelle[-1+indiceelementmodif].a2y, listesourceponctuelle[-1+indiceelementmodif].couleur, listesourceponctuelle[-1+indiceelementmodif].epaisseur, listesourceponctuelle[-1+indiceelementmodif].vav, listesourceponctuelle[-1+indiceelementmodif].vaa, listesourceponctuelle[-1+indiceelementmodif].maxenfantparrayon, listesourceponctuelle[-1+indiceelementmodif].sourcevirtuelle, listesourceponctuelle[-1+indiceelementmodif].tracersurfacesonde, listesourceponctuelle[-1+indiceelementmodif].listechemins, listesourceponctuelle[-1+indiceelementmodif].maxsegment); retaillePsourceponctuelle(listesourceponctuelle,nombresourceponctuelle+1,nombresourceponctuelle); Rafraichit; end; end; {du cas sourceponctuelle} mdondeplane: begin if ((tprot=tpa1) and ((x1<>listeondeplane[-1+indiceelementmodif].a1x) or (y1<>listeondeplane[-1+indiceelementmodif].a1y))) then begin retaillePondeplane(listeondeplane,nombreondeplane,nombreondeplane+1); if listeondeplane[-1+nombreondeplane+1].create( listeondeplane[-1+indiceelementmodif].nombrederayon,x1,y1, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) then listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon,x1,y1, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) else listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment); retaillePondeplane(listeondeplane,nombreondeplane+1,nombreondeplane); Rafraichit; end; if ((tprot=tpa2) and ((x1<>listeondeplane[-1+indiceelementmodif].a1x) or (y1<>listeondeplane[-1+indiceelementmodif].a1y))) then begin retaillePondeplane(listeondeplane,nombreondeplane,nombreondeplane+1); if listeondeplane[-1+nombreondeplane+1].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y,x1,y1, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) then listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y,x1,y1, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment) else listeondeplane[-1+indiceelementmodif].create( listeondeplane[-1+indiceelementmodif].nombrederayon, listeondeplane[-1+indiceelementmodif].sx, listeondeplane[-1+indiceelementmodif].sy, listeondeplane[-1+indiceelementmodif].a1x, listeondeplane[-1+indiceelementmodif].a1y, listeondeplane[-1+indiceelementmodif].a2x, listeondeplane[-1+indiceelementmodif].a2y, listeondeplane[-1+indiceelementmodif].couleur, listeondeplane[-1+indiceelementmodif].epaisseur, listeondeplane[-1+indiceelementmodif].vav, listeondeplane[-1+indiceelementmodif].vaa, listeondeplane[-1+indiceelementmodif].maxenfantparrayon, listeondeplane[-1+indiceelementmodif].tracersurfacesonde, listeondeplane[-1+indiceelementmodif].listechemins, listeondeplane[-1+indiceelementmodif].maxsegment); retaillePondeplane(listeondeplane,nombreondeplane+1,nombreondeplane); Rafraichit; end; end; {du cas ondeplane} end; {du case} moderotation:=false; form1.StatusBar1.Panels[3].text:=rsModeDPlaceme4; form1.StatusBar1.Panels[2].text:=rsFaitesPasser4; modifencours:=false; exit; end; {du cas rotation} end; function fleche.create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor; _ext1,_ext2:textremite; _styletrait:tpenstyle; _taille1,_taille2:integer):boolean; var taille:extended; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; cx:=(a1x+a2x)/2; cy:=(a1y+a2y)/2; epaisseur:=_epaisseur; couleur:=_couleur; ext1:=_ext1; ext2:=_ext2; styletrait:=_styletrait; taille1:=_taille1; taille2:=_taille2; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create:=false; exit; end; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); create:=true; modifie:=true; end; function miroirplan.create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor; _hachures:boolean):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; cx:=(a1x+a2x)/2; cy:=(a1y+a2y)/2; epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create:=false; exit; end; create:=true; modifie:=true; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); end; function reseau.create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor; _pas:extended; _entransmission, _hachures:boolean; _ordre_min,_ordre_max:integer):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; cx:=(a1x+a2x)/2; cy:=(a1y+a2y)/2; epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create:=false; exit; end; create:=true; modifie:=true; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); entransmission:=_entransmission; pas:=_pas; nombre_trait_par_mm:=1e-3/pas; if _ordre_min<=_ordre_max then begin ordre_min:=_ordre_min; ordre_max:=_ordre_max; end else begin ordre_max:=_ordre_min; ordre_min:=_ordre_max; end; end; function ecran.create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; cx:=(a1x+a2x)/2; cy:=(a1y+a2y)/2; epaisseur:=_epaisseur; couleur:=_couleur; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create:=false; exit; end; create:=true; modifie:=true; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); end; function lsr.create(_a1x,_a1y,_a2x,_a2y:extended; _epaisseur:integer; _couleur:tcolor):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; cx:=(a1x+a2x)/2; cy:=(a1y+a2y)/2; epaisseur:=_epaisseur; couleur:=_couleur; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create:=false; exit; end; create:=true; modifie:=true; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); end; function Mscopa.create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; fx:=_fx; fy:=_fy; sx:=(a1x+a2x)/2; sy:=(a1y+a2y)/2; cx:=sx+2*(fx-sx); cy:=sy+2*(fy-sy); focale:=sqrt(sqr(fx-sx)+sqr(fy-sy)); epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; couleuraxe:=_couleuraxe; trou:=_trou; diametretrou:=_diametretrou; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (trou and (diametretrou>taille))) then begin create:=false; exit; end; create:=true; modifie:=true; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); if not(trou) then begin t1x:=sx; t1y:=sy; t2x:=sx; t2y:=sy; end else begin t1x:=sx+diametretrou/2*cos(anglepolaire+Pi); t1y:=sy+diametretrou/2*sin(anglepolaire+Pi); t2x:=sx+diametretrou/2*cos(anglepolaire); t2y:=sy+diametretrou/2*sin(anglepolaire); end; end; procedure segment.create(_a1x,_a1y,_a2x,_a2y,_ap:extended; _epaisseur:integer; _couleur:tcolor; _virtuelavant,_virtuelarriere:boolean); begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; epaisseur:=_epaisseur; couleur:=_couleur; virtuelavant:=_virtuelavant; ap:=_ap; virtuelarriere:=_virtuelarriere; end; function Mscore.create(_a1x,_a1y,_a2x,_a2y,_cx,_cy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; var i:integer; monmax_x,monmax_y,monmin_x,monmin_y:extended; jj:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; cx:=_cx; cy:=_cy; rayoncourbure:=sqrt((cx-a1x)*(cx-a1x)+(cy-a1y)*(cy-a1y)); epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; couleuraxe:=_couleuraxe; trou:=_trou; diametretrou:=_diametretrou; if not(trou) then diametretrou:=0; if (a2x=cx) then if (a2y>cy) then theta2:=Pi/2 else theta2:=-Pi/2 else begin theta2:=arctan((a2y-cy)/(a2x-cx)); if (a2xcy) then theta1:=Pi/2 else theta1:=-Pi/2 else begin theta1:=arctan((a1y-cy)/(a1x-cx)); if (a1x2*Pi then theta1:=theta1-Pi*2; if theta1>theta2 then theta2:=theta2+2*Pi; if theta1>theta2 then theta2:=theta2+2*Pi; if (theta2-theta1<=Pi) then aigu:=true else aigu:=false; taille:=abs(rayoncourbure*(theta2-theta1)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (trou and (diametretrou>abs(theta2-theta1)))) then begin create:=false; exit; end; create:=true; modifie:=true; if not(trou) then begin theta1p:=theta1; theta2p:=theta2; end else begin theta1p:=(theta1+theta2)/2-diametretrou/2; theta2p:=(theta1+theta2)/2+diametretrou/2; end; sx:=cx+rayoncourbure*cos((theta1+theta2)/2); sy:=cy+rayoncourbure*sin((theta1+theta2)/2); circonference:=abs(rayoncourbure*(theta2-theta1)); monmax_x:=cx+rayoncourbure*cos(theta1); monmax_y:=cy+rayoncourbure*sin(theta1); monmin_x:=monmax_x; monmin_y:=monmax_y; for jj:=1 to 200 do begin if trou then begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmin_y); monmax_x:=maximum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmin_y); end else begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmin_y); end; end; if ((monmin_xxxmax) or (monmin_yyymax) ) then begin create:=false; exit; end; end; function Mscore.create2(_a1x,_a1y,_a2x,_a2y,_rayon:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_aigu,_trou:boolean; _diametretrou:extended):boolean; var i:integer; delta,lambda,xI,yI:extended; monmax_x,monmax_y,monmin_x,monmin_y:extended; jj:integer; begin a1x:=_a1x; aigu:=_aigu; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; couleuraxe:=_couleuraxe; rayoncourbure:=_rayon; trou:=_trou; diametretrou:=_diametretrou; if not(trou) then diametretrou:=0; xI:=(a1x+a2x)/2; yI:=(a1y+a2y)/2; delta:=4*sqr((a1x-xI)*(a2y-a1y)+(yI-a1y)*(a2x-a1x))-4*(sqr(a2y-a1y)+ sqr(a2x-a1x))*(sqr(xI-a1x)+sqr(yI-a1y)-sqr(rayoncourbure)); if ((delta<0) or ((a1x=a2x) and (a1y=a2y))) then begin create2:=false; exit; end; if aigu then lambda:=(-2*((a1x-xI)*(a2y-a1y)+(yI-a1y)*(a2x-a1x))+sqrt(delta))/2/ (sqr(a2y-a1y)+ sqr(a2x-a1x)) else lambda:=(-2*((a1x-xI)*(a2y-a1y)+(yI-a1y)*(a2x-a1x))-sqrt(delta))/2/ (sqr(a2y-a1y)+ sqr(a2x-a1x)); cx:=xI-lambda*(a2y-a1y); cy:=yI+lambda*(a2x-a1x); if (a2x=cx) then if (a2y>cy) then theta2:=Pi/2 else theta2:=-Pi/2 else begin theta2:=arctan((a2y-cy)/(a2x-cx)); if (a2xcy) then theta1:=Pi/2 else theta1:=-Pi/2 else begin theta1:=arctan((a1y-cy)/(a1x-cx)); if (a1x2*Pi then theta1:=theta1-Pi*2; if theta1>theta2 then theta2:=theta2+2*Pi; if theta1>theta2 then theta2:=theta2+2*Pi; taille:=abs(rayoncourbure*(theta2-theta1)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (trou and (diametretrou>abs(theta2-theta1)))) then begin create2:=false; exit; end; create2:=true; modifie:=true; if not(trou) then begin theta1p:=theta1; theta2p:=theta2; end else begin theta1p:=(theta1+theta2)/2-diametretrou/2; theta2p:=(theta1+theta2)/2+diametretrou/2; end; sx:=cx+rayoncourbure*cos((theta1+theta2)/2); sy:=cy+rayoncourbure*sin((theta1+theta2)/2); circonference:=abs(rayoncourbure*(theta2-theta1)); monmax_x:=cx+rayoncourbure*cos(theta1); monmax_y:=cy+rayoncourbure*sin(theta1); monmin_x:=monmax_x; monmin_y:=monmax_y; for jj:=1 to 200 do begin if trou then begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmin_y); monmax_x:=maximum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmin_y); end else begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmin_y); end; end; if ((monmin_xxxmax) or (monmin_yyymax) ) then begin create2:=false; exit; end; end; function Mscere.create(_a1x,_a1y,_a2x,_a2y,_cx,_cy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; var i:integer; monmax_x,monmax_y,monmin_x,monmin_y:extended; jj:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; cx:=_cx; cy:=_cy; rayoncourbure:=sqrt((cx-a1x)*(cx-a1x)+(cy-a1y)*(cy-a1y)); epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; couleuraxe:=_couleuraxe; trou:=_trou; diametretrou:=_diametretrou; if not(trou) then diametretrou:=0; if (a2x=cx) then if (a2y>cy) then theta2:=Pi/2 else theta2:=-Pi/2 else begin theta2:=arctan((a2y-cy)/(a2x-cx)); if (a2xcy) then theta1:=Pi/2 else theta1:=-Pi/2 else begin theta1:=arctan((a1y-cy)/(a1x-cx)); if (a1x2*Pi then theta1:=theta1-Pi*2; if theta1>theta2 then theta2:=theta2+2*Pi; if theta1>theta2 then theta2:=theta2+2*Pi; if (theta2-theta1<=Pi) then aigu:=true else aigu:=false; taille:=abs(rayoncourbure*(theta2-theta1)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (trou and (diametretrou>abs(theta2-theta1)))) then begin create:=false; exit; end; create:=true; modifie:=true; sx:=cx+rayoncourbure*cos((theta1+theta2)/2); sy:=cy+rayoncourbure*sin((theta1+theta2)/2); circonference:=abs(rayoncourbure*(theta2-theta1)); if not(trou) then begin theta1p:=theta1; theta2p:=theta2; end else begin theta1p:=(theta1+theta2)/2-diametretrou/2; theta2p:=(theta1+theta2)/2+diametretrou/2; end; monmax_x:=cx+rayoncourbure*cos(theta1); monmax_y:=cy+rayoncourbure*sin(theta1); monmin_x:=monmax_x; monmin_y:=monmax_y; for jj:=1 to 200 do begin if trou then begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmin_y); monmax_x:=maximum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmin_y); end else begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmin_y); end; end; if ((monmin_xxxmax) or (monmin_yyymax) ) then begin create:=false; exit; end; end; function Mscere.create2(_a1x,_a1y,_a2x,_a2y,_rayon:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_aigu,_trou:boolean; _diametretrou:extended):boolean; var i:integer; delta,lambda,xI,yI:extended; monmax_x,monmax_y,monmin_x,monmin_y:extended; jj:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; aigu:=_aigu; axefocal:=_axefocal; couleuraxe:=_couleuraxe; rayoncourbure:=_rayon; trou:=_trou; diametretrou:=_diametretrou; if not(trou) then diametretrou:=0; xI:=(a1x+a2x)/2; yI:=(a1y+a2y)/2; delta:=4*sqr((a1x-xI)*(a2y-a1y)+(yI-a1y)*(a2x-a1x))-4*(sqr(a2y-a1y)+ sqr(a2x-a1x))*(sqr(xI-a1x)+sqr(yI-a1y)-sqr(rayoncourbure)); if ((delta<0) or ((a1x=a2x) and (a1y=a2y))) then begin create2:=false; exit; end; if aigu then lambda:=(-2*((a1x-xI)*(a2y-a1y)+(yI-a1y)*(a2x-a1x))+sqrt(delta))/2/ (sqr(a2y-a1y)+ sqr(a2x-a1x))else lambda:=(-2*((a1x-xI)*(a2y-a1y)+(yI-a1y)*(a2x-a1x))-sqrt(delta))/2/ (sqr(a2y-a1y)+ sqr(a2x-a1x)); cx:=xI-lambda*(a2y-a1y); cy:=yI+lambda*(a2x-a1x); if (a2x=cx) then if (a2y>cy) then theta2:=Pi/2 else theta2:=-Pi/2 else begin theta2:=arctan((a2y-cy)/(a2x-cx)); if (a2xcy) then theta1:=Pi/2 else theta1:=-Pi/2 else begin theta1:=arctan((a1y-cy)/(a1x-cx)); if (a1x2*Pi then theta1:=theta1-Pi*2; if theta1>theta2 then theta2:=theta2+2*Pi; if theta1>theta2 then theta2:=theta2+2*Pi; taille:=abs(rayoncourbure*(theta2-theta1)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (trou and (diametretrou>abs(theta2-theta1)))) then begin create2:=false; exit; end; create2:=true; modifie:=true; if not(trou) then begin theta1p:=theta1; theta2p:=theta2; end else begin theta1p:=(theta1+theta2)/2-diametretrou/2; theta2p:=(theta1+theta2)/2+diametretrou/2; end; sx:=cx+rayoncourbure*cos((theta1+theta2)/2); sy:=cy+rayoncourbure*sin((theta1+theta2)/2); circonference:=abs(rayoncourbure*(theta2-theta1)); monmax_x:=cx+rayoncourbure*cos(theta1); monmax_y:=cy+rayoncourbure*sin(theta1); monmin_x:=monmax_x; monmin_y:=monmax_y; for jj:=1 to 200 do begin if trou then begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta1p-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta1p-theta1)*jj/200),monmin_y); monmax_x:=maximum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta2p+(theta2-theta2p)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta2p+(theta2-theta2p)*jj/200),monmin_y); end else begin monmax_x:=maximum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmax_x); monmin_x:=minimum(cx+rayoncourbure*cos(theta1+(theta2-theta1)*jj/200),monmin_x); monmax_y:=maximum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmax_y); monmin_y:=minimum(cy+rayoncourbure*sin(theta1+(theta2-theta1)*jj/200),monmin_y); end; end; if ((monmin_xxxmax) or (monmin_yyymax) ) then begin create2:=false; exit; end; end; procedure echange(var a,b:extended); var c:extended; begin c:=a; a:=b; b:=c; end; function lec.create(_s1x,_s1y,_s2x,_s2y,_r1,_r2,_diametre:extended; _couleurfond,_couleuraxe:tcolor; _axefocal:boolean; _indicerouge,_indicebleu,_indicevert:extended; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; var phi1,phi2,C1C2,S1S2,delta:extended; begin r1:=_r1; r2:=_r2; s1x:=_s1x; s1y:=_s1y; s2x:=_s2x; s2y:=_s2y; ox:=(s1x+s2x)/2; oy:=(s1y+s2y)/2; indicerouge:=_indicerouge; indicebleu:=_indicebleu; indicevert:=_indicevert; ReflechiEntrant:=_ReflechiEntrant; ReflechiSortant:=_ReflechiSortant; couleurfond:=_couleurfond; create:=true; axefocal:=_axefocal; couleuraxe:=_couleuraxe; diametre:=_diametre; if ((s1x=s2x) and (s1y=s2y)) then begin create:=false; exit; end; if ((r1=0) or (r2=0)) then begin create:=false; exit; end; S1S2:=sqrt(sqr(s2x-s1x)+sqr(s2y-s1y)); apaf:=donneanglepolairedans02pi(s2x-s1x,s2y-s1y); c1x:=s1x-r1*cos(apaf); c1y:=s1y-r1*sin(apaf); c2x:=s2x-r2*cos(apaf); c2y:=s2y-r2*sin(apaf); C1C2:=sqrt(sqr(c2x-c1x)+sqr(c2y-c1y)); {determine si elle est a bord mince ou epais} delta:=16*sqr(r2)*sqr(C1C2)-4*sqr(sqr(C1C2)+sqr(r2)-sqr(r1)); mince:=(delta>0) and (sqr(C1C2)+sqr(r2)-sqr(r1)-2*abs(r2)*(c2x-c1x)<>0); if (not(mince) and ((diametre>2*abs(r1)) or (diametre>2*abs(r2)))) then diametre:=minimum(abs(r2),abs(r1))*2*0.999; if ((diametrexxmax) or (s1yyymax) or (s2xxxmax) or (s2yyymax)) then begin create:=false; exit; end; {if mince then begin if r1*r2>0 then phi1:=arccos((sqr(C1C2)+sqr(r1)-sqr(r2))/2/C1C2/abs(r1)) else phi1:=arccos(-(sqr(C1C2)+sqr(r1)-sqr(r2))/2/C1C2/abs(r1)); diametremax:=2*abs(r1*sin(phi1)); if r1*r2>0 then phi2:=arccos(-(sqr(C1C2)+sqr(r2)-sqr(r1))/2/C1C2/abs(r2)) else phi2:=arccos((sqr(C1C2)+sqr(r2)-sqr(r1))/2/C1C2/abs(r2)); end;} if mince then begin if (sqr(C1C2)+sqr(r2)-sqr(r1)-2*abs(r2)*(c2x-c1x))>0 then begin theta1_2:=2*arctan( (-4*abs(r2)*(c2y-c1y)-sqrt(delta))/2/(sqr(C1C2)+sqr(r2)-sqr(r1)-2*abs(r2)*(c2x-c1x))); theta2_2:=2*arctan( (-4*abs(r2)*(c2y-c1y)+sqrt(delta))/ 2/(sqr(C1C2)+sqr(r2)-sqr(r1)-2*abs(r2)*(c2x-c1x))) end else begin theta1_2:=2*arctan( (-4*abs(r2)*(c2y-c1y)+sqrt(delta))/2/(sqr(C1C2)+sqr(r2)-sqr(r1)-2*abs(r2)*(c2x-c1x))); theta2_2:=2*arctan( (-4*abs(r2)*(c2y-c1y)-sqrt(delta))/ 2/(sqr(C1C2)+sqr(r2)-sqr(r1)-2*abs(r2)*(c2x-c1x))); end; if theta1_2<0 then theta1_2:=theta1_2+2*pi; if theta2_2<0 then theta2_2:=theta2_2+2*pi; if theta1_2>theta2_2 then echange(theta1_2,theta2_2); if ( (abs((theta1_2+theta2_2)/2-apaf)<=abs(apaf*1e-10)) and (r2<0)) or ( (abs((theta1_2+theta2_2)/2-apaf)>abs(apaf*1e-10)) and (r2>0)) then begin echange(theta1_2,theta2_2); theta2_2:=theta2_2+2*pi; end; delta:=16*sqr(r1)*sqr(C1C2)-4*sqr(sqr(C1C2)+sqr(r1)-sqr(r2)); if (sqr(C1C2)+sqr(r1)-sqr(r2)-2*abs(r1)*(c1x-c2x))>0 then begin theta1_1:=2*arctan( (-4*abs(r1)*(c1y-c2y)-sqrt(delta))/ 2/(sqr(C1C2)+sqr(r1)-sqr(r2)-2*abs(r1)*(c1x-c2x))); theta2_1:=2*arctan( (-4*abs(r1)*(c1y-c2y)+sqrt(delta))/ 2/(sqr(C1C2)+sqr(r1)-sqr(r2)-2*abs(r1)*(c1x-c2x))); end else begin theta1_1:=2*arctan( (-4*abs(r1)*(c1y-c2y)+sqrt(delta))/ 2/(sqr(C1C2)+sqr(r1)-sqr(r2)-2*abs(r1)*(c1x-c2x))); theta2_1:=2*arctan( (-4*abs(r1)*(c1y-c2y)-sqrt(delta))/ 2/(sqr(C1C2)+sqr(r1)-sqr(r2)-2*abs(r1)*(c1x-c2x))); end; if theta1_1<0 then theta1_1:=theta1_1+2*pi; if theta2_1<0 then theta2_1:=theta2_1+2*pi; if theta1_1>theta2_1 then echange(theta1_1,theta2_1); if ( (abs((theta1_1+theta2_1)/2-apaf)<=abs(apaf*1e-10)) and (r1<0)) or ( (abs((theta1_1+theta2_1)/2-apaf)>abs(apaf*1e-10)) and (r1>0)) then begin echange(theta1_1,theta2_1); theta2_1:=theta2_1+2*pi; end; diametremax:=abs(r1)*sqrt(sqr(cos(theta2_1)-cos(theta1_1))+sqr(sin(theta2_1)-sin(theta1_1))); end; if mince then if ( ( (r1<0) and (diametre>diametremax) and (cos(theta1_1-apaf)>0)) or ( (r1>0) and (diametre>diametremax) and (cos(theta1_1-apaf)<0)) or ( (r2<0) and (diametre>diametremax) and (cos(theta1_2-apaf)>0)) or ( (r2>0) and (diametre>diametremax) and (cos(theta1_2-apaf)<0)) ) then begin create:=false; exit; end; if mince then tronque:=(diametre0 then begin a2x:=c2x+abs(r2)*cos(theta2_2); a2y:=c2y+abs(r2)*sin(theta2_2); b2x:=c2x+abs(r2)*cos(theta1_2); b2y:=c2y+abs(r2)*sin(theta1_2); end else begin a2x:=c2x+abs(r2)*cos(theta1_2); a2y:=c2y+abs(r2)*sin(theta1_2); b2x:=c2x+abs(r2)*cos(theta2_2); b2y:=c2y+abs(r2)*sin(theta2_2); end; if mince and not(tronque) then begin if (r2>0) and (r1<0) then begin phi2:=arccos((sqr(r1)-sqr(r2)-sqr(C1C2))/2/abs(r2)/(-C1C2)); phi1:=pi-arcsin(abs(r2)*sin(phi2)/abs(r1)); end; if (r2>0) and (r1>0) then begin phi2:=arccos((sqr(r1)-sqr(r2)-sqr(C1C2))/2/abs(r2)/(C1C2)); phi1:=arcsin(abs(r2)*sin(phi2)/abs(r1)); end; if (r2<0) and (r1<0) then begin phi2:=arccos((sqr(r1)-sqr(r2)-sqr(C1C2))/2/abs(r2)/(C1C2)); phi1:=pi-arcsin(abs(r2)*sin(phi2)/abs(r1)); end; theta1[1]:=apaf-phi1; theta2[1]:=apaf+phi1; theta1[2]:=apaf+phi2; theta2[2]:=apaf-phi2; MesSommets[1].ax:=c1x+abs(r1)*cos(theta1[1]); MesSommets[1].ay:=c1y+abs(r1)*sin(theta1[1]); MesSommets[2].ax:=c1x+abs(r1)*cos(theta2[1]); MesSommets[2].ay:=c1y+abs(r1)*sin(theta2[1]); MesSommets[3].ax:=c1x+abs(r1)*cos(theta1[1]); MesSommets[3].ay:=c1y+abs(r1)*sin(theta1[1]); MesCentres[1].ax:=c1x; MesCentres[1].ay:=c1y; MesCentres[2].ax:=c2x; MesCentres[2].ay:=c2y; rectiligne[1]:=false; rectiligne[2]:=false; rentrant[1]:=(r1>0); rentrant[2]:=(r2<0); trig[1]:=(r1>0); trig[2]:=(r2<0); end; if tronque then begin if r1>0 then phi1:=arcsin(diametre/2/abs(r1)) else phi1:=pi-arcsin(diametre/2/abs(r1)); if r2>0 then phi2:=arcsin(diametre/2/abs(r2)) else phi2:=pi-arcsin(diametre/2/abs(r2)); theta1[1]:=apaf-phi1; theta2[1]:=apaf+phi1; theta1[3]:=apaf+phi2; theta2[3]:=apaf-phi2; MesSommets[1].ax:=c1x+abs(r1)*cos(theta1[1]); MesSommets[1].ay:=c1y+abs(r1)*sin(theta1[1]); MesSommets[2].ax:=c1x+abs(r1)*cos(theta2[1]); MesSommets[2].ay:=c1y+abs(r1)*sin(theta2[1]); MesSommets[3].ax:=c2x+abs(r2)*cos(theta1[3]); MesSommets[3].ay:=c2y+abs(r2)*sin(theta1[3]); MesSommets[4].ax:=c2x+abs(r2)*cos(theta2[3]); MesSommets[4].ay:=c2y+abs(r2)*sin(theta2[3]); MesSommets[5].ax:=c1x+abs(r1)*cos(theta1[1]); MesSommets[5].ay:=c1y+abs(r1)*sin(theta1[1]); MesCentres[1].ax:=c1x; MesCentres[1].ay:=c1y; MesCentres[3].ax:=c2x; MesCentres[3].ay:=c2y; rectiligne[1]:=false; rectiligne[2]:=true; rectiligne[3]:=false; rectiligne[4]:=true; rentrant[1]:=(r1>0); rentrant[3]:=(r2<0); trig[1]:=(r1>0); trig[2]:=false; trig[3]:=(r2<0); trig[4]:=false; if r1>0 then begin theta1_1:=apaf-phi1; theta2_1:=apaf+phi1; end else begin theta1_1:=apaf+phi1; theta2_1:=apaf-phi1+2*pi; end; if r2>0 then begin theta1_2:=apaf-phi2; theta2_2:=apaf+phi2; end else begin theta1_2:=apaf+phi2; theta2_2:=apaf-phi2+2*pi; end; if theta1_1<0 then theta1_1:=theta1_1+2*pi; if theta1_1>theta2_1 then theta2_1:=theta2_1+2*pi; if theta1_1>theta2_1 then theta2_1:=theta2_1+2*pi; if theta1_2<0 then theta1_2:=theta1_2+2*pi; if theta1_2>theta2_2 then theta2_2:=theta2_2+2*pi; if theta1_2>theta2_2 then theta2_2:=theta2_2+2*pi; a1x:=c1x+abs(r1)*cos(theta2_1); a1y:=c1y+abs(r1)*sin(theta2_1); b1x:=c1x+abs(r1)*cos(theta1_1); b1y:=c1y+abs(r1)*sin(theta1_1); if r1*r2>0 then begin a2x:=c2x+abs(r2)*cos(theta2_2); a2y:=c2y+abs(r2)*sin(theta2_2); b2x:=c2x+abs(r2)*cos(theta1_2); b2y:=c2y+abs(r2)*sin(theta1_2); end else begin a2x:=c2x+abs(r2)*cos(theta1_2); a2y:=c2y+abs(r2)*sin(theta1_2); b2x:=c2x+abs(r2)*cos(theta2_2); b2y:=c2y+abs(r2)*sin(theta2_2); end; if ((a1xxxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (b1xxxmax) or (b1yyymax) or (b2xxxmax) or (b2yyymax) ) then begin create:=false; exit; end; end; modifie:=true; end; procedure lec.dessine(mc:tmonbitmap); var ap1x,ap1y,bp1x,bp1y,ap2x,ap2y,bp2x,bp2y,I1S1,I2S2,i1x,i1y,i2x,i2y:extended; fx1,fy1,fx2,fy2,r1x,r1y,r2x,r2y:longint; titi:array[1..4] of tpoint; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; lx,ly:array of extended; label 125; begin old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; setlength(lx,4); setlength(ly,4); lx[0]:=a1x; lx[1]:=a2x; lx[2]:=b2x; lx[3]:=b1x; ly[0]:=a1y; ly[1]:=a2y; ly[2]:=b2y; ly[3]:=b1y; if not(tronque) then begin if ((r1<0) and (r2>0)) then begin form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1>0) and (r2>0)) then begin form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond xor couleurfondsimulation; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond xor couleurfondsimulation; ; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmxor; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1<0) and (r2<0)) then begin form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond xor couleurfondsimulation; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond xor couleurfondsimulation; ; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmxor; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; end; if tronque then begin if ((r1>0) and (r2>0)) then begin form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond xor couleurfondsimulation; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond xor couleurfondsimulation; ; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmxor; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1<0) and (r2>0)) then begin form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1>0) and (r2<0)) then begin form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond xor couleurfondsimulation; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond xor couleurfondsimulation; ; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmxor; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1<0) and (r2<0)) then begin form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); form1.Image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfond xor couleurfondsimulation; form1.Image1.Picture.Bitmap.Canvas.pen.Color:=couleurfond xor couleurfondsimulation; ; form1.Image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.Image1.Picture.Bitmap.Canvas.pen.Mode:=pmxor; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); form1.Image1.Picture.Bitmap.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; end; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; if not( mc.arcdecercle(c1x,c1y,abs(r1),1,theta1_1,theta2_1,clblack,pmcopy,pssolid,true)) then mc.trait(a1x,a1y,b1x,b1y,1,clblack,pssolid,pmcopy,true); if not( mc.arcdecercle(c2x,c2y,abs(r2),1,theta1_2,theta2_2,clblack,pmcopy,pssolid,true)) then mc.trait(a2x,a2y,b2x,b2y,1,clblack,pssolid,pmcopy,true); if tronque then begin mc.trait(a1x,a1y,a2x,a2y,1,clblack,pssolid,pmcopy,true); mc.trait(b1x,b1y,b2x,b2y,1,clblack,pssolid,pmcopy,true); end; if axefocal then mc.trait(c1x,c1y,c2x,c2y,1,couleuraxe,psdashdot,pmcopy,true); if axefocal then mc.trait(s1x,s1y,s2x,s2y,1,couleuraxe,psdashdot,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then begin if modemodif then mc.croixx(ox,oy,3, 2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3,1,couleurpoignees,pmcopy,true); mc.cercle(s1x,s1y,3,1,couleurpoignees,pmcopy,true); mc.cercle(s2x,s2y,3,1,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3,1,couleurpoignees,pmcopy,true); if modesuppression then begin mc.cercle(ox,oy,3,1,couleursuppression,pmcopy,true); mc.cercle(s1x,s1y,3,1,couleursuppression,pmcopy,true); mc.cercle(s2x,s2y,3,1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); end; procedure lec.dessinePS(mc:tmonpostscript); var ap1x,ap1y,bp1x,bp1y,ap2x,ap2y,bp2x,bp2y,I1S1,I2S2,i1x,i1y,i2x,i2y:extended; fx1,fy1,fx2,fy2,r1x,r1y,r2x,r2y:longint; titi:array[1..4] of tpoint; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; lx,ly:array of extended; label 125; begin old_pencolor:=ps.Pen.Color; old_penmode:=ps.Pen.Mode; old_penstyle:=ps.Pen.Style; old_penwidth:=ps.Pen.Width; old_brushcolor:=ps.Brush.Color; old_brushstyle:=ps.Brush.Style; if tronque then begin mc.tracepolycercle(MesSommets,4, MesCentres, rectiligne,rentrant,theta1,theta2,couleurfond,clblack,trig); mc.trait(a1x,a1y,a2x,a2y,1,clblack,pssolid,pmcopy,true); mc.trait(b1x,b1y,b2x,b2y,1,clblack,pssolid,pmcopy,true); mc.arcdecercle(c1x,c1y,abs(r1),1,theta1_1,theta2_1,clblack,pmcopy,pssolid,true); mc.arcdecercle(c2x,c2y,abs(r2),1,theta1_2,theta2_2,clblack,pmcopy,pssolid,true); end else begin mc.tracepolycercle(MesSommets,2, MesCentres, rectiligne,rentrant,theta1,theta2,couleurfond,clblack,trig); mc.arcdecercle(c1x,c1y,abs(r1),1,theta1_1,theta2_1,clblack,pmcopy,pssolid,true); mc.arcdecercle(c2x,c2y,abs(r2),1,theta1_2,theta2_2,clblack,pmcopy,pssolid,true); end; if axefocal then mc.trait(c1x,c1y,c2x,c2y,1,couleuraxe,psdashdot,pmcopy,true); if axefocal then mc.trait(s1x,s1y,s2x,s2y,1,couleuraxe,psdashdot,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then begin if modemodif then mc.croixx(ox,oy,3, 2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3,1,couleurpoignees,pmcopy,true); mc.cercle(s1x,s1y,3,1,couleurpoignees,pmcopy,true); mc.cercle(s2x,s2y,3,1,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3,1,couleurpoignees,pmcopy,true); if modesuppression then begin mc.cercle(ox,oy,3,1,couleursuppression,pmcopy,true); mc.cercle(s1x,s1y,3,1,couleursuppression,pmcopy,true); mc.cercle(s2x,s2y,3,1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); end; procedure lec.imprime(mc:tmyimprimante); var ap1x,ap1y,bp1x,bp1y,ap2x,ap2y,bp2x,bp2y,I1S1,I2S2,i1x,i1y,i2x,i2y:extended; fx1,fy1,fx2,fy2,r1x,r1y,r2x,r2y:longint; titi:array[1..4] of tpoint; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; lx,ly:array of extended; begin old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; setlength(lx,4); setlength(ly,4); lx[0]:=a1x; lx[1]:=a2x; lx[2]:=b2x; lx[3]:=b1x; ly[0]:=a1y; ly[1]:=a2y; ly[2]:=b2y; ly[3]:=b1y; if not(tronque) then begin if ((r1<0) and (r2>0)) then begin imprimante.Canvas.Brush.Color:=couleurfond; imprimante.Canvas.pen.Color:=couleurfond; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1>0) and (r2>0)) then begin imprimante.Canvas.Brush.Color:=couleurfond; imprimante.Canvas.pen.Color:=couleurfond; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); imprimante.Canvas.Brush.Color:=couleurfondsimulation; imprimante.Canvas.pen.Color:=couleurfondsimulation; ; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1<0) and (r2<0)) then begin imprimante.Canvas.Brush.Color:=couleurfond; imprimante.Canvas.pen.Color:=couleurfond; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); imprimante.Canvas.Brush.Color:=couleurfondsimulation; imprimante.Canvas.pen.Color:=couleurfondsimulation; ; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; end; if tronque then begin if ((r1>0) and (r2>0)) then begin imprimante.Canvas.Brush.Color:=couleurfond; imprimante.Canvas.pen.Color:=couleurfond; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); imprimante.Canvas.Brush.Color:=couleurfondsimulation; imprimante.Canvas.pen.Color:=couleurfondsimulation; ; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1<0) and (r2>0)) then begin imprimante.Canvas.Brush.Color:=couleurfond; imprimante.Canvas.pen.Color:=couleurfond; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1>0) and (r2<0)) then begin imprimante.Canvas.Brush.Color:=couleurfond; imprimante.Canvas.pen.Color:=couleurfond; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); imprimante.Canvas.Brush.Color:=couleurfondsimulation; imprimante.Canvas.pen.Color:=couleurfondsimulation; ; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; if ((r1<0) and (r2<0)) then begin imprimante.Canvas.Brush.Color:=couleurfond; imprimante.Canvas.pen.Color:=couleurfond; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.tracepolygone(4,lx,ly,couleurfond,couleurfond,false,pmcopy,true); mc.invconvert(r1x,r1y,c1x-abs(r1),c1y+abs(r1),true); mc.invconvert(r2x,r2y,c1x+abs(r1),c1y-abs(r1),true); mc.invconvert(fx1,fy1,c1x+abs(r1)*cos(theta1_1),c1y+abs(r1)*sin(theta1_1),true); mc.invconvert(fx2,fy2,c1x+abs(r1)*cos(theta2_1),c1y+abs(r1)*sin(theta2_1),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); imprimante.Canvas.Brush.Color:=couleurfondsimulation; imprimante.Canvas.pen.Color:=couleurfondsimulation; ; imprimante.Canvas.Brush.Style:=bssolid; imprimante.Canvas.pen.Mode:=pmcopy; mc.invconvert(r1x,r1y,c2x-abs(r2),c2y+abs(r2),true); mc.invconvert(r2x,r2y,c2x+abs(r2),c2y-abs(r2),true); mc.invconvert(fx1,fy1,c2x+abs(r2)*cos(theta1_2),c2y+abs(r2)*sin(theta1_2),true); mc.invconvert(fx2,fy2,c2x+abs(r2)*cos(theta2_2),c2y+abs(r2)*sin(theta2_2),true); imprimante.Canvas.Chord(r1x,r1y,r2x,r2y,fx1,fy1,fx2,fy2); end; end; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; if not( mc.arcdecercle(c1x,c1y,abs(r1),1,theta1_1,theta2_1,clblack,pmcopy,pssolid,true)) then mc.trait(a1x,a1y,b1x,b1y,1,clblack,pssolid,pmcopy,true); if not( mc.arcdecercle(c2x,c2y,abs(r2),1,theta1_2,theta2_2,clblack,pmcopy,pssolid,true)) then mc.trait(a2x,a2y,b2x,b2y,1,clblack,pssolid,pmcopy,true); if tronque then begin mc.trait(a1x,a1y,a2x,a2y,1,clblack,pssolid,pmcopy,true); mc.trait(b1x,b1y,b2x,b2y,1,clblack,pssolid,pmcopy,true); end; if axefocal then mc.trait(c1x,c1y,c2x,c2y,1,couleuraxe,psdashdot,pmcopy,true); if axefocal then mc.trait(s1x,s1y,s2x,s2y,1,couleuraxe,psdashdot,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then begin if modemodif then mc.croixx(ox,oy,3, 2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3,1,couleurpoignees,pmcopy,true); mc.cercle(s1x,s1y,3,1,couleurpoignees,pmcopy,true); mc.cercle(s2x,s2y,3,1,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3,1,couleurpoignees,pmcopy,true); if modesuppression then begin mc.cercle(ox,oy,3,1,couleursuppression,pmcopy,true); mc.cercle(s1x,s1y,3,1,couleursuppression,pmcopy,true); mc.cercle(s2x,s2y,3,1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); end; function lmc.create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; f1x:=_fx; f1y:=_fy; ox:=(a1x+a2x)/2; oy:=(a1y+a2y)/2; f2x:=2*ox-f1x; f2y:=2*oy-f1y; focale:=sqrt((ox-f1x)*(ox-f1x)+(oy-f1y)*(oy-f1y)); epaisseur:=_epaisseur; couleur:=_couleur; axefocal:=_axefocal; couleuraxe:=_couleuraxe; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); rayonmonture:=taille/2; if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create:=false; exit; end; create:=true; modifie:=true; if (a1x=a2x) then if (a2y>a1y) then anglepolaire:=Pi/2 else anglepolaire:=-Pi/2 else begin anglepolaire:=arctan((a2y-a1y)/(a2x-a1x)); if (a2xPi then anglepolaire:=anglepolaire-Pi*2; normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); end; function lmd.create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; f1x:=_fx; f1y:=_fy; ox:=(a1x+a2x)/2; oy:=(a1y+a2y)/2; f2x:=2*ox-f1x; f2y:=2*oy-f1y; focale:=sqrt((ox-f1x)*(ox-f1x)+(oy-f1y)*(oy-f1y)); epaisseur:=_epaisseur; couleur:=_couleur; axefocal:=_axefocal; couleuraxe:=_couleuraxe; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create:=false; exit; end; create:=true; modifie:=true; if (a1x=a2x) then if (a2y>a1y) then anglepolaire:=Pi/2 else anglepolaire:=-Pi/2 else begin anglepolaire:=arctan((a2y-a1y)/(a2x-a1x)); if (a2xPi then anglepolaire:=anglepolaire-Pi*2; normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); end; function lmc.create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; ox:=(a1x+a2x)/2; oy:=(a1y+a2y)/2; focale:=abs(_focale); epaisseur:=_epaisseur; couleur:=_couleur; axefocal:=_axefocal; couleuraxe:=_couleuraxe; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); rayonmonture:=taille/2; if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create2:=false; exit; end; create2:=true; modifie:=true; if (a1x=a2x) then if (a2y>a1y) then anglepolaire:=Pi/2 else anglepolaire:=-Pi/2 else begin anglepolaire:=arctan((a2y-a1y)/(a2x-a1x)); if (a2xPi then anglepolaire:=anglepolaire-Pi*2; f1x:=ox+focale*cos(anglepolaire+Pi/2); f1y:=oy+focale*sin(anglepolaire+Pi/2); f2x:=ox-focale*cos(anglepolaire+Pi/2); f2y:=oy-focale*sin(anglepolaire+Pi/2); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); end; function lmd.create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _axefocal:boolean):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; ox:=(a1x+a2x)/2; oy:=(a1y+a2y)/2; focale:=abs(_focale); epaisseur:=_epaisseur; couleur:=_couleur; axefocal:=_axefocal; couleuraxe:=_couleuraxe; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)) then begin create2:=false; exit; end; create2:=true; modifie:=true; if (a1x=a2x) then if (a2y>a1y) then anglepolaire:=Pi/2 else anglepolaire:=-Pi/2 else begin anglepolaire:=arctan((a2y-a1y)/(a2x-a1x)); if (a2xPi then anglepolaire:=anglepolaire-Pi*2; f1x:=ox+focale*cos(anglepolaire+Pi/2); f1y:=oy+focale*sin(anglepolaire+Pi/2); f2x:=ox-focale*cos(anglepolaire+Pi/2); f2y:=oy-focale*sin(anglepolaire+Pi/2); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); end; function Mscepa.create(_a1x,_a1y,_a2x,_a2y,_fx,_fy:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; fx:=_fx; fy:=_fy; sx:=(a1x+a2x)/2; sy:=(a1y+a2y)/2; cx:=sx+2*(fx-sx); cy:=sy+2*(fy-sy); focale:=sqrt(sqr(fx-sx)+sqr(fy-sy)); epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; couleuraxe:=_couleuraxe; trou:=_trou; diametretrou:=_diametretrou; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax)or (trou and (diametretrou>taille)) ) then begin create:=false; exit; end; create:=true; modifie:=true; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); if not(trou) then begin t1x:=sx; t1y:=sy; t2x:=sx; t2y:=sy; end else begin t1x:=sx+diametretrou/2*cos(anglepolaire+Pi); t1y:=sy+diametretrou/2*sin(anglepolaire+Pi); t2x:=sx+diametretrou/2*cos(anglepolaire); t2y:=sy+diametretrou/2*sin(anglepolaire); end; end; function mscopa.create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; sx:=(a1x+a2x)/2; sy:=(a1y+a2y)/2; focale:=_focale; epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; couleuraxe:=_couleuraxe; trou:=_trou; diametretrou:=_diametretrou; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (trou and (diametretrou>taille))) then begin create2:=false; exit; end; create2:=true; modifie:=true; anglepolaire:=donneanglepolairedanspipi(a2x-a1x,a2y-a1y); fx:=sx+focale*cos(anglepolaire+Pi/2); fy:=sy+focale*sin(anglepolaire+Pi/2); cx:=sx+2*(fx-sx); cy:=sy+2*(fy-sy); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); if not(trou) then begin t1x:=sx; t1y:=sy; t2x:=sx; t2y:=sy; end else begin t1x:=sx+diametretrou/2*cos(anglepolaire+Pi); t1y:=sy+diametretrou/2*sin(anglepolaire+Pi); t2x:=sx+diametretrou/2*cos(anglepolaire); t2y:=sy+diametretrou/2*sin(anglepolaire); end; end; function mscepa.create2(_a1x,_a1y,_a2x,_a2y,_focale:extended; _epaisseur:integer; _couleur,_couleuraxe:tcolor; _hachures,_axefocal,_trou:boolean; _diametretrou:extended):boolean; var i:integer; begin a1x:=_a1x; a1y:=_a1y; a2x:=_a2x; a2y:=_a2y; sx:=(a1x+a2x)/2; sy:=(a1y+a2y)/2; focale:=_focale; epaisseur:=_epaisseur; couleur:=_couleur; hachures:=_hachures; axefocal:=_axefocal; couleuraxe:=_couleuraxe; trou:=_trou; diametretrou:=_diametretrou; taille:=sqrt((a2x-a1x)*(a2x-a1x)+(a2y-a1y)*(a2y-a1y)); if ((taillexxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (trou and (diametretrou>taille))) then begin create2:=false; exit; end; create2:=true; modifie:=true; if (a1x=a2x) then if (a2y>a1y) then anglepolaire:=Pi/2 else anglepolaire:=-Pi/2 else begin anglepolaire:=arctan((a2y-a1y)/(a2x-a1x)); if (a2xPi then anglepolaire:=anglepolaire-Pi*2; fx:=sx-focale*cos(anglepolaire+Pi/2); fy:=sy-focale*sin(anglepolaire+Pi/2); cx:=sx+2*(fx-sx); cy:=sy+2*(fy-sy); normalex:=cos(anglepolaire+Pi/2); normaley:=sin(anglepolaire+Pi/2); if not(trou) then begin t1x:=sx; t1y:=sy; t2x:=sx; t2y:=sy; end else begin t1x:=sx+diametretrou/2*cos(anglepolaire+Pi); t1y:=sy+diametretrou/2*sin(anglepolaire+Pi); t2x:=sx+diametretrou/2*cos(anglepolaire); t2y:=sy+diametretrou/2*sin(anglepolaire); end; end; function rayon.create (_ax,_ay,_kx,_ky:extended; _couleur:tcolor; _epaisseur:integer; _vav,_vaa:shortstring; _nombremaxenfant,_maxsegment:integer):boolean; var i:integer; begin maxsegment:=_maxsegment; ax:=_ax; ay:=_ay; kx:=_kx; ky:=_ky; couleur:=_couleur; epaisseur:=_epaisseur; bx:=ax+kx; by:=ay+ky; vav:=_vav; vaa:=_vaa; for i:=1 to maxsegment do liste_vav[i]:=(pos(','+inttostr(i)+',',vav)<>0) or (pos('('+inttostr(i)+',',vav)<>0) or (pos(','+inttostr(i)+')',vav)<>0) or (pos('('+inttostr(i)+')',vav)<>0); for i:=1 to maxsegment do liste_vaa[i]:=(pos(','+inttostr(i)+',',vaa)<>0) or (pos('('+inttostr(i)+',',vaa)<>0) or (pos(','+inttostr(i)+')',vaa)<>0) or (pos('('+inttostr(i)+')',vaa)<>0); nombremaxenfant:=_nombremaxenfant; if (((kx=0) and (ky=0)) or (sqrt(sqr(kx)+sqr(ky))xxmax) or (ayyymax) or (ax+kxxxmax) or (ay+kyyymax)) then begin create:=false; exit; end else create:=true; modifie:=true; cx:=ax+kx/2; cy:=ay+ky/2; if (kx=0) then if (ky>0) then anglepolaire:=Pi/2 else anglepolaire:=-Pi/2 else begin anglepolaire:=arctan(ky/kx); if (kx<0) then anglepolaire:=anglepolaire+Pi; end; if anglepolaire>Pi then anglepolaire:=anglepolaire-Pi*2; end; function rayon.createenfant (_ax,_ay,_kx,_ky:extended; _couleur:tcolor; _epaisseur:integer;_vav,_vaa:shortstring; _nombremaxenfant,_maxsegment,indicesegment:integer):boolean; var i:integer; begin ax:=_ax; ay:=_ay; kx:=_kx; ky:=_ky; couleur:=_couleur; epaisseur:=_epaisseur; vaa:=_vaa; vav:=_vav; bx:=ax+kx; by:=ay+ky; nombremaxenfant:=_nombremaxenfant; maxsegment:=_maxsegment; for i:=1 to maxsegment do liste_vav[i]:=(pos(','+inttostr(i+indicesegment)+',',vav)<>0) or (pos('('+inttostr(i+indicesegment)+',',vav)<>0) or (pos(','+inttostr(i+indicesegment)+')',vav)<>0) or (pos('('+inttostr(i+indicesegment)+')',vav)<>0); for i:=1 to maxsegment do liste_vaa[i]:=(pos(','+inttostr(i+indicesegment)+',',vaa)<>0) or (pos('('+inttostr(i+indicesegment)+',',vaa)<>0) or (pos(','+inttostr(i+indicesegment)+')',vaa)<>0) or (pos('('+inttostr(i+indicesegment)+')',vaa)<>0); vav:='('; for i:=1 to maxsegment do if liste_vav[i] then vav:=vav+inttostr(i)+','; if vav[length(vav)]=',' then vav[length(vav)]:=')' else vav:=vav+')'; vaa:='('; for i:=1 to maxsegment do if liste_vaa[i] then vaa:=vaa+inttostr(i)+','; if vaa[length(vaa)]=',' then vaa[length(vaa)]:=')' else vaa:=vaa+')'; if (((kx=0) and (ky=0)) or (sqrt(sqr(kx)+sqr(ky))xxmax) or (ayyymax) or (ax+kx/1000xxmax) or (ay+ky/1000yymax)) then begin createenfant:=false; exit; end else createenfant:=true; cx:=ax+kx/2; cy:=ay+ky/2; if (kx=0) then if (ky>0) then anglepolaire:=Pi/2 else anglepolaire:=-Pi/2 else begin anglepolaire:=arctan(ky/kx); if (kx<0) then anglepolaire:=anglepolaire+Pi; end; if anglepolaire>Pi then anglepolaire:=anglepolaire-Pi*2; end; function SourcePonctuelle.create(_nombrederayon:integer; _sx,_sy,_a1x,_a1y,_a2x,_a2y:extended; _couleur:tcolor; _epaisseur:integer; _vav,_vaa:shortstring; _maxenfantparrayon:integer; _sourcevirtuelle,_tracersurfacesonde:boolean; _listechemins:shortstring;_maxsegment:integer):boolean; var tt1,tt2,rra:extended; i,i1,i2,i3:integer; erreur:boolean; ss:string; label 157,159; begin maxsegment:=_maxsegment; if ((_sxxxmax) or (_syyymax) or (_a1xxxmax) or (_a1yyymax) or (_a2xxxmax) or (_a2yyymax) ) then begin create:=false; exit; end; sourcevirtuelle:=_sourcevirtuelle; tracersurfacesonde:=_tracersurfacesonde; listechemins:=_listechemins; nombrecheminsoptiques:=0; ss:=listechemins; erreur:=false; 157: i1:=pos(' ',ss); if length(ss)=0 then goto 159; if i1=0 then begin try inc(nombrecheminsoptiques); listecheminsoptiques[nombrecheminsoptiques]:=strtofloat(ss); except end; goto 159; end; try inc(nombrecheminsoptiques); listecheminsoptiques[nombrecheminsoptiques]:=strtofloat(copy(ss,1,i1-1)); if i1maxrayonsparsourceponctuelle)) then begin create:=false; exit; end; {source relle} if not(sourcevirtuelle) then begin if not (ray[1].create(sx,sy,a1x-sx,a1y-sy,couleur,epaisseur,vav, vaa,maxenfantparrayon,maxsegment)) then begin create:=false; exit; end; tt1:=ray[1].anglepolaire; if not(ray[nombrederayon].create(sx,sy,a2x-sx,a2y-sy,couleur,epaisseur,vav, vaa,maxenfantparrayon,maxsegment)) then begin create:=false; exit; end; tt2:=ray[nombrederayon].anglepolaire; if nombrederayon=2 then begin create:=true; modifie:=true; exit; end; create:=true; rra:=sqrt(sqr(a1x-sx)+sqr(a1y-sy)); if (sqrt(sqr(a2x-sx)+sqr(a2y-sy))0 then begin a2y:=a1y+(sx-a1x)*tyty/sqrt(sqr(sx-a1x)+sqr(sy-a1y)); a2x:=a1x-(sy-a1y)*tyty/sqrt(sqr(sx-a1x)+sqr(sy-a1y)); end else begin a2y:=a1y-(sx-a1x)*tyty/sqrt(sqr(sx-a1x)+sqr(sy-a1y)); a2x:=a1x+(sy-a1y)*tyty/sqrt(sqr(sx-a1x)+sqr(sy-a1y)); end; vav:=_vav; vaa:=_vaa; couleur:=_couleur; epaisseur:=_epaisseur; if ((sxxxmax) or (syyymax) or (a1xxxmax) or (a1yyymax) or (a2xxxmax) or (a2yyymax) or (a2x+sx-a1xxxmax) or (a2y+sy-a1yyymax)) then begin create:=false; exit; end; nombrederayon:=_nombrederayon; maxenfantparrayon:=_maxenfantparrayon; if ((nombrederayon<=1) or(nombrederayon>maxrayonsparondeplane)) then begin create:=false; exit; end; if not (ray[1].create(a1x,a1y,-a1x+sx,-a1y+sy,couleur,epaisseur,vav,vaa,maxenfantparrayon,maxsegment)) then begin create:=false; exit; end; if not(ray[nombrederayon].create(a2x,a2y,-a1x+sx,-a1y+sy,couleur,epaisseur,vav,vaa,maxenfantparrayon,maxsegment)) then begin create:=false; exit; end; if nombrederayon=2 then begin create:=true; modifie:=true; exit; end; create:=true; modifie:=true; for i:=2 to nombrederayon-1 do ray[i].create(a1x+(a2x-a1x)*(i-1)/(nombrederayon-1),a1y+(a2y-a1y)*(i-1)/(nombrederayon-1), -a1x+sx,-a1y+sy,couleur,epaisseur,vav,vaa,maxenfantparrayon,maxsegment); end; procedure fleche.dessine(mc:tmonbitmap); var diag:extended; ra1,ra2:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,self.styletrait,pmcopy,true); if (modemodif and not(modeinfo) and not(modeduplication)) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true); end; if (modeinfo and not(modeduplication)) then begin mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); diag:=sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin)); case ext1 of tffleche: begin mc.trait(a1x,a1y,a1x+taille1/1000*diag*cos(anglepolaire+Pi/4), a1y+taille1/1000*diag*sin(anglepolaire+pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x,a1y,a1x+taille1/1000*diag*cos(anglepolaire-Pi/4), a1y+taille1/1000*diag*sin(anglepolaire-pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; ttrait: begin mc.trait(a1x+taille1/1000*diag/2*cos(anglepolaire-Pi/2), a1y+taille1/1000*diag/2*sin(anglepolaire-Pi/2),a1x+taille1/1000*diag/2*cos(anglepolaire+Pi/2), a1y+taille1/1000*diag/2*sin(anglepolaire+pi/2),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; trond: begin mc.invconvert(ra1,ra2,taille1/1000*diag,yymax-taille1/1000*diag,true); if ra1>ra2 then ra1:=ra2; mc.cercle(a1x,a1y,ra1,self.epaisseur,self.couleur,pmcopy,true); end; tcroix: begin mc.trait(a1x-taille1/1000*diag/2,a1y, a1x+taille1/1000*diag/2,a1y, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x,a1y-taille1/1000*diag/2, a1x,a1y+taille1/1000*diag/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tcroixx: begin mc.trait(a1x-taille1/1000*diag/2*sqrt(2)/2,a1y-taille1/1000*diag/2*sqrt(2)/2, a1x+taille1/1000*diag/2*sqrt(2)/2,a1y+taille1/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x+taille1/1000*diag/2*sqrt(2)/2,a1y-taille1/1000*diag/2*sqrt(2)/2, a1x-taille1/1000*diag/2*sqrt(2)/2,a1y+taille1/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tdisque: begin mc.disque(a1x,a1y,taille1/1000*diag,self.couleur,self.couleur,false,true); end; end; case ext2 of tffleche: begin mc.trait(a2x,a2y,a2x+taille2/1000*diag*cos(anglepolaire+3*Pi/4), a2y+taille2/1000*diag*sin(anglepolaire+3*pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,a2x+taille2/1000*diag*cos(anglepolaire-3*Pi/4), a2y+taille2/1000*diag*sin(anglepolaire-3*pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; ttrait: begin mc.trait(a2x+taille2/1000*diag/2*cos(anglepolaire-Pi/2), a2y+taille2/1000*diag/2*sin(anglepolaire-Pi/2),a2x+taille2/1000*diag/2*cos(anglepolaire+Pi/2), a2y+taille2/1000*diag/2*sin(anglepolaire+pi/2),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; trond: begin mc.invconvert(ra1,ra2,taille2/1000*diag,taille2/1000*diag,true); if ra1>ra2 then ra1:=ra2; mc.cercle(a2x,a2y,ra1,self.epaisseur,self.couleur,pmcopy,true); end; tcroix: begin mc.trait(a2x-taille2/1000*diag/2,a2y, a2x+taille2/1000*diag/2,a2y, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y-taille2/1000*diag/2, a2x,a2y+taille2/1000*diag/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tcroixx: begin mc.trait(a2x-taille2/1000*diag/2*sqrt(2)/2,a2y-taille2/1000*diag/2*sqrt(2)/2, a2x+taille2/1000*diag/2*sqrt(2)/2,a2y+taille2/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x+taille2/1000*diag/2*sqrt(2)/2,a2y-taille2/1000*diag/2*sqrt(2)/2, a2x-taille2/1000*diag/2*sqrt(2)/2,a2y+taille2/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tdisque: begin mc.disque(a2x,a2y,taille2/1000*diag,self.couleur,self.couleur,false,true); end; end; end; procedure fleche.dessinePS(mc:tmonpostscript); var diag:extended; ra1,ra2:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,self.styletrait,pmcopy,true); if (modemodif and not(modeinfo) and not(modeduplication)) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true); end; if (modeinfo and not(modeduplication)) then begin mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); diag:=sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin)); case ext1 of tffleche: begin mc.trait(a1x,a1y,a1x+taille1/1000*diag*cos(anglepolaire+Pi/4), a1y+taille1/1000*diag*sin(anglepolaire+pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x,a1y,a1x+taille1/1000*diag*cos(anglepolaire-Pi/4), a1y+taille1/1000*diag*sin(anglepolaire-pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; ttrait: begin mc.trait(a1x+taille1/1000*diag/2*cos(anglepolaire-Pi/2), a1y+taille1/1000*diag/2*sin(anglepolaire-Pi/2),a1x+taille1/1000*diag/2*cos(anglepolaire+Pi/2), a1y+taille1/1000*diag/2*sin(anglepolaire+pi/2),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; trond: begin mc.invconvert(ra1,ra2,taille1/1000*diag,yymax-taille1/1000*diag,true); if ra1>ra2 then ra1:=ra2; mc.cercle(a1x,a1y,ra1,self.epaisseur,self.couleur,pmcopy,true); end; tcroix: begin mc.trait(a1x-taille1/1000*diag/2,a1y, a1x+taille1/1000*diag/2,a1y, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x,a1y-taille1/1000*diag/2, a1x,a1y+taille1/1000*diag/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tcroixx: begin mc.trait(a1x-taille1/1000*diag/2*sqrt(2)/2,a1y-taille1/1000*diag/2*sqrt(2)/2, a1x+taille1/1000*diag/2*sqrt(2)/2,a1y+taille1/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x+taille1/1000*diag/2*sqrt(2)/2,a1y-taille1/1000*diag/2*sqrt(2)/2, a1x-taille1/1000*diag/2*sqrt(2)/2,a1y+taille1/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tdisque: begin mc.disque(a1x,a1y,taille1/1000*diag,self.couleur,self.couleur,false,true); end; end; case ext2 of tffleche: begin mc.trait(a2x,a2y,a2x+taille2/1000*diag*cos(anglepolaire+3*Pi/4), a2y+taille2/1000*diag*sin(anglepolaire+3*pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,a2x+taille2/1000*diag*cos(anglepolaire-3*Pi/4), a2y+taille2/1000*diag*sin(anglepolaire-3*pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; ttrait: begin mc.trait(a2x+taille2/1000*diag/2*cos(anglepolaire-Pi/2), a2y+taille2/1000*diag/2*sin(anglepolaire-Pi/2),a2x+taille2/1000*diag/2*cos(anglepolaire+Pi/2), a2y+taille2/1000*diag/2*sin(anglepolaire+pi/2),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; trond: begin mc.invconvert(ra1,ra2,taille2/1000*diag,taille2/1000*diag,true); if ra1>ra2 then ra1:=ra2; mc.cercle(a2x,a2y,ra1,self.epaisseur,self.couleur,pmcopy,true); end; tcroix: begin mc.trait(a2x-taille2/1000*diag/2,a2y, a2x+taille2/1000*diag/2,a2y, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y-taille2/1000*diag/2, a2x,a2y+taille2/1000*diag/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tcroixx: begin mc.trait(a2x-taille2/1000*diag/2*sqrt(2)/2,a2y-taille2/1000*diag/2*sqrt(2)/2, a2x+taille2/1000*diag/2*sqrt(2)/2,a2y+taille2/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x+taille2/1000*diag/2*sqrt(2)/2,a2y-taille2/1000*diag/2*sqrt(2)/2, a2x-taille2/1000*diag/2*sqrt(2)/2,a2y+taille2/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tdisque: begin mc.disque(a2x,a2y,taille2/1000*diag,self.couleur,self.couleur,false,true); end; end; end; procedure fleche.imprime(mc:tmyimprimante); var diag:extended; ra1,ra2:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,self.styletrait,pmcopy,true); if (modemodif and not(modeinfo) and not(modeduplication)) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true); end; if (modeinfo and not(modeduplication)) then begin mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); diag:=sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin)); case ext1 of tffleche: begin mc.trait(a1x,a1y,a1x+taille1/1000*diag*cos(anglepolaire+Pi/4), a1y+taille1/1000*diag*sin(anglepolaire+pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x,a1y,a1x+taille1/1000*diag*cos(anglepolaire-Pi/4), a1y+taille1/1000*diag*sin(anglepolaire-pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; ttrait: begin mc.trait(a1x+taille1/1000*diag/2*cos(anglepolaire-Pi/2), a1y+taille1/1000*diag/2*sin(anglepolaire-Pi/2),a1x+taille1/1000*diag/2*cos(anglepolaire+Pi/2), a1y+taille1/1000*diag/2*sin(anglepolaire+pi/2),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; trond: begin mc.invconvert(ra1,ra2,taille1/1000*diag,yymax-taille1/1000*diag,true); if ra1>ra2 then ra1:=ra2; mc.cercle(a1x,a1y,ra1,self.epaisseur,self.couleur,pmcopy,true); end; tcroix: begin mc.trait(a1x-taille1/1000*diag/2,a1y, a1x+taille1/1000*diag/2,a1y, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x,a1y-taille1/1000*diag/2, a1x,a1y+taille1/1000*diag/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tcroixx: begin mc.trait(a1x-taille1/1000*diag/2*sqrt(2)/2,a1y-taille1/1000*diag/2*sqrt(2)/2, a1x+taille1/1000*diag/2*sqrt(2)/2,a1y+taille1/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a1x+taille1/1000*diag/2*sqrt(2)/2,a1y-taille1/1000*diag/2*sqrt(2)/2, a1x-taille1/1000*diag/2*sqrt(2)/2,a1y+taille1/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tdisque: begin mc.disque(a1x,a1y,taille1/1000*diag,self.couleur,self.couleur,false,true); end; end; case ext2 of tffleche: begin mc.trait(a2x,a2y,a2x+taille2/1000*diag*cos(anglepolaire+3*Pi/4), a2y+taille2/1000*diag*sin(anglepolaire+3*pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,a2x+taille2/1000*diag*cos(anglepolaire-3*Pi/4), a2y+taille2/1000*diag*sin(anglepolaire-3*pi/4),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; ttrait: begin mc.trait(a2x+taille2/1000*diag/2*cos(anglepolaire-Pi/2), a2y+taille2/1000*diag/2*sin(anglepolaire-Pi/2),a2x+taille2/1000*diag/2*cos(anglepolaire+Pi/2), a2y+taille2/1000*diag/2*sin(anglepolaire+pi/2),self.epaisseur,self.couleur,pssolid,pmcopy,true); end; trond: begin mc.invconvert(ra1,ra2,taille2/1000*diag,taille2/1000*diag,true); if ra1>ra2 then ra1:=ra2; mc.cercle(a2x,a2y,ra1,self.epaisseur,self.couleur,pmcopy,true); end; tcroix: begin mc.trait(a2x-taille2/1000*diag/2,a2y, a2x+taille2/1000*diag/2,a2y, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y-taille2/1000*diag/2, a2x,a2y+taille2/1000*diag/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tcroixx: begin mc.trait(a2x-taille2/1000*diag/2*sqrt(2)/2,a2y-taille2/1000*diag/2*sqrt(2)/2, a2x+taille2/1000*diag/2*sqrt(2)/2,a2y+taille2/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x+taille2/1000*diag/2*sqrt(2)/2,a2y-taille2/1000*diag/2*sqrt(2)/2, a2x-taille2/1000*diag/2*sqrt(2)/2,a2y+taille2/1000*diag/2*sqrt(2)/2, self.epaisseur,self.couleur,pssolid,pmcopy,true); end; tdisque: begin mc.disque(a2x,a2y,taille2/1000*diag,self.couleur,self.couleur,false,true); end; end; end; procedure miroirplan.dessine(var mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if ((modemodif or modeinfo) and (not(modeduplication))) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,pssolid,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure reseau.dessine(var mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,psdot,pmcopy,true); if ((modemodif or modeinfo) and (not(modeduplication))) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if (self.hachures) and not(self.entransmission) then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,pssolid,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure miroirplan.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if ((modemodif or modeinfo) and (not(modeduplication))) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if (self.hachures) then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,pssolid,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure reseau.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,psdot,pmcopy,true); if ((modemodif or modeinfo) and (not(modeduplication))) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if (self.hachures) and not(self.entransmission) then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,pssolid,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure miroirplan.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if ((modemodif or modeinfo) and (not(modeduplication))) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,pssolid,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure reseau.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,psdot,pmcopy,true); if ((modemodif or modeinfo) and (not(modeduplication))) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if (self.hachures) and not(self.entransmission) then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,pssolid,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure ecran.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure ecran.dessine(mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure ecran.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure angle.dessine(mc:tmonbitmap); var t1,t2,r1,r2,r,agp,ttai:extended; xi,yi:integer; s:string; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(cx,cy,a1x,a1y,1,clblack,pssolid,pmcopy,true); mc.trait(cx,cy,a2x,a2y,1,clblack,pssolid,pmcopy,true); if not (modeduplication) then begin mc.cercle(a1x,a1y,3,1,clblack,pmcopy,true); mc.cercle(a2x,a2y,3,1,clblack,pmcopy,true); mc.cercle(cx,cy,3,1,clblack,pmcopy,true); if modeinfo then mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); if modemodif then begin mc.cercle(a1x,a1y,3,1,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); mc.croixx(dx,dy,3,2,couleurtrans,pmcopy,true) end; if modesuppression then begin mc.cercle(a1x,a1y,3,1,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3,1,couleursuppression,pmcopy,true); end; end else mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); t1:=donneanglepolairedans02pi(a1x-cx,a1y-cy); t2:=donneanglepolairedans02pi(a2x-cx,a2y-cy); if t2t2 then mc.arcdecercle(cx,cy,r,1,t1,t2,clblack,pmcopy,pssolid,true); agp:=(t1+t2)/2; form1.image1.Picture.Bitmap.Canvas.font.Color:=clblack; form1.image1.Picture.Bitmap.Canvas.font.Name:='Arial Narrow'; form1.image1.Picture.Bitmap.Canvas.font.Charset:=DEFAULT_CHARSET; form1.image1.Picture.Bitmap.Canvas.font.size:=10; form1.image1.Picture.Bitmap.Canvas.font.Style:=[]; {mc.trait(cx+r*cos(agp),cy+r*sin(agp),cx+r*cos(agp)+ttai/100/zoomfactor*cos(agp), cy+r*sin(agp)+ttai/100/zoomfactor*sin(agp),1,clblack,pssolid,pmcopy,true); } mc.invconvert(xi,yi,cx+r*cos(agp){+ttai/100/zoomfactor*cos(agp)}, cy+r*sin(agp){+ttai/100/zoomfactor*sin(agp)},true) ; s:=floattostrf((t2-t1)*180/pi,fffixed,5+decimalesangles,decimalesangles)+'°'; if agp<=pi/2 then mc.ecrireI(xi,yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s,form1.image1.Picture.Bitmap.Canvas.font); if ((agp>pi/2) and (agp<=pi)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s,form1.image1.Picture.Bitmap.Canvas.font); if ((agp>pi) and (agp<=3*pi/2)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi,s,form1.image1.Picture.Bitmap.Canvas.font); if agp>3*pi/2 then mc.ecrireI(xi,yi,s,form1.image1.Picture.Bitmap.Canvas.font); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure angle.dessinePS(mc:tmonpostscript); var t1,t2,r1,r2,r,agp,ttai:extended; xi,yi:integer; s:string; old_font:tfont; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(cx,cy,a1x,a1y,1,clblack,pssolid,pmcopy,true); mc.trait(cx,cy,a2x,a2y,1,clblack,pssolid,pmcopy,true); if not (modeduplication) then begin mc.cercle(a1x,a1y,3,1,clblack,pmcopy,true); mc.cercle(a2x,a2y,3,1,clblack,pmcopy,true); mc.cercle(cx,cy,3,1,clblack,pmcopy,true); if modeinfo then mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); if modemodif then begin mc.cercle(a1x,a1y,3,1,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); mc.croixx(dx,dy,3,2,couleurtrans,pmcopy,true) end; if modesuppression then begin mc.cercle(a1x,a1y,3,1,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3,1,couleursuppression,pmcopy,true); end; end else mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); t1:=donneanglepolairedans02pi(a1x-cx,a1y-cy); t2:=donneanglepolairedans02pi(a2x-cx,a2y-cy); if t2t2 then mc.arcdecercle(cx,cy,r,1,t1,t2,clblack,pmcopy,pssolid,true); agp:=(t1+t2)/2; old_font:=ps.font; ps.font.Color:=clblack; ps.font.Name:='Arial Narrow'; ps.font.Charset:=DEFAULT_CHARSET; ps.font.size:=10; ps.font.Style:=[]; {mc.trait(cx+r*cos(agp),cy+r*sin(agp),cx+r*cos(agp)+ttai/100/zoomfactor*cos(agp), cy+r*sin(agp)+ttai/100/zoomfactor*sin(agp),1,clblack,pssolid,pmcopy,true); } mc.invconvert(xi,yi,cx+r*cos(agp){+ttai/100/zoomfactor*cos(agp)}, cy+r*sin(agp){+ttai/100/zoomfactor*sin(agp)},true) ; s:=floattostrf((t2-t1)*180/pi,fffixed,5+decimalesangles,decimalesangles)+'°'; if agp<=pi/2 then mc.ecrireI(xi,yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s,form1.image1.Picture.Bitmap.Canvas.font); if ((agp>pi/2) and (agp<=pi)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s,form1.image1.Picture.Bitmap.Canvas.font); if ((agp>pi) and (agp<=3*pi/2)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi,s,form1.image1.Picture.Bitmap.Canvas.font); if agp>3*pi/2 then mc.ecrireI(xi,yi,s,form1.image1.Picture.Bitmap.Canvas.font); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); ps.font:=old_font; end; procedure angle.imprime(mc:tmyimprimante); var t1,t2,r1,r2,r,agp,ttai:extended; xi,yi:integer; s:string; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(cx,cy,a1x,a1y,1,clblack,pssolid,pmcopy,true); mc.trait(cx,cy,a2x,a2y,1,clblack,pssolid,pmcopy,true); if not (modeduplication) then begin mc.cercle(a1x,a1y,3,1,clblack,pmcopy,true); mc.cercle(a2x,a2y,3,1,clblack,pmcopy,true); mc.cercle(cx,cy,3,1,clblack,pmcopy,true); if modeinfo then mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); if modemodif then begin mc.cercle(a1x,a1y,3,1,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); mc.croixx(dx,dy,3,2,couleurtrans,pmcopy,true) end; if modesuppression then begin mc.cercle(a1x,a1y,3,1,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3,1,couleursuppression,pmcopy,true); end; end else mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); t1:=donneanglepolairedans02pi(a1x-cx,a1y-cy); t2:=donneanglepolairedans02pi(a2x-cx,a2y-cy); if t2t2 then mc.arcdecercle(cx,cy,r,1,t1,t2,clblack,pmcopy,pssolid,true); agp:=(t1+t2)/2; imprimante.canvas.font.Color:=clblack; imprimante.canvas.font.Name:='Arial Narrow'; imprimante.canvas.font.Charset:=DEFAULT_CHARSET; imprimante.canvas.font.size:=10; imprimante.canvas.font.Style:=[]; {mc.trait(cx+r*cos(agp),cy+r*sin(agp),cx+r*cos(agp)+ttai/100/zoomfactor*cos(agp), cy+r*sin(agp)+ttai/100/zoomfactor*sin(agp),1,clblack,pssolid,pmcopy,true); } mc.invconvert(xi,yi,cx+r*cos(agp){+ttai/100/zoomfactor*cos(agp)}, cy+r*sin(agp){+ttai/100/zoomfactor*sin(agp)},true) ; s:=floattostrf((t2-t1)*180/pi,fffixed,5+decimalesangles,decimalesangles)+'°'; if agp<=pi/2 then mc.ecrireI(xi,yi-imprimante.canvas.textheight(s),s,imprimante.canvas.font); if ((agp>pi/2) and (agp<=pi)) then mc.ecrireI(xi-imprimante.canvas.textwidth(s),yi-imprimante.canvas.textheight(s),s,imprimante.canvas.font); if ((agp>pi) and (agp<=3*pi/2)) then mc.ecrireI(xi-imprimante.canvas.textwidth(s),yi,s,imprimante.canvas.font); if agp>3*pi/2 then mc.ecrireI(xi,yi,s,imprimante.canvas.font); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure angle.dessinebis(mc:tmonbitmap); var t1,t2,r1,r2,r,agp,ttai,deltat,signe,t3:extended; xi,yi:integer; s:string; old_font:tfont; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); t1:=donneanglepolairedans02pi(a1x-cx,a1y-cy); t2:=donneanglepolairedans02pi(a2x-cx,a2y-cy); if t2>=t1 then signe:=1 else signe:=-1; if signe=-1 then begin t3:=t1; t1:=t2; t2:=t3; end; deltat:=t2-t1; if deltat>pi then begin t1:=t2; t2:=t1+2*pi-deltat; end; r1:=sqrt(sqr(a1x-cx)+sqr(a1y-cy)); r2:=sqrt(sqr(a2x-cx)+sqr(a2y-cy)); r:=r1; if r2pi/2) and (agp<=pi)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s,form1.image1.Picture.Bitmap.Canvas.font); if ((agp>pi) and (agp<=3*pi/2)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi,s,form1.image1.Picture.Bitmap.Canvas.font); if agp>3*pi/2 then mc.ecrireI(xi,yi,s,form1.image1.Picture.Bitmap.Canvas.font); form1.image1.Picture.Bitmap.Canvas.font:=old_font; end; procedure angle.dessinebisPS(mc:tmonpostscript); var t1,t2,r1,r2,r,agp,ttai,deltat,signe,t3:extended; xi,yi:integer; s:string; old_font:tfont; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); t1:=donneanglepolairedans02pi(a1x-cx,a1y-cy); t2:=donneanglepolairedans02pi(a2x-cx,a2y-cy); if t2>=t1 then signe:=1 else signe:=-1; if signe=-1 then begin t3:=t1; t1:=t2; t2:=t3; end; deltat:=t2-t1; if deltat>pi then begin t1:=t2; t2:=t1+2*pi-deltat; end; r1:=sqrt(sqr(a1x-cx)+sqr(a1y-cy)); r2:=sqrt(sqr(a2x-cx)+sqr(a2y-cy)); r:=r1; if r2pi/2) and (agp<=pi)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s,form1.image1.Picture.Bitmap.Canvas.font); if ((agp>pi) and (agp<=3*pi/2)) then mc.ecrireI(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi,s,form1.image1.Picture.Bitmap.Canvas.font); if agp>3*pi/2 then mc.ecrireI(xi,yi,s,form1.image1.Picture.Bitmap.Canvas.font); ps.Font:=old_font; end; procedure angle.imprimebis(mc:tmyimprimante); var t1,t2,r1,r2,r,agp,ttai,deltat,signe,t3:extended; xi,yi:integer; s:string; old_font:tfont; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); t1:=donneanglepolairedans02pi(a1x-cx,a1y-cy); t2:=donneanglepolairedans02pi(a2x-cx,a2y-cy); if t2>=t1 then signe:=1 else signe:=-1; if signe=-1 then begin t3:=t1; t1:=t2; t2:=t3; end; deltat:=t2-t1; if deltat>pi then begin t1:=t2; t2:=t1+2*pi-deltat; end; r1:=sqrt(sqr(a1x-cx)+sqr(a1y-cy)); r2:=sqrt(sqr(a2x-cx)+sqr(a2y-cy)); r:=r1; if r2pi/2) and (agp<=pi)) then mc.ecrireI(xi-imprimante.canvas.textwidth(s),yi-imprimante.canvas.textheight(s),s,imprimante.canvas.font); if ((agp>pi) and (agp<=3*pi/2)) then mc.ecrireI(xi-imprimante.canvas.textwidth(s),yi,s,imprimante.canvas.font); if agp>3*pi/2 then mc.ecrireI(xi,yi,s,imprimante.canvas.font); imprimante.Canvas.Font:=old_font; end; procedure metre.dessine(mc:tmonbitmap); var agp,ttai:extended; xi,yi:integer; s:string; old_font:tfont; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,1,clblack,pssolid,pmcopy,true); if not(modeduplication) then begin mc.cercle(a1x,a1y,3,1,clblack,pmcopy,true); mc.cercle(a2x,a2y,3,1,clblack,pmcopy,true); if modeinfo then mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); if modemodif then begin mc.cercle(a1x,a1y,3,1,couleurpoignees,pmcopy,true); mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3, 2,couleurtrans,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modesuppression then begin mc.cercle(a1x,a1y,3,1,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleursuppression,pmcopy,true); end; end; if modeduplication then begin mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); end; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); agp:=donneanglepolairedans02pi(a2x-a1x,a2y-a1y); {mc.trait((a1x+a2x)/2,(a1y+a2y)/2,(a1x+a2x)/2+ttai/100/zoomfactor*cos(agp+pi/2), (a1y+a2y)/2+ttai/100/zoomfactor*sin(agp+pi/2),1,clblack,pssolid,pmcopy,true); } mc.invconvert(xi,yi,(a1x+a2x)/2{+ttai/100/zoomfactor*cos(agp+pi/2)}, (a1y+a2y)/2{+ttai/100/zoomfactor*sin(agp+pi/2)},true); old_font:=form1.Font; form1.image1.Picture.Bitmap.Canvas.font.Color:=clblack; form1.image1.Picture.Bitmap.Canvas.font.Name:='Arial Narrow'; form1.image1.Picture.Bitmap.Canvas.font.Charset:=DEFAULT_CHARSET; form1.image1.Picture.Bitmap.Canvas.font.size:=10; form1.image1.Picture.Bitmap.Canvas.font.Style:=[]; s:=floattostrf(sqrt(sqr(a2x-a1x)+sqr(a2y-a1y)),fffixed,4 +trunc(ln(zoomfactor)/ln(10)),trunc(ln(zoomfactor)/ln(10)))+' '+unitelongueur; if (abs(agp)<1e-10) or (abs(agp-2*pi)<1e-10) then form1.image1.Picture.Bitmap.Canvas.TextOut(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s) else if (abs(agp-pi/2)<1e-10) then form1.image1.Picture.Bitmap.Canvas.TextOut(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s), yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s) else if (abs(agp-pi)<1e-10) then form1.image1.Picture.Bitmap.Canvas.TextOut(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi,s) else if (abs(agp-2*pi/2)<1e-10) then form1.image1.Picture.Bitmap.Canvas.TextOut(xi,yi,s) else begin if agp+pi/2>4*pi/2 then form1.image1.Picture.Bitmap.Canvas.TextOut(xi,yi-form1.image1.Picture.Bitmap.Canvas.textheight(s),s); if ((agp+pi/2>pi/2) and (agp+pi/2pi) and (agp+pi/2<3*pi/2)) then form1.image1.Picture.Bitmap.Canvas.TextOut(xi-form1.image1.Picture.Bitmap.Canvas.textwidth(s),yi,s); if ((agp+pi/2>3*pi/2) and (agp+pi/2<4*pi/2)) then form1.image1.Picture.Bitmap.Canvas.TextOut(xi,yi,s); end; form1.Font:=old_font; end; procedure metre.dessinePS(mc:tmonpostscript); var agp,ttai:extended; xi,yi:integer; s:string; old_font:tfont; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,1,clblack,pssolid,pmcopy,true); if not(modeduplication) then begin mc.cercle(a1x,a1y,3,1,clblack,pmcopy,true); mc.cercle(a2x,a2y,3,1,clblack,pmcopy,true); if modeinfo then mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); if modemodif then begin mc.cercle(a1x,a1y,3,1,couleurpoignees,pmcopy,true); mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3, 2,couleurtrans,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modesuppression then begin mc.cercle(a1x,a1y,3,1,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleursuppression,pmcopy,true); end; end; if modeduplication then begin mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); end; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); agp:=donneanglepolairedans02pi(a2x-a1x,a2y-a1y); {mc.trait((a1x+a2x)/2,(a1y+a2y)/2,(a1x+a2x)/2+ttai/100/zoomfactor*cos(agp+pi/2), (a1y+a2y)/2+ttai/100/zoomfactor*sin(agp+pi/2),1,clblack,pssolid,pmcopy,true); } mc.invconvert(xi,yi,(a1x+a2x)/2{+ttai/100/zoomfactor*cos(agp+pi/2)}, (a1y+a2y)/2{+ttai/100/zoomfactor*sin(agp+pi/2)},true); old_font:=ps.Font; ps.font.Color:=clblack; ps.font.Name:='Arial Narrow'; ps.font.Charset:=DEFAULT_CHARSET; ps.font.size:=10; ps.font.Style:=[]; s:=floattostrf(sqrt(sqr(a2x-a1x)+sqr(a2y-a1y)),fffixed,4 +trunc(ln(zoomfactor)/ln(10)),trunc(ln(zoomfactor)/ln(10)))+' '+unitelongueur; if (abs(agp)<1e-10) or (abs(agp-2*pi)<1e-10) then ps.TextOut(xi-ps.textwidth(s),yi-ps.textheight(s),s) else if (abs(agp-pi/2)<1e-10) then ps.TextOut(xi-ps.textwidth(s), yi-ps.textheight(s),s) else if (abs(agp-pi)<1e-10) then ps.TextOut(xi-ps.textwidth(s),yi,s) else if (abs(agp-2*pi/2)<1e-10) then ps.TextOut(xi,yi,s) else begin if agp+pi/2>4*pi/2 then ps.TextOut(xi,yi-ps.textheight(s),s); if ((agp+pi/2>pi/2) and (agp+pi/2pi) and (agp+pi/2<3*pi/2)) then ps.TextOut(xi-ps.textwidth(s),yi,s); if ((agp+pi/2>3*pi/2) and (agp+pi/2<4*pi/2)) then ps.TextOut(xi,yi,s); end; ps.Font:=old_font; end; procedure metre.imprime(mc:tmyimprimante); var agp,ttai:extended; xi,yi:integer; old_font:tfont; s:string; begin old_font:=imprimante.Canvas.Font; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,1,clblack,pssolid,pmcopy,true); if not(modeduplication) then begin mc.cercle(a1x,a1y,3,1,clblack,pmcopy,true); mc.cercle(a2x,a2y,3,1,clblack,pmcopy,true); if modeinfo then mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); if modemodif then begin mc.cercle(a1x,a1y,3,1,couleurpoignees,pmcopy,true); mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3, 2,couleurtrans,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modesuppression then begin mc.cercle(a1x,a1y,3,1,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3,1,couleursuppression,pmcopy,true); end; end; if modeduplication then begin mc.cercle(cx,cy,3,1,couleurpoignees,pmcopy,true); end; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); agp:=donneanglepolairedans02pi(a2x-a1x,a2y-a1y); {mc.trait((a1x+a2x)/2,(a1y+a2y)/2,(a1x+a2x)/2+ttai/100/zoomfactor*cos(agp+pi/2), (a1y+a2y)/2+ttai/100/zoomfactor*sin(agp+pi/2),1,clblack,pssolid,pmcopy,true); } mc.invconvert(xi,yi,(a1x+a2x)/2{+ttai/100/zoomfactor*cos(agp+pi/2)}, (a1y+a2y)/2{+ttai/100/zoomfactor*sin(agp+pi/2)},true); imprimante.canvas.font.Color:=clblack; imprimante.canvas.font.Name:='Arial Narrow'; imprimante.canvas.font.Charset:=DEFAULT_CHARSET; imprimante.canvas.font.size:=10; imprimante.canvas.font.Style:=[]; s:=floattostrf(sqrt(sqr(a2x-a1x)+sqr(a2y-a1y)),fffixed,4 +trunc(ln(zoomfactor)/ln(10)),trunc(ln(zoomfactor)/ln(10)))+' '+unitelongueur; if (abs(agp)<1e-10) or (abs(agp-2*pi)<1e-10) then imprimante.canvas.TextOut(xi-imprimante.canvas.textwidth(s),yi-imprimante.canvas.textheight(s),s) else if (abs(agp-pi/2)<1e-10) then imprimante.canvas.TextOut(xi-imprimante.canvas.textwidth(s), yi-imprimante.canvas.textheight(s),s) else if (abs(agp-pi)<1e-10) then imprimante.canvas.TextOut(xi-imprimante.canvas.textwidth(s),yi,s) else if (abs(agp-2*pi/2)<1e-10) then imprimante.canvas.TextOut(xi,yi,s) else begin if agp+pi/2>4*pi/2 then imprimante.canvas.TextOut(xi,yi-imprimante.canvas.textheight(s),s); if ((agp+pi/2>pi/2) and (agp+pi/2pi) and (agp+pi/2<3*pi/2)) then imprimante.canvas.TextOut(xi-imprimante.canvas.textwidth(s),yi,s); if ((agp+pi/2>3*pi/2) and (agp+pi/2<4*pi/2)) then imprimante.canvas.TextOut(xi,yi,s); end; imprimante.canvas.Font:=old_font; end; procedure lsr.dessine(mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; procedure lsr.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; procedure lsr.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscopa.dessine(mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true) else begin mc.trait(a1x,a1y,t1x,t1y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,t2x,t2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(t1x,t1y,t2x,t2y,self.epaisseur,self.couleur,psdot,pmcopy,true) end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(sx,sy,fx,fy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(fx,fy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(fx,fy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscopa.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true) else begin mc.trait(a1x,a1y,t1x,t1y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,t2x,t2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(t1x,t1y,t2x,t2y,self.epaisseur,self.couleur,psdot,pmcopy,true) end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(sx,sy,fx,fy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(fx,fy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(fx,fy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscopa.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true) else begin mc.trait(a1x,a1y,t1x,t1y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,t2x,t2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(t1x,t1y,t2x,t2y,self.epaisseur,self.couleur,psdot,pmcopy,true) end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(sx,sy,fx,fy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(fx,fy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(fx,fy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure lmc.dessine(mc:tmonbitmap); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(ox,oy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f1x,f1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f2x,f2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-3*Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(f1x,f1y,f2x,f2y,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(f1x,f1y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); mc.cercle(f2x,f2y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) then begin if modemodif then mc.croixx(f1x,f1y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f1x,f1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(f2x,f2y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f2x,f2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure lmc.dessinePS(mc:tmonpostscript); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(ox,oy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f1x,f1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f2x,f2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-3*Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(f1x,f1y,f2x,f2y,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(f1x,f1y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); mc.cercle(f2x,f2y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) then begin if modemodif then mc.croixx(f1x,f1y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f1x,f1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(f2x,f2y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f2x,f2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure lmc.imprime(mc:tmyimprimante); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(ox,oy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f1x,f1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f2x,f2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-3*Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(f1x,f1y,f2x,f2y,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(f1x,f1y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); mc.cercle(f2x,f2y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) then begin if modemodif then mc.croixx(f1x,f1y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f1x,f1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(f2x,f2y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f2x,f2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure lmd.dessine(mc:tmonbitmap); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(ox,oy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f1x,f1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f2x,f2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+5*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+5*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(f1x,f1y,f2x,f2y,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(f1x,f1y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); mc.cercle(f2x,f2y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) then begin if modemodif then mc.croixx(f1x,f1y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f1x,f1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(f2x,f2y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f2x,f2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure lmd.dessinePS(mc:tmonpostscript); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(ox,oy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f1x,f1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f2x,f2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+5*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+5*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(f1x,f1y,f2x,f2y,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(f1x,f1y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); mc.cercle(f2x,f2y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) then begin if modemodif then mc.croixx(f1x,f1y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f1x,f1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(f2x,f2y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f2x,f2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure lmd.imprime(mc:tmyimprimante); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(ox,oy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modegroupement then mc.croixx(ox,oy,3, 2,clpurple,pmcopy,true); if (modesuppression) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f1x,f1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(f2x,f2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(ox,oy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+3*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+3*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+5*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+5*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire+Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire+Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(f1x,f1y,f2x,f2y,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(f1x,f1y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); mc.cercle(f2x,f2y,2*self.epaisseur, self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) then begin if modemodif then mc.croixx(f1x,f1y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f1x,f1y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(f2x,f2y,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(f2x,f2y,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure mscepa.dessine(mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true) else begin mc.trait(a1x,a1y,t1x,t1y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,t2x,t2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(t1x,t1y,t2x,t2y,self.epaisseur,self.couleur,psdot,pmcopy,true) end; if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+5*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+5*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(sx,sy,fx,fy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(fx,fy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(fx,fy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscepa.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true) else begin mc.trait(a1x,a1y,t1x,t1y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,t2x,t2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(t1x,t1y,t2x,t2y,self.epaisseur,self.couleur,psdot,pmcopy,true) end; if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+5*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+5*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(sx,sy,fx,fy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(fx,fy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(fx,fy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscepa.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.trait(a1x,a1y,a2x,a2y,self.epaisseur,self.couleur,pssolid,pmcopy,true) else begin mc.trait(a1x,a1y,t1x,t1y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(a2x,a2y,t2x,t2y,self.epaisseur,self.couleur,pssolid,pmcopy,true); mc.trait(t1x,t1y,t2x,t2y,self.epaisseur,self.couleur,psdot,pmcopy,true) end; if not(modeduplication) then if (modemodif or modeinfo) then begin if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(taille/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do mc.trait(a1x+i/(nbtrait+1)*(a2x-a1x),a1y+i/(nbtrait+1)*(a2y-a1y), a1x+i/ (nbtrait+1)*(a2x-a1x)+ttai/100/zoomfactor* cos(anglepolaire-Pi/2),a1y+i/(nbtrait+1)*(a2y-a1y)+ttai/100/zoomfactor* sin(anglepolaire-Pi/2), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; mc.trait(a1x,a1y, a1x+ttai/100/zoomfactor* cos(anglepolaire+5*Pi/4),a1y+ttai/100/zoomfactor* sin(anglepolaire+5*Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); mc.trait(a2x,a2y, a2x+ttai/100/zoomfactor* cos(anglepolaire-Pi/4),a2y+ttai/100/zoomfactor* sin(anglepolaire-Pi/4), self.epaisseur,self.couleur,psSolid,pmcopy,true); if self.axefocal then begin mc.trait(sx,sy,fx,fy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(fx,fy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(fx,fy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(fx,fy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscore.dessine(mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta2,self.couleur,pmcopy,pssolid,true) else begin mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta1p,self.couleur,pmcopy,pssolid,true); mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta2p,theta2,self.couleur,pmcopy,pssolid,true); end; if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(circonference/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do if (not(trou) or (trou and ((theta1+ i/(nbtrait+1)*(theta2-theta1)<=theta1p) or (theta1+ i/(nbtrait+1)*(theta2-theta1)>=theta2p)))) then mc.trait(cx+(rayoncourbure)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), cx+(rayoncourbure+ttai/100/zoomfactor)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure+ttai/100/zoomfactor)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; if self.axefocal then begin mc.trait(sx,sy,cx,cy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(cx,cy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscore.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta2,self.couleur,pmcopy,pssolid,true) else begin mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta1p,self.couleur,pmcopy,pssolid,true); mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta2p,theta2,self.couleur,pmcopy,pssolid,true); end; if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(circonference/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do if (not(trou) or (trou and ((theta1+ i/(nbtrait+1)*(theta2-theta1)<=theta1p) or (theta1+ i/(nbtrait+1)*(theta2-theta1)>=theta2p)))) then mc.trait(cx+(rayoncourbure)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), cx+(rayoncourbure+ttai/100/zoomfactor)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure+ttai/100/zoomfactor)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; if self.axefocal then begin mc.trait(sx,sy,cx,cy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(cx,cy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscore.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta2,self.couleur,pmcopy,pssolid,true) else begin mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta1p,self.couleur,pmcopy,pssolid,true); mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta2p,theta2,self.couleur,pmcopy,pssolid,true); end; if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(circonference/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do if (not(trou) or (trou and ((theta1+ i/(nbtrait+1)*(theta2-theta1)<=theta1p) or (theta1+ i/(nbtrait+1)*(theta2-theta1)>=theta2p)))) then mc.trait(cx+(rayoncourbure)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), cx+(rayoncourbure+ttai/100/zoomfactor)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure+ttai/100/zoomfactor)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; if self.axefocal then begin mc.trait(sx,sy,cx,cy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(cx,cy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscere.dessine(mc:tmonbitmap); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta2,self.couleur,pmcopy,pssolid,true) else begin mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta1p,self.couleur,pmcopy,pssolid,true); mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta2p,theta2,self.couleur,pmcopy,pssolid,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(circonference/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do if (not(trou) or (trou and ((theta1+ i/(nbtrait+1)*(theta2-theta1)<=theta1p) or (theta1+ i/(nbtrait+1)*(theta2-theta1)>=theta2p)))) then mc.trait(cx+(rayoncourbure)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), cx+(rayoncourbure-ttai/100/zoomfactor)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure-ttai/100/zoomfactor)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; if self.axefocal then begin mc.trait(sx,sy,cx,cy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(cx,cy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscere.dessinePS(mc:tmonpostscript); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta2,self.couleur,pmcopy,pssolid,true) else begin mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta1p,self.couleur,pmcopy,pssolid,true); mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta2p,theta2,self.couleur,pmcopy,pssolid,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(circonference/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do if (not(trou) or (trou and ((theta1+ i/(nbtrait+1)*(theta2-theta1)<=theta1p) or (theta1+ i/(nbtrait+1)*(theta2-theta1)>=theta2p)))) then mc.trait(cx+(rayoncourbure)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), cx+(rayoncourbure-ttai/100/zoomfactor)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure-ttai/100/zoomfactor)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; if self.axefocal then begin mc.trait(sx,sy,cx,cy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(cx,cy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure mscere.imprime(mc:tmyimprimante); var i:integer; ttai:extended; nbtrait:integer; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(trou) then mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta2,self.couleur,pmcopy,pssolid,true) else begin mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta1,theta1p,self.couleur,pmcopy,pssolid,true); mc.arcdecercle(cx,cy,rayoncourbure,self.epaisseur,theta2p,theta2,self.couleur,pmcopy,pssolid,true); end; if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(sx,sy,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleursuppression,pmcopy,true); end; if self.hachures then begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); nbtrait:=(trunc(circonference/(ttai/100))+1)*zoomfactor; for i:=1 to nbtrait do if (not(trou) or (trou and ((theta1+ i/(nbtrait+1)*(theta2-theta1)<=theta1p) or (theta1+ i/(nbtrait+1)*(theta2-theta1)>=theta2p)))) then mc.trait(cx+(rayoncourbure)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), cx+(rayoncourbure-ttai/100/zoomfactor)*cos(theta1+ i/(nbtrait+1)*(theta2-theta1)),cy+(rayoncourbure-ttai/100/zoomfactor)*sin(theta1+ i/(nbtrait+1)*(theta2-theta1)), self.epaisseur,self.couleur,psSolid,pmcopy,true); end; if self.axefocal then begin mc.trait(sx,sy,cx,cy,self.epaisseur,self.couleuraxe,psDashDot,pmcopy,true); mc.cercle(cx,cy,2*self.epaisseur,self.epaisseur,self.couleuraxe,pmcopy,true); end; if (modemodif or modeinfo) and not(modeduplication) then if modemodif then mc.croixx(cx,cy,3*self.epaisseur, self.epaisseur*2,claqua,pmcopy,true) else mc.cercle(cx,cy,3*self.epaisseur,self.epaisseur,couleurpoignees,pmcopy,true); end; procedure polyhedre.dessine(mc:tmonbitmap); var lx,ly:array[1..maxsommet+1] of extended; i,j:integer; begin for i:=1 to nombresommet do begin lx[i]:=messommets[i].ax; ly[i]:=messommets[i].ay; end; mc.tracepolygone(nombresommet,lx,ly,couleurbord,couleurfond,false,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleurpoignees,pmcopy,true); if (modemodif or modeduplication) then for i:=1 to nombresommet do if modemodif then mc.croixx((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 2,couleurtrans,pmcopy,true) else mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleursuppression,pmcopy,true); for i:=1 to nombresommet do mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(xiso,yiso,3, 2,clpurple,pmcopy,true); end; procedure polyhedre.dessinePS(mc:tmonpostscript); var lx,ly:array[1..maxsommet+1] of extended; i,j:integer; begin for i:=1 to nombresommet do begin lx[i]:=messommets[i].ax; ly[i]:=messommets[i].ay; end; mc.tracepolygone(nombresommet,lx,ly,couleurbord,couleurfond,false,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleurpoignees,pmcopy,true); if (modemodif or modeduplication) then for i:=1 to nombresommet do if modemodif then mc.croixx((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 2,couleurtrans,pmcopy,true) else mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleursuppression,pmcopy,true); for i:=1 to nombresommet do mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(xiso,yiso,3, 2,clpurple,pmcopy,true); end; procedure polyhedre.imprime(mc:tmyimprimante); var lx,ly:array[1..maxsommet+1] of extended; i,j:integer; begin for i:=1 to nombresommet do begin lx[i]:=messommets[i].ax; ly[i]:=messommets[i].ay; end; mc.tracepolygone(nombresommet,lx,ly,couleurbord,couleurfond,false,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleurpoignees,pmcopy,true); if (modemodif or modeduplication) then for i:=1 to nombresommet do if modemodif then mc.croixx((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 2,couleurtrans,pmcopy,true) else mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleursuppression,pmcopy,true); for i:=1 to nombresommet do mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(xiso,yiso,3, 2,clpurple,pmcopy,true); end; procedure prisme.dessine(mc:tmonbitmap); var lx,ly:array[1..maxsommet+1] of extended; i,j:integer; begin for i:=1 to nombresommet do begin lx[i]:=messommets[i].ax; ly[i]:=messommets[i].ay; end; mc.tracepolygone(nombresommet,lx,ly,couleurbord,couleurfond,false,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleurpoignees,pmcopy,true); if (modemodif or modeduplication) then for i:=1 to nombresommet do if modemodif then mc.croixx(gx,gy,3, 2,couleurtrans,pmcopy,true) else mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleursuppression,pmcopy,true); for i:=1 to nombresommet do mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(xiso,yiso,3, 2,clpurple,pmcopy,true); end; procedure prisme.dessinePS(mc:tmonpostscript); var lx,ly:array[1..maxsommet+1] of extended; i,j:integer; begin for i:=1 to nombresommet do begin lx[i]:=messommets[i].ax; ly[i]:=messommets[i].ay; end; mc.tracepolygone(nombresommet,lx,ly,couleurbord,couleurfond,false,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleurpoignees,pmcopy,true); if (modemodif or modeduplication) then for i:=1 to nombresommet do if modemodif then mc.croixx(gx,gy,3, 2,couleurtrans,pmcopy,true) else mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleursuppression,pmcopy,true); for i:=1 to nombresommet do mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(xiso,yiso,3, 2,clpurple,pmcopy,true); end; procedure prisme.imprime(mc:tmyimprimante); var lx,ly:array[1..maxsommet+1] of extended; i,j:integer; begin for i:=1 to nombresommet do begin lx[i]:=messommets[i].ax; ly[i]:=messommets[i].ay; end; mc.tracepolygone(nombresommet,lx,ly,couleurbord,couleurfond,false,pmcopy,true); if ((modeinfo or modemodif) and not(modeduplication)) then for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleurpoignees,pmcopy,true); if (modemodif or modeduplication) then for i:=1 to nombresommet do if modemodif then mc.croixx(gx,gy,3, 2,couleurtrans,pmcopy,true) else mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin for i:=1 to nombresommet do mc.cercle(messommets[i].ax,messommets[i].ay,3, 1,couleursuppression,pmcopy,true); for i:=1 to nombresommet do mc.cercle((messommets[i].ax+messommets[i+1].ax)/2, (messommets[i].ay+messommets[i+1].ay)/2,3, 1,couleursuppression,pmcopy,true); end; if modegroupement then mc.croixx(xiso,yiso,3, 2,clpurple,pmcopy,true); end; procedure rayon.dessine(mc:tmonbitmap); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure rayon.dessinePS(mc:tmonpostscript); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure rayon.imprime(mc:tmyimprimante); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if not(modeduplication) then if (modemodif or modeinfo) then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); mc.cercle(ax+kx/2,ay+ky/2,3*self.epaisseur, self.epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); end; procedure DessineTousLesSegments(mc:tmonbitmap); var i:integer; ttai,xm,ym,nx,ny:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if nombretotalsegment=0 then exit; if nombrenormale>0 then for i:=1 to nombrenormale do mc.trait(listenormale[-1+i].a1x,listenormale[-1+i].a1y,listenormale[-1+i].a2x,listenormale[-1+i].a2y, listenormale[-1+i].epaisseur,listenormale[-1+i].couleur,psdashdot,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); for i:=1 to nombretotalsegment do if not (fantomespresents and fantomes[i]) then begin mc.trait(listesegment[-1+i].a1x,listesegment[-1+i].a1y,listesegment[-1+i].a2x,listesegment[-1+i].a2y,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,pssolid,pmcopy,true); if montrernumerossegments then begin form1.image1.Picture.Bitmap.Canvas.font.Color:=clblack; form1.image1.Picture.Bitmap.Canvas.font.Name:='Arial Narrow'; form1.image1.Picture.Bitmap.Canvas.font.Charset:=DEFAULT_CHARSET; form1.image1.Picture.Bitmap.Canvas.font.size:=10; form1.image1.Picture.Bitmap.Canvas.font.Style:=[]; mc.ecrire((listesegment[-1+i].a1x+listesegment[-1+i].a2x)/2,(listesegment[-1+i].a1y+listesegment[-1+i].a2y)/2,inttostr(i),true,policedefaut); end; mc.trait(listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000, listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000+cos(listesegment[-1+i].ap+3*Pi/4) *ttai/1000/zoomfactor*tailleempennage, listesegment[-1+i].a1y+(listesegment[-1+i].a2y-listesegment[-1+i].a1y)*positionempennage/1000+sin(listesegment[-1+i].ap+3*Pi/4)*ttai/1000/zoomfactor*tailleempennage,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur, pssolid,pmcopy,true); mc.trait(listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000, listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000+cos(listesegment[-1+i].ap-3*Pi/4) *ttai/1000/zoomfactor*tailleempennage, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000+sin(listesegment[-1+i].ap-3*Pi/4)*ttai/1000/zoomfactor*tailleempennage,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur, pssolid,pmcopy,true); if listesegment[-1+i].virtuelarriere then begin nx:=listesegment[-1+i].a1x-listesegment[-1+i].a2x; ny:=listesegment[-1+i].a1y-listesegment[-1+i].a2y; if nx=0 then if ny>0 then begin xm:=listesegment[-1+i].a2x; ym:=yymax; end else begin xm:=listesegment[-1+i].a2x; ym:=yymin; end; if ((ny=0) and (nx<>0)) then if nx>0 then begin xm:=xxmax; ym:=listesegment[-1+i].a2y; end else begin xm:=xxmin; ym:=listesegment[-1+i].a2y; end; if ((ny<>0) and (nx<>0)) then if ( (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx<0)) then begin ym:=listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx; xm:=xxmin; end else if ( (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx>0)) then begin ym:=listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx; xm:=xxmax; end else if ( (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny<0)) then begin xm:=listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny; ym:=yymin; end else if ( (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny>0)) then begin xm:=listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny; ym:=yymax; end; mc.trait(listesegment[-1+i].a1x,listesegment[-1+i].a1y,xm,ym,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,psdot,pmcopy,true); end; if listesegment[-1+i].virtuelavant then begin nx:=-listesegment[-1+i].a1x+listesegment[-1+i].a2x; ny:=-listesegment[-1+i].a1y+listesegment[-1+i].a2y; if nx=0 then if ny>0 then begin xm:=listesegment[-1+i].a2x; ym:=yymax; end else begin xm:=listesegment[-1+i].a2x; ym:=yymin; end; if ((ny=0) and (nx<>0)) then if nx>0 then begin xm:=xxmax; ym:=listesegment[-1+i].a2y; end else begin xm:=xxmin; ym:=listesegment[-1+i].a2y; end; if ((ny<>0) and (nx<>0)) then if ( (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx<0)) then begin ym:=listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx; xm:=xxmin; end else if ( (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx>0)) then begin ym:=listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx; xm:=xxmax; end else if ( (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny<0)) then begin xm:=listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny; ym:=yymin; end else if ( (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny>0)) then begin xm:=listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny; ym:=yymax; end; mc.trait(listesegment[-1+i].a2x,listesegment[-1+i].a2y,xm,ym,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,psdot,pmcopy,true); end; end; end; procedure DessineTousLesSegmentsPS(mc:tmonpostscript); var i:integer; old_font:tfont; ttai,xm,ym,nx,ny:extended; begin old_font:=ps.font; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if nombretotalsegment=0 then exit; if nombrenormale>0 then for i:=1 to nombrenormale do mc.trait(listenormale[-1+i].a1x,listenormale[-1+i].a1y,listenormale[-1+i].a2x,listenormale[-1+i].a2y, listenormale[-1+i].epaisseur,listenormale[-1+i].couleur,psdashdot,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); for i:=1 to nombretotalsegment do if not (fantomespresents and fantomes[i]) then begin mc.trait(listesegment[-1+i].a1x,listesegment[-1+i].a1y,listesegment[-1+i].a2x,listesegment[-1+i].a2y,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,pssolid,pmcopy,true); if montrernumerossegments then begin ps.font.Color:=clblack; ps.font.Name:='Arial Narrow'; ps.font.Charset:=DEFAULT_CHARSET; ps.font.size:=10; ps.font.Style:=[]; mc.ecrire((listesegment[-1+i].a1x+listesegment[-1+i].a2x)/2,(listesegment[-1+i].a1y+listesegment[-1+i].a2y)/2,inttostr(i),true,policedefaut); end; mc.trait(listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000, listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000+cos(listesegment[-1+i].ap+3*Pi/4) *ttai/1000/zoomfactor*tailleempennage, listesegment[-1+i].a1y+(listesegment[-1+i].a2y-listesegment[-1+i].a1y)*positionempennage/1000+sin(listesegment[-1+i].ap+3*Pi/4)*ttai/1000/zoomfactor*tailleempennage,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur, pssolid,pmcopy,true); mc.trait(listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000, listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000+cos(listesegment[-1+i].ap-3*Pi/4) *ttai/1000/zoomfactor*tailleempennage, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000+sin(listesegment[-1+i].ap-3*Pi/4)*ttai/1000/zoomfactor*tailleempennage,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur, pssolid,pmcopy,true); if listesegment[-1+i].virtuelarriere then begin nx:=listesegment[-1+i].a1x-listesegment[-1+i].a2x; ny:=listesegment[-1+i].a1y-listesegment[-1+i].a2y; if nx=0 then if ny>0 then begin xm:=listesegment[-1+i].a2x; ym:=yymax; end else begin xm:=listesegment[-1+i].a2x; ym:=yymin; end; if ((ny=0) and (nx<>0)) then if nx>0 then begin xm:=xxmax; ym:=listesegment[-1+i].a2y; end else begin xm:=xxmin; ym:=listesegment[-1+i].a2y; end; if ((ny<>0) and (nx<>0)) then if ( (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx<0)) then begin ym:=listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx; xm:=xxmin; end else if ( (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx>0)) then begin ym:=listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx; xm:=xxmax; end else if ( (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny<0)) then begin xm:=listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny; ym:=yymin; end else if ( (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny>0)) then begin xm:=listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny; ym:=yymax; end; mc.trait(listesegment[-1+i].a1x,listesegment[-1+i].a1y,xm,ym,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,psdot,pmcopy,true); end; if listesegment[-1+i].virtuelavant then begin nx:=-listesegment[-1+i].a1x+listesegment[-1+i].a2x; ny:=-listesegment[-1+i].a1y+listesegment[-1+i].a2y; if nx=0 then if ny>0 then begin xm:=listesegment[-1+i].a2x; ym:=yymax; end else begin xm:=listesegment[-1+i].a2x; ym:=yymin; end; if ((ny=0) and (nx<>0)) then if nx>0 then begin xm:=xxmax; ym:=listesegment[-1+i].a2y; end else begin xm:=xxmin; ym:=listesegment[-1+i].a2y; end; if ((ny<>0) and (nx<>0)) then if ( (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx<0)) then begin ym:=listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx; xm:=xxmin; end else if ( (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx>0)) then begin ym:=listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx; xm:=xxmax; end else if ( (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny<0)) then begin xm:=listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny; ym:=yymin; end else if ( (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny>0)) then begin xm:=listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny; ym:=yymax; end; mc.trait(listesegment[-1+i].a2x,listesegment[-1+i].a2y,xm,ym,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,psdot,pmcopy,true); end; end; ps.Font:=old_font; end; procedure ImprimeTousLesSegments(mc:tmyimprimante); var i:integer; ttai,xm,ym,nx,ny:extended; old_font:tfont; begin old_font:=imprimante.canvas.font; ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if nombretotalsegment=0 then exit; if nombrenormale>0 then for i:=1 to nombrenormale do mc.trait(listenormale[-1+i].a1x,listenormale[-1+i].a1y,listenormale[-1+i].a2x,listenormale[-1+i].a2y, listenormale[-1+i].epaisseur,listenormale[-1+i].couleur,psdashdot,pmcopy,true); ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); for i:=1 to nombretotalsegment do if not (fantomespresents and fantomes[i]) then begin mc.trait(listesegment[-1+i].a1x,listesegment[-1+i].a1y,listesegment[-1+i].a2x,listesegment[-1+i].a2y,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,pssolid,pmcopy,true); if montrernumerossegments then begin imprimante.canvas.font.Color:=clblack; imprimante.canvas.font.Name:='Arial Narrow'; imprimante.canvas.font.Charset:=DEFAULT_CHARSET; imprimante.canvas.font.size:=10; imprimante.canvas.font.Style:=[]; mc.ecrire((listesegment[-1+i].a1x+listesegment[-1+i].a2x)/2,(listesegment[-1+i].a1y+listesegment[-1+i].a2y)/2,inttostr(i),true,policedefaut); end; mc.trait(listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000, listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000+cos(listesegment[-1+i].ap+3*Pi/4) *ttai/1000/zoomfactor*tailleempennage, listesegment[-1+i].a1y+(listesegment[-1+i].a2y-listesegment[-1+i].a1y)*positionempennage/1000+sin(listesegment[-1+i].ap+3*Pi/4)*ttai/1000/zoomfactor*tailleempennage,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur, pssolid,pmcopy,true); mc.trait(listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000, listesegment[-1+i].a1x+(listesegment[-1+i].a2x-listesegment[-1+i].a1x)*positionempennage/1000+cos(listesegment[-1+i].ap-3*Pi/4) *ttai/1000/zoomfactor*tailleempennage, listesegment[-1+i].a1y+(listesegment[-1+i].a2y- listesegment[-1+i].a1y)*positionempennage/1000+sin(listesegment[-1+i].ap-3*Pi/4)*ttai/1000/zoomfactor*tailleempennage,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur, pssolid,pmcopy,true); if listesegment[-1+i].virtuelarriere then begin nx:=listesegment[-1+i].a1x-listesegment[-1+i].a2x; ny:=listesegment[-1+i].a1y-listesegment[-1+i].a2y; if nx=0 then if ny>0 then begin xm:=listesegment[-1+i].a2x; ym:=yymax; end else begin xm:=listesegment[-1+i].a2x; ym:=yymin; end; if ((ny=0) and (nx<>0)) then if nx>0 then begin xm:=xxmax; ym:=listesegment[-1+i].a2y; end else begin xm:=xxmin; ym:=listesegment[-1+i].a2y; end; if ((ny<>0) and (nx<>0)) then if ( (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx<0)) then begin ym:=listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx; xm:=xxmin; end else if ( (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx>0)) then begin ym:=listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx; xm:=xxmax; end else if ( (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny<0)) then begin xm:=listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny; ym:=yymin; end else if ( (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny>0)) then begin xm:=listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny; ym:=yymax; end; mc.trait(listesegment[-1+i].a1x,listesegment[-1+i].a1y,xm,ym,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,psdot,pmcopy,true); end; if listesegment[-1+i].virtuelavant then begin nx:=-listesegment[-1+i].a1x+listesegment[-1+i].a2x; ny:=-listesegment[-1+i].a1y+listesegment[-1+i].a2y; if nx=0 then if ny>0 then begin xm:=listesegment[-1+i].a2x; ym:=yymax; end else begin xm:=listesegment[-1+i].a2x; ym:=yymin; end; if ((ny=0) and (nx<>0)) then if nx>0 then begin xm:=xxmax; ym:=listesegment[-1+i].a2y; end else begin xm:=xxmin; ym:=listesegment[-1+i].a2y; end; if ((ny<>0) and (nx<>0)) then if ( (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx<0)) then begin ym:=listesegment[-1+i].a2y+(xxmin-listesegment[-1+i].a2x)*ny/nx; xm:=xxmin; end else if ( (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx<=yymax) and (listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx>=yymin) and (nx>0)) then begin ym:=listesegment[-1+i].a2y+(xxmax-listesegment[-1+i].a2x)*ny/nx; xm:=xxmax; end else if ( (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny<0)) then begin xm:=listesegment[-1+i].a2x+(yymin-listesegment[-1+i].a2y)*nx/ny; ym:=yymin; end else if ( (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny<=xxmax) and (listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny>=xxmin) and (ny>0)) then begin xm:=listesegment[-1+i].a2x+(yymax-listesegment[-1+i].a2y)*nx/ny; ym:=yymax; end; mc.trait(listesegment[-1+i].a2x,listesegment[-1+i].a2y,xm,ym,listesegment[-1+i].epaisseur,listesegment[-1+i].couleur,psdot,pmcopy,true); end; end; imprimante.canvas.font:=old_font; end; procedure rayon.dessinebis(mc:tmonbitmap;extreme:boolean); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if extreme then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure rayon.dessinebisPS(mc:tmonpostscript;extreme:boolean); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if extreme then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure rayon.imprimebis(mc:tmyimprimante;extreme:boolean); var ttai:extended; begin ttai:=sqrt((xxmax-xxmin)*(xxmax-xxmin)+(yymax-yymin)*(yymax-yymin)); if extreme then begin mc.cercle(ax,ay,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); mc.cercle(ax+kx,ay+ky,3*self.epaisseur, self.epaisseur,couleurpoignees,pmcopy,true); end; end; procedure sourceponctuelle.dessine(mc:tmonbitmap); var i:integer; begin if modegroupement then mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3, 2,clpurple,pmcopy,true); if (modemodif or modeduplication) then if modemodif then mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle((a1x+a2x)/2,(a1y+a2y)/2,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle((a1x+a2x)/2,(a1y+a2y)/2,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); end; end; procedure sourceponctuelle.dessinePS(mc:tmonpostscript); var i:integer; begin if modegroupement then mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3, 2,clpurple,pmcopy,true); if (modemodif or modeduplication) then if modemodif then mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle((a1x+a2x)/2,(a1y+a2y)/2,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle((a1x+a2x)/2,(a1y+a2y)/2,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); end; end; procedure sourceponctuelle.imprime(mc:tmyimprimante); var i:integer; begin if modegroupement then mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3, 2,clpurple,pmcopy,true); if (modemodif or modeduplication) then if modemodif then mc.croixx((a1x+a2x)/2,(a1y+a2y)/2,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle((a1x+a2x)/2,(a1y+a2y)/2,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; if (modesuppression) then begin mc.cercle((a1x+a2x)/2,(a1y+a2y)/2,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); end; end; procedure OndePlane.dessine(mc:tmonbitmap); var i:integer; begin mc.trait(ray[1].ax,ray[1].ay,ray[nombrederayon].ax,ray[nombrederayon].ay,ray[1].epaisseur, ray[1].couleur,psdot,pmcopy,true); if nombrederayon>0 then for i:=1 to nombrederayon do ray[i].dessinebis(mc,false); if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(a1x,a1y,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; if ((modeinfo) and not(modeduplication)) then mc.cercle(sx+a2x-a1x,sy+a2y-a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; procedure OndePlane.dessinePS(mc:tmonpostscript); var i:integer; begin mc.trait(ray[1].ax,ray[1].ay,ray[nombrederayon].ax,ray[nombrederayon].ay,ray[1].epaisseur, ray[1].couleur,psdot,pmcopy,true); if nombrederayon>0 then for i:=1 to nombrederayon do ray[i].dessinebisPS(mc,false); if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(a1x,a1y,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; if ((modeinfo) and not(modeduplication)) then mc.cercle(sx+a2x-a1x,sy+a2y-a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; procedure OndePlane.imprime(mc:tmyimprimante); var i:integer; begin mc.trait(ray[1].ax,ray[1].ay,ray[nombrederayon].ax,ray[nombrederayon].ay,ray[1].epaisseur, ray[1].couleur,psdot,pmcopy,true); if nombrederayon>0 then for i:=1 to nombrederayon do ray[i].imprimebis(mc,false); if modegroupement then mc.croixx(sx,sy,3, 2,clpurple,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if modemodif then mc.croixx(a1x,a1y,3*self.epaisseur, self.epaisseur*2,couleurtrans,pmcopy,true) else mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; if ((modeinfo) and not(modeduplication)) then mc.cercle(sx+a2x-a1x,sy+a2y-a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(sx,sy,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); mc.cercle(a2x,a2y,3*ray[1].epaisseur, ray[1].epaisseur,couleursuppression,pmcopy,true); end; if modeduplication then mc.cercle(a1x,a1y,3*ray[1].epaisseur, ray[1].epaisseur,couleurpoignees,pmcopy,true); end; procedure sourceponctuelle.calculesegment; var i:integer; begin for i:=1 to nombrederayon do if not( (ray[i].couleur=clblack) and (unmilieudispersif or (nombrereseau>0))) then calculesegment0(ray[i].ax, ray[i].ay,ray[i].kx,ray[i].ky,ray[i].anglepolaire,ray[i].epaisseur, ray[i].couleur,vav, vaa,ray[i].nombremaxenfant,ray[i].maxsegment) else begin retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(ray[i].ax,ray[i].ay ,ray[i].kx,ray[i].ky,clred,ray[i].epaisseur, vav,vaa,ray[i].nombremaxenfant,ray[i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(ray[i].ax,ray[i].ay ,ray[i].kx,ray[i].ky,clgreen,ray[i].epaisseur, vav,vaa,ray[i].nombremaxenfant,ray[i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(ray[i].ax,ray[i].ay ,ray[i].kx,ray[i].ky,clblue,ray[i].epaisseur, vav,vaa,ray[i].nombremaxenfant,ray[i].maxsegment,0); end; end; procedure ondeplane.calculesegment; var i:integer; begin for i:=1 to nombrederayon do if not( (ray[i].couleur=clblack) and (unmilieudispersif or (nombrereseau>0))) then calculesegment0(ray[i].ax, ray[i].ay,ray[i].kx,ray[i].ky,ray[i].anglepolaire,ray[i].epaisseur, ray[i].couleur,vav, vaa,ray[i].nombremaxenfant,ray[i].maxsegment) else begin retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(ray[i].ax,ray[i].ay ,ray[i].kx,ray[i].ky,clred,ray[i].epaisseur, ray[i].vav,ray[i].vaa,ray[i].nombremaxenfant,ray[i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(ray[i].ax,ray[i].ay ,ray[i].kx,ray[i].ky,clgreen,ray[i].epaisseur, ray[i].vav,ray[i].vaa,ray[i].nombremaxenfant,ray[i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(ray[i].ax,ray[i].ay ,ray[i].kx,ray[i].ky,clblue,ray[i].epaisseur, ray[i].vav,ray[i].vaa,ray[i].nombremaxenfant,ray[i].maxsegment,0); end; end; procedure calculesegment0(ax,ay,kx,ky,anglepolaire:extended; epaisseur:integer; couleur:tcolor; vav,vaa:shortstring; nombremaxenfant,maxsegment:integer); var i,j,iii,jjj:integer; bordureatteinte,surfaceabsorbanteatteinte,unrefracte:boolean; distance,xact,yact,kxact,kyact,anglepolaireact, xfutur,yfutur,kxfutur,kyfutur,anglepolairefutur,anglepolairenormale:extended; lambda,lambda1,lambda2,mu,xinter,yinter,incidence,delta,tata,tata1,tata2,tati1,tati2:extended; surface_actuelle,surface_future:tsurface; coteactuel,cotefutur:integer; indicesurfaceactuelle,indicesurfacefuture:integer; ffx,ffy,xenfant,yenfant,kxenfant,kyenfant,nnx,nny,agp:extended; xenfantreseau,yenfantreseau,kxenfantreseau,kyenfantreseau:array of extended; nombreenfantreseau:integer; naissance,triples:boolean; nombresegment,nombrenaissance:integer; indiceoptiqueactuel,indiceoptiquefutur,patate:extended; aaa,bbb,ccc,xxx1,xxx2,rrr1,rrr2,rrr,xxx,nnnx,nnny:extended; l_vav,l_vaa:array[1..maxmaxsegment] of boolean; anglepolairenormaleatracer,cheminoptique,cheminsup,aic, aic0,AO,AOp,distancecentre,anglelimite:extended; normaleatracer,normale2cotes:boolean; angleincident,anglerefracte:angle; incidentatracer,refracteatracer:boolean; epsilon,xpact,ypact:extended; boubou:integer; longueur_donde:extended; begin epsilon:=1e-10; if couleur=clred then longueur_donde:=longueur_donde_red; if couleur=clblue then longueur_donde:=longueur_donde_blue; if couleur=clgreen then longueur_donde:=longueur_donde_green; for i:=1 to maxsegment do l_vav[i]:=(pos(','+inttostr(i)+',',vav)<>0) or (pos('('+inttostr(i)+',',vav)<>0) or (pos(','+inttostr(i)+')',vav)<>0) or (pos('('+inttostr(i)+')',vav)<>0); for i:=1 to maxsegment do l_vaa[i]:=(pos(','+inttostr(i)+',',vaa)<>0) or (pos('('+inttostr(i)+',',vaa)<>0) or (pos(','+inttostr(i)+')',vaa)<>0) or (pos('('+inttostr(i)+')',vaa)<>0); cheminoptique:=0; bordureatteinte:=false; surfaceabsorbanteatteinte:=false; nombresegment:=0; nombrenaissance:=0; coteactuel:=0; cotefutur:=0; case couleur of clred: indiceoptiqueactuel:=indice_rouge_par_defaut; clgreen: indiceoptiqueactuel:=indice_vert_par_defaut; clblue: indiceoptiqueactuel:=indice_bleu_par_defaut; end; indiceoptiquefutur:=indiceoptiqueactuel; xact:=ax; yact:=ay; kxact:=kx; kyact:=ky; anglepolaireact:=anglepolaire; surface_actuelle:=sur_bordure; surface_future:=sur_bordure; indicesurfaceactuelle:=0; indicesurfacefuture:=0; incidentatracer:=false; refracteatracer:=false; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do if listepolycercle[-1+i].estou(ax,ay)=Iinterieur then begin case couleur of clred: indiceoptiqueactuel:=listepolycercle[-1+i].indicerouge; clgreen: indiceoptiqueactuel:=listepolycercle[-1+i].indicevert; clblue: indiceoptiqueactuel:=listepolycercle[-1+i].indicebleu; end; end; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do if listepolyhedre[-1+i].estou(ax,ay)=Iinterieur then begin case couleur of clred: indiceoptiqueactuel:=listepolyhedre[-1+i].indicerouge; clgreen: indiceoptiqueactuel:=listepolyhedre[-1+i].indicevert; clblue: indiceoptiqueactuel:=listepolyhedre[-1+i].indicebleu; end; end; if nombreprisme>0 then for i:=1 to nombreprisme do if listeprisme[-1+i].estou(ax,ay)=Iinterieur then begin case couleur of clred: indiceoptiqueactuel:=listeprisme[-1+i].indicerouge; clgreen: indiceoptiqueactuel:=listeprisme[-1+i].indicevert; clblue: indiceoptiqueactuel:=listeprisme[-1+i].indicebleu; end; end; if nombresphere>0 then for i:=1 to nombresphere do if sqrt(sqr(ax-listesphere[-1+i].cx)+sqr(ay-listesphere[-1+i].cy))< listesphere[-1+i].rayon then begin case couleur of clred: indiceoptiqueactuel:=listesphere[-1+i].indicerouge; clgreen: indiceoptiqueactuel:=listesphere[-1+i].indicevert; clblue: indiceoptiqueactuel:=listesphere[-1+i].indicebleu; end; end; if nombrelec>0 then for i:=1 to nombrelec do if listelec[-1+i].estou(ax,ay)=Iinterieur then begin case couleur of clred: indiceoptiqueactuel:=listelec[-1+i].indicerouge; clgreen: indiceoptiqueactuel:=listelec[-1+i].indicevert; clblue: indiceoptiqueactuel:=listelec[-1+i].indicebleu; end; end; while (not(bordureatteinte) and not (surfaceabsorbanteatteinte) and (nombresegment0 then begin mu:=(kyact*(xact-xxmin)-kxact*(yact-yymax))/(kyact*(xxmax-xxmin)); lambda:=(yymax-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=xxmin+mu*(xxmax-xxmin); yinter:=yymax; if sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))0 then begin mu:=(kyact*(xact-xxmin)-kxact*(yact-yymin))/(kyact*(xxmax-xxmin)); lambda:=(yymin-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=xxmin+mu*(xxmax-xxmin); yinter:=yymin; if sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))0 then begin mu:=(kyact*(xact-xxmin)-kxact*(yact-yymin))/(-kxact*(yymax-yymin)); lambda:=(xxmin-xact)/kxact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=xxmin; yinter:=yymin+mu*(yymax-yymin); if sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))0 then begin mu:=(kyact*(xact-xxmax)-kxact*(yact-yymin))/(-kxact*(yymax-yymin)); lambda:=(xxmax-xact)/kxact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=xxmax; yinter:=yymin+mu*(yymax-yymin); if sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))0 then for i:=1 to nombremiroirplan do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_miroirplan)) then if ((kyact*(Listemiroirplan[-1+i].a2x-Listemiroirplan[-1+i].a1x)) <> (kxact*(Listemiroirplan[-1+i].a2y-Listemiroirplan[-1+i].a1y )) ) then begin mu:=(kyact*(xact-Listemiroirplan[-1+i].a1x)-kxact*(yact-Listemiroirplan[-1+i].a1y))/ (kyact*(Listemiroirplan[-1+i].a2x-Listemiroirplan[-1+i].a1x)- kxact*(Listemiroirplan[-1+i].a2y-Listemiroirplan[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listemiroirplan[-1+i].a2x-Listemiroirplan[-1+i].a1x) +Listemiroirplan[-1+i].a1x-xact)/kxact else lambda:=(mu*(Listemiroirplan[-1+i].a2y-Listemiroirplan[-1+i].a1y)+ Listemiroirplan[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listemiroirplan[-1+i].a1x+mu*(Listemiroirplan[-1+i].a2x-Listemiroirplan[-1+i].a1x); yinter:=Listemiroirplan[-1+i].a1y+mu*(Listemiroirplan[-1+i].a2y-Listemiroirplan[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; incidence:=Pi/2-Listemiroirplan[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_miroirplan; indicesurfacefuture:=i; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listemiroirplan[-1+i].anglepolaire-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listemiroirplan[-1+i].anglepolaire-anglepolaireact); anglepolairefutur:=2*Listemiroirplan[-1+i].anglepolaire-anglepolaireact; normaleatracer:=true; anglepolairenormaleatracer:=Listemiroirplan[-1+i].anglepolaire+pi/2; normale2cotes:=false; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos(Listemiroirplan[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin(Listemiroirplan[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) ; end; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end; end; end; end; {des miroirs plans} {test sur les ecrans} if nombreEcran>0 then for i:=1 to nombreEcran do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_Ecran)) then if ((kyact*(ListeEcran[-1+i].a2x-ListeEcran[-1+i].a1x)) <> (kxact*(ListeEcran[-1+i].a2y-ListeEcran[-1+i].a1y )) ) then begin mu:=(kyact*(xact-ListeEcran[-1+i].a1x)-kxact*(yact-ListeEcran[-1+i].a1y))/ (kyact*(ListeEcran[-1+i].a2x-ListeEcran[-1+i].a1x)- kxact*(ListeEcran[-1+i].a2y-ListeEcran[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( ListeEcran[-1+i].a2x-ListeEcran[-1+i].a1x) +ListeEcran[-1+i].a1x-xact)/kxact else lambda:=(mu*(ListeEcran[-1+i].a2y-ListeEcran[-1+i].a1y)+ ListeEcran[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=ListeEcran[-1+i].a1x+mu*(ListeEcran[-1+i].a2x-ListeEcran[-1+i].a1x); yinter:=ListeEcran[-1+i].a1y+mu*(ListeEcran[-1+i].a2y-ListeEcran[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon))then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; kxfutur:=kxact; kyfutur:=kyact; yfutur:=yinter; bordureatteinte:=false; naissance:=false; normaleatracer:=false; normale2cotes:=false; incidence:=Pi/2-ListeEcran[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; incidentatracer:=false; refracteatracer:=false; surfaceabsorbanteatteinte:=true; end; end; end; {des ecrans} {test sur les diaphragmes} if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_diaphragme)) then if ((kyact*(Listediaphragme[-1+i].a2x-Listediaphragme[-1+i].a1x)) <> (kxact*(Listediaphragme[-1+i].a2y-Listediaphragme[-1+i].a1y )) ) then begin mu:=(kyact*(xact-Listediaphragme[-1+i].a1x)-kxact*(yact-Listediaphragme[-1+i].a1y))/ (kyact*(Listediaphragme[-1+i].a2x-Listediaphragme[-1+i].a1x)- kxact*(Listediaphragme[-1+i].a2y-Listediaphragme[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listediaphragme[-1+i].a2x-Listediaphragme[-1+i].a1x) +Listediaphragme[-1+i].a1x-xact)/kxact else lambda:=(mu*(Listediaphragme[-1+i].a2y-Listediaphragme[-1+i].a1y)+ Listediaphragme[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listediaphragme[-1+i].a1x+mu*(Listediaphragme[-1+i].a2x-Listediaphragme[-1+i].a1x); yinter:=Listediaphragme[-1+i].a1y+mu*(Listediaphragme[-1+i].a2y-Listediaphragme[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; kxfutur:=kxact; kyfutur:=kyact; yfutur:=yinter; bordureatteinte:=false; naissance:=false; normaleatracer:=false; normale2cotes:=false; incidence:=Pi/2-Listediaphragme[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; incidentatracer:=false; refracteatracer:=false; surfaceabsorbanteatteinte:=true; end; end; end; {des diaphragmes} {suite du test sur les diaphragmes} if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_diaphragme)) then if ((kyact*(Listediaphragme[-1+i].ap2x-Listediaphragme[-1+i].ap1x)) <> (kxact*(Listediaphragme[-1+i].ap2y-Listediaphragme[-1+i].ap1y )) ) then begin mu:=(kyact*(xact-Listediaphragme[-1+i].ap1x)-kxact*(yact-Listediaphragme[-1+i].ap1y))/ (kyact*(Listediaphragme[-1+i].ap2x-Listediaphragme[-1+i].ap1x)- kxact*(Listediaphragme[-1+i].ap2y-Listediaphragme[-1+i].ap1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listediaphragme[-1+i].ap2x-Listediaphragme[-1+i].ap1x) +Listediaphragme[-1+i].ap1x-xact)/kxact else lambda:=(mu*(Listediaphragme[-1+i].ap2y-Listediaphragme[-1+i].ap1y)+ Listediaphragme[-1+i].ap1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listediaphragme[-1+i].ap1x+mu*(Listediaphragme[-1+i].ap2x-Listediaphragme[-1+i].ap1x); yinter:=Listediaphragme[-1+i].ap1y+mu*(Listediaphragme[-1+i].ap2y-Listediaphragme[-1+i].ap1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; kxfutur:=kxact; kyfutur:=kyact; yfutur:=yinter; bordureatteinte:=false; naissance:=false; normaleatracer:=false; normale2cotes:=false; incidence:=Pi/2-Listediaphragme[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; incidentatracer:=false; refracteatracer:=false; surfaceabsorbanteatteinte:=true; end; end; end; {des diaphragmes} {test sur les lsrs} if nombrelsr>0 then for i:=1 to nombrelsr do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_lsr)) then if ((kyact*(Listelsr[-1+i].a2x-Listelsr[-1+i].a1x)) <> (kxact*(Listelsr[-1+i].a2y-Listelsr[-1+i].a1y )) ) then begin mu:=(kyact*(xact-Listelsr[-1+i].a1x)-kxact*(yact-Listelsr[-1+i].a1y))/ (kyact*(Listelsr[-1+i].a2x-Listelsr[-1+i].a1x)- kxact*(Listelsr[-1+i].a2y-Listelsr[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listelsr[-1+i].a2x-Listelsr[-1+i].a1x) +Listelsr[-1+i].a1x-xact)/kxact else lambda:=(mu*(Listelsr[-1+i].a2y-Listelsr[-1+i].a1y)+ Listelsr[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listelsr[-1+i].a1x+mu*(Listelsr[-1+i].a2x-Listelsr[-1+i].a1x); yinter:=Listelsr[-1+i].a1y+mu*(Listelsr[-1+i].a2y-Listelsr[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; incidence:=Pi/2-Listelsr[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; surfaceabsorbanteatteinte:=false; surface_future:=sur_lsr; indicesurfacefuture:=i; normaleatracer:=true; anglepolairenormaleatracer:=Listelsr[-1+i].anglepolaire+pi/2; normale2cotes:=true; if optionangles then begin incidentatracer:=true; refracteatracer:=false; if not((incidence>Pi/2) or (incidence<-Pi/2)) then angleincident.create(xfutur,yfutur,xfutur+cos(Listelsr[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin(Listelsr[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) else angleincident.create(xfutur,yfutur,xfutur+cos(Listelsr[-1+i].anglepolaire+pi/2+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin(Listelsr[-1+i].anglepolaire+pi/2+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) ; end; naissance:=true; kxenfant:=kxact; kyenfant:=kyact; xenfant:=xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yenfant:=yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; if ((incidence>Pi/2) or (incidence<-Pi/2)) then begin kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*(Listelsr[-1+i].anglepolaire+Pi)-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*(Listelsr[-1+i].anglepolaire+Pi)-anglepolaireact); anglepolairefutur:=2*(Listelsr[-1+i].anglepolaire+Pi)-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listelsr[-1+i].anglepolaire-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listelsr[-1+i].anglepolaire-anglepolaireact); anglepolairefutur:=2*Listelsr[-1+i].anglepolaire-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end; end; end; end;{des lsrs} {test sur les reseaux en transmission} if nombrereseau>0 then for i:=1 to nombrereseau do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_reseau)) and (Listereseau[-1+i].entransmission) then if ((kyact*(Listereseau[-1+i].a2x-Listereseau[-1+i].a1x)) <> (kxact*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y )) ) then begin mu:=(kyact*(xact-Listereseau[-1+i].a1x)-kxact*(yact-Listereseau[-1+i].a1y))/ (kyact*(Listereseau[-1+i].a2x-Listereseau[-1+i].a1x)- kxact*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listereseau[-1+i].a2x-Listereseau[-1+i].a1x) +Listereseau[-1+i].a1x-xact)/kxact else lambda:=(mu*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y)+ Listereseau[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listereseau[-1+i].a1x+mu*(Listereseau[-1+i].a2x-Listereseau[-1+i].a1x); yinter:=Listereseau[-1+i].a1y+mu*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; incidence:=Pi/2-Listereseau[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; surfaceabsorbanteatteinte:=false; surface_future:=sur_reseau; indicesurfacefuture:=i; normaleatracer:=true; anglepolairenormaleatracer:=Listereseau[-1+i].anglepolaire+pi/2; normale2cotes:=true; if optionangles then begin incidentatracer:=true; refracteatracer:=false; if not((incidence>Pi/2) or (incidence<-Pi/2)) then angleincident.create(xfutur,yfutur,xfutur+cos(Listereseau[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin(Listereseau[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) else angleincident.create(xfutur,yfutur,xfutur+cos(Listereseau[-1+i].anglepolaire+pi/2+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin(Listereseau[-1+i].anglepolaire+pi/2+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) ; end; naissance:=true; // application.messagebox(pchar(floattostr(longueur_donde)),'',mb_ok); nombreenfantreseau:=0; setlength(xenfantreseau,nombreenfantreseau); setlength(yenfantreseau,nombreenfantreseau); setlength(kxenfantreseau,nombreenfantreseau); setlength(kyenfantreseau,nombreenfantreseau); for boubou:=Listereseau[-1+i].ordre_min to Listereseau[-1+i].ordre_max do if boubou<>0 then if ((abs(incidence)pi/2) and (abs(sin(incidence-pi)+boubou/Listereseau[-1+i].pas*longueur_donde)<1)) then begin inc(nombreenfantreseau); setlength(xenfantreseau,nombreenfantreseau); setlength(yenfantreseau,nombreenfantreseau); setlength(kxenfantreseau,nombreenfantreseau); setlength(kyenfantreseau,nombreenfantreseau); if abs(incidence)0 then for i:=1 to nombrereseau do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_reseau)) and not(Listereseau[-1+i].entransmission) then if ((kyact*(Listereseau[-1+i].a2x-Listereseau[-1+i].a1x)) <> (kxact*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y )) ) then begin mu:=(kyact*(xact-Listereseau[-1+i].a1x)-kxact*(yact-Listereseau[-1+i].a1y))/ (kyact*(Listereseau[-1+i].a2x-Listereseau[-1+i].a1x)- kxact*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listereseau[-1+i].a2x-Listereseau[-1+i].a1x) +Listereseau[-1+i].a1x-xact)/kxact else lambda:=(mu*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y)+ Listereseau[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listereseau[-1+i].a1x+mu*(Listereseau[-1+i].a2x-Listereseau[-1+i].a1x); yinter:=Listereseau[-1+i].a1y+mu*(Listereseau[-1+i].a2y-Listereseau[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; incidence:=Pi/2-Listereseau[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if (abs(incidence)>=pi/2) then begin xfutur:=xinter; kxfutur:=kxact; kyfutur:=kyact; yfutur:=yinter; bordureatteinte:=false; naissance:=false; normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; surfaceabsorbanteatteinte:=true; end else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_reseau; indicesurfacefuture:=i; normaleatracer:=true; anglepolairenormaleatracer:=Listereseau[-1+i].anglepolaire+pi/2; normale2cotes:=true; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos(Listereseau[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin(Listereseau[-1+i].anglepolaire+pi/2)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) end; naissance:=true; // application.messagebox(pchar(floattostr(longueur_donde)),'',mb_ok); nombreenfantreseau:=0; setlength(xenfantreseau,nombreenfantreseau); setlength(yenfantreseau,nombreenfantreseau); setlength(kxenfantreseau,nombreenfantreseau); setlength(kyenfantreseau,nombreenfantreseau); for boubou:=Listereseau[-1+i].ordre_min to Listereseau[-1+i].ordre_max do if boubou<>0 then if (abs(-sin(incidence)+boubou/Listereseau[-1+i].pas*longueur_donde)<1) then begin inc(nombreenfantreseau); setlength(xenfantreseau,nombreenfantreseau); setlength(yenfantreseau,nombreenfantreseau); setlength(kxenfantreseau,nombreenfantreseau); setlength(kyenfantreseau,nombreenfantreseau); kxenfantreseau[nombreenfantreseau-1]:=sqrt(kxact*kxact+kyact*kyact)*cos(Listereseau[-1+i].anglepolaire+pi/2+arcsin(-sin(incidence)+boubou/Listereseau[-1+i].pas*longueur_donde)); kyenfantreseau[nombreenfantreseau-1]:=sqrt(kxact*kxact+kyact*kyact)*sin(Listereseau[-1+i].anglepolaire+pi/2+arcsin(-sin(incidence)+boubou/Listereseau[-1+i].pas*longueur_donde)); xenfantreseau[nombreenfantreseau-1]:=xinter+kxenfantreseau[nombreenfantreseau-1]*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yenfantreseau[nombreenfantreseau-1]:=yinter+kyenfantreseau[nombreenfantreseau-1]*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(Listereseau[-1+i].anglepolaire+pi/2-incidence); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(Listereseau[-1+i].anglepolaire+pi/2-incidence); anglepolairefutur:=Listereseau[-1+i].anglepolaire+pi/2-incidence; end; end;{du cas ou c'est le + proche} end; {du cas ou ca intercepte} end;{du cas reseau en reflexion} {test sur les miroirs spheriques concaves partaxiaux} if nombremscopa>0 then for i:=1 to nombremscopa do if not (listemscopa[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscopa)) then if ((kyact*(listemscopa[-1+i].a2x-listemscopa[-1+i].a1x)) <> (kxact*(listemscopa[-1+i].a2y-listemscopa[-1+i].a1y )) ) then begin mu:=(kyact*(xact-listemscopa[-1+i].a1x)-kxact*(yact-listemscopa[-1+i].a1y))/ (kyact*(listemscopa[-1+i].a2x-listemscopa[-1+i].a1x)- kxact*(listemscopa[-1+i].a2y-listemscopa[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listemscopa[-1+i].a2x-listemscopa[-1+i].a1x) +listemscopa[-1+i].a1x-xact)/kxact else lambda:=(mu*(listemscopa[-1+i].a2y-listemscopa[-1+i].a1y)+ listemscopa[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listemscopa[-1+i].a1x+mu*(listemscopa[-1+i].a2x-listemscopa[-1+i].a1x); yinter:=listemscopa[-1+i].a1y+mu*(listemscopa[-1+i].a2y-listemscopa[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; naissance:=false; bordureatteinte:=false; incidence:=Pi/2-listemscopa[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscopa; indicesurfacefuture:=i; lambda:=((listemscopa[-1+i].fx-listemscopa[-1+i].cx)*(listemscopa[-1+i].fx-listemscopa[-1+i].cx)+ (listemscopa[-1+i].fy-listemscopa[-1+i].cy)*(listemscopa[-1+i].fy-listemscopa[-1+i].cy))/ (kxact*(listemscopa[-1+i].fx-listemscopa[-1+i].cx)+kyact*(listemscopa[-1+i].fy-listemscopa[-1+i].cy)); kxfutur:=sqrt(kxact*kxact+kyact*kyact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)/ sqrt((listemscopa[-1+i].cx-xinter+lambda*kxact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)+ (listemscopa[-1+i].cy-yinter+lambda*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)/ sqrt((listemscopa[-1+i].cx-xinter+lambda*kxact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)+ (listemscopa[-1+i].cy-yinter+lambda*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then begin distancecentre:=sqrt(sqr(xinter-listemscopa[-1+i].sx)+sqr(yinter-listemscopa[-1+i].sy)); cheminsup:=-sqr(distancecentre)/2/listemscopa[-1+i].focale; end; end; end; end; end; {des mscopa} {des mscopa troues} if nombremscopa>0 then for i:=1 to nombremscopa do if (listemscopa[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscopa)) then if ((kyact*(listemscopa[-1+i].t1x-listemscopa[-1+i].a1x)) <> (kxact*(listemscopa[-1+i].t1y-listemscopa[-1+i].a1y )) ) then begin mu:=(kyact*(xact-listemscopa[-1+i].a1x)-kxact*(yact-listemscopa[-1+i].a1y))/ (kyact*(listemscopa[-1+i].t1x-listemscopa[-1+i].a1x)- kxact*(listemscopa[-1+i].t1y-listemscopa[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listemscopa[-1+i].t1x-listemscopa[-1+i].a1x) +listemscopa[-1+i].a1x-xact)/kxact else lambda:=(mu*(listemscopa[-1+i].t1y-listemscopa[-1+i].a1y)+ listemscopa[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listemscopa[-1+i].a1x+mu*(listemscopa[-1+i].t1x-listemscopa[-1+i].a1x); yinter:=listemscopa[-1+i].a1y+mu*(listemscopa[-1+i].t1y-listemscopa[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; naissance:=false; bordureatteinte:=false; incidence:=Pi/2-listemscopa[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscopa; indicesurfacefuture:=i; lambda:=((listemscopa[-1+i].fx-listemscopa[-1+i].cx)*(listemscopa[-1+i].fx-listemscopa[-1+i].cx)+ (listemscopa[-1+i].fy-listemscopa[-1+i].cy)*(listemscopa[-1+i].fy-listemscopa[-1+i].cy))/ (kxact*(listemscopa[-1+i].fx-listemscopa[-1+i].cx)+kyact*(listemscopa[-1+i].fy-listemscopa[-1+i].cy)); kxfutur:=sqrt(kxact*kxact+kyact*kyact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)/ sqrt((listemscopa[-1+i].cx-xinter+lambda*kxact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)+ (listemscopa[-1+i].cy-yinter+lambda*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)/ sqrt((listemscopa[-1+i].cx-xinter+lambda*kxact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)+ (listemscopa[-1+i].cy-yinter+lambda*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then begin distancecentre:=sqrt(sqr(xinter-listemscopa[-1+i].sx)+sqr(yinter-listemscopa[-1+i].sy)); cheminsup:=-sqr(distancecentre)/2/listemscopa[-1+i].focale; end; end; end; end; end; {des mscopa} {mscopa troues, autre cote du trou} if nombremscopa>0 then for i:=1 to nombremscopa do if (listemscopa[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscopa)) then if ((kyact*(listemscopa[-1+i].a2x-listemscopa[-1+i].t2x)) <> (kxact*(listemscopa[-1+i].a2y-listemscopa[-1+i].t2y )) ) then begin mu:=(kyact*(xact-listemscopa[-1+i].t2x)-kxact*(yact-listemscopa[-1+i].t2y))/ (kyact*(listemscopa[-1+i].a2x-listemscopa[-1+i].t2x)- kxact*(listemscopa[-1+i].a2y-listemscopa[-1+i].t2y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listemscopa[-1+i].a2x-listemscopa[-1+i].t2x) +listemscopa[-1+i].a1x-xact)/kxact else lambda:=(mu*(listemscopa[-1+i].a2y-listemscopa[-1+i].t2y)+ listemscopa[-1+i].t2y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listemscopa[-1+i].t2x+mu*(listemscopa[-1+i].a2x-listemscopa[-1+i].t2x); yinter:=listemscopa[-1+i].t2y+mu*(listemscopa[-1+i].a2y-listemscopa[-1+i].t2y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; naissance:=false; bordureatteinte:=false; incidence:=Pi/2-listemscopa[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscopa; indicesurfacefuture:=i; lambda:=((listemscopa[-1+i].fx-listemscopa[-1+i].cx)*(listemscopa[-1+i].fx-listemscopa[-1+i].cx)+ (listemscopa[-1+i].fy-listemscopa[-1+i].cy)*(listemscopa[-1+i].fy-listemscopa[-1+i].cy))/ (kxact*(listemscopa[-1+i].fx-listemscopa[-1+i].cx)+kyact*(listemscopa[-1+i].fy-listemscopa[-1+i].cy)); kxfutur:=sqrt(kxact*kxact+kyact*kyact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)/ sqrt((listemscopa[-1+i].cx-xinter+lambda*kxact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)+ (listemscopa[-1+i].cy-yinter+lambda*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)/ sqrt((listemscopa[-1+i].cx-xinter+lambda*kxact)*(listemscopa[-1+i].cx-xinter+lambda*kxact)+ (listemscopa[-1+i].cy-yinter+lambda*kyact)*(listemscopa[-1+i].cy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then begin distancecentre:=sqrt(sqr(xinter-listemscopa[-1+i].sx)+sqr(yinter-listemscopa[-1+i].sy)); cheminsup:=-sqr(distancecentre)/2/listemscopa[-1+i].focale; end; end; end; end; end; {des mscopa} {test sur les miroirs spheriques convexes partaxiaux} if nombremscepa>0 then for i:=1 to nombremscepa do if not (listemscepa[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscepa)) then if ((kyact*(listemscepa[-1+i].a2x-listemscepa[-1+i].a1x)) <> (kxact*(listemscepa[-1+i].a2y-listemscepa[-1+i].a1y )) ) then begin mu:=(kyact*(xact-listemscepa[-1+i].a1x)-kxact*(yact-listemscepa[-1+i].a1y))/ (kyact*(listemscepa[-1+i].a2x-listemscepa[-1+i].a1x)- kxact*(listemscepa[-1+i].a2y-listemscepa[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listemscepa[-1+i].a2x-listemscepa[-1+i].a1x) +listemscepa[-1+i].a1x-xact)/kxact else lambda:=(mu*(listemscepa[-1+i].a2y-listemscepa[-1+i].a1y)+ listemscepa[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listemscepa[-1+i].a1x+mu*(listemscepa[-1+i].a2x-listemscepa[-1+i].a1x); yinter:=listemscepa[-1+i].a1y+mu*(listemscepa[-1+i].a2y-listemscepa[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; incidence:=Pi/2-listemscepa[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscepa; indicesurfacefuture:=i; lambda:=((listemscepa[-1+i].fx-listemscepa[-1+i].cx)*(listemscepa[-1+i].fx-listemscepa[-1+i].cx)+ (listemscepa[-1+i].fy-listemscepa[-1+i].cy)*(listemscepa[-1+i].fy-listemscepa[-1+i].cy))/ (kxact*(listemscepa[-1+i].fx-listemscepa[-1+i].cx)+kyact*(listemscepa[-1+i].fy-listemscepa[-1+i].cy)); kxfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)/ sqrt((listemscepa[-1+i].cx-xinter+lambda*kxact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)+ (listemscepa[-1+i].cy-yinter+lambda*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)); kyfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)/ sqrt((listemscepa[-1+i].cx-xinter+lambda*kxact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)+ (listemscepa[-1+i].cy-yinter+lambda*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then begin distancecentre:=sqrt(sqr(xinter-listemscepa[-1+i].sx)+sqr(yinter-listemscepa[-1+i].sy)); cheminsup:=sqr(distancecentre)/2/listemscepa[-1+i].focale; end; end; end; end; end; {des mscepa} {test sur les miroirs spheriques convexes partaxiaux troues} if nombremscepa>0 then for i:=1 to nombremscepa do if (listemscepa[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscepa)) then if ((kyact*(listemscepa[-1+i].t1x-listemscepa[-1+i].a1x)) <> (kxact*(listemscepa[-1+i].t1y-listemscepa[-1+i].a1y )) ) then begin mu:=(kyact*(xact-listemscepa[-1+i].a1x)-kxact*(yact-listemscepa[-1+i].a1y))/ (kyact*(listemscepa[-1+i].t1x-listemscepa[-1+i].a1x)- kxact*(listemscepa[-1+i].t1y-listemscepa[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listemscepa[-1+i].t1x-listemscepa[-1+i].a1x) +listemscepa[-1+i].a1x-xact)/kxact else lambda:=(mu*(listemscepa[-1+i].t1y-listemscepa[-1+i].a1y)+ listemscepa[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listemscepa[-1+i].a1x+mu*(listemscepa[-1+i].t1x-listemscepa[-1+i].a1x); yinter:=listemscepa[-1+i].a1y+mu*(listemscepa[-1+i].t1y-listemscepa[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon))then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; incidence:=Pi/2-listemscepa[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscepa; indicesurfacefuture:=i; lambda:=((listemscepa[-1+i].fx-listemscepa[-1+i].cx)*(listemscepa[-1+i].fx-listemscepa[-1+i].cx)+ (listemscepa[-1+i].fy-listemscepa[-1+i].cy)*(listemscepa[-1+i].fy-listemscepa[-1+i].cy))/ (kxact*(listemscepa[-1+i].fx-listemscepa[-1+i].cx)+kyact*(listemscepa[-1+i].fy-listemscepa[-1+i].cy)); kxfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)/ sqrt((listemscepa[-1+i].cx-xinter+lambda*kxact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)+ (listemscepa[-1+i].cy-yinter+lambda*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)); kyfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)/ sqrt((listemscepa[-1+i].cx-xinter+lambda*kxact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)+ (listemscepa[-1+i].cy-yinter+lambda*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then begin distancecentre:=sqrt(sqr(xinter-listemscepa[-1+i].sx)+sqr(yinter-listemscepa[-1+i].sy)); cheminsup:=sqr(distancecentre)/2/listemscepa[-1+i].focale; end; end; end; end; end; {des mscepa troues} {test sur les miroirs spheriques convexes partaxiauxtroues, autre cote du trou} if nombremscepa>0 then for i:=1 to nombremscepa do if (listemscepa[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscepa)) then if ((kyact*(listemscepa[-1+i].a2x-listemscepa[-1+i].t2x)) <> (kxact*(listemscepa[-1+i].a2y-listemscepa[-1+i].t2y )) ) then begin mu:=(kyact*(xact-listemscepa[-1+i].t2x)-kxact*(yact-listemscepa[-1+i].t2y))/ (kyact*(listemscepa[-1+i].a2x-listemscepa[-1+i].t2x)- kxact*(listemscepa[-1+i].a2y-listemscepa[-1+i].t2y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listemscepa[-1+i].a2x-listemscepa[-1+i].t2x) +listemscepa[-1+i].t2x-xact)/kxact else lambda:=(mu*(listemscepa[-1+i].a2y-listemscepa[-1+i].t2y)+ listemscepa[-1+i].t2y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listemscepa[-1+i].t2x+mu*(listemscepa[-1+i].a2x-listemscepa[-1+i].t2x); yinter:=listemscepa[-1+i].t2y+mu*(listemscepa[-1+i].a2y-listemscepa[-1+i].t2y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; incidence:=Pi/2-listemscepa[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscepa; indicesurfacefuture:=i; lambda:=((listemscepa[-1+i].fx-listemscepa[-1+i].cx)*(listemscepa[-1+i].fx-listemscepa[-1+i].cx)+ (listemscepa[-1+i].fy-listemscepa[-1+i].cy)*(listemscepa[-1+i].fy-listemscepa[-1+i].cy))/ (kxact*(listemscepa[-1+i].fx-listemscepa[-1+i].cx)+kyact*(listemscepa[-1+i].fy-listemscepa[-1+i].cy)); kxfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)/ sqrt((listemscepa[-1+i].cx-xinter+lambda*kxact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)+ (listemscepa[-1+i].cy-yinter+lambda*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)); kyfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)/ sqrt((listemscepa[-1+i].cx-xinter+lambda*kxact)*(listemscepa[-1+i].cx-xinter+lambda*kxact)+ (listemscepa[-1+i].cy-yinter+lambda*kyact)*(listemscepa[-1+i].cy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then begin distancecentre:=sqrt(sqr(xinter-listemscepa[-1+i].sx)+sqr(yinter-listemscepa[-1+i].sy)); cheminsup:=sqr(distancecentre)/2/listemscepa[-1+i].focale; end; end; end; end; end; {des mscepa troues, autre cote du trou} {test sur les lentilles minces convergentes} if nombrelmc>0 then for i:=1 to nombrelmc do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_lmc)) then if ((kyact*(listelmc[-1+i].a2x-listelmc[-1+i].a1x)) <> (kxact*(listelmc[-1+i].a2y-listelmc[-1+i].a1y )) ) then begin mu:=(kyact*(xact-listelmc[-1+i].a1x)-kxact*(yact-listelmc[-1+i].a1y))/ (kyact*(listelmc[-1+i].a2x-listelmc[-1+i].a1x)- kxact*(listelmc[-1+i].a2y-listelmc[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listelmc[-1+i].a2x-listelmc[-1+i].a1x) +listelmc[-1+i].a1x-xact)/kxact else lambda:=(mu*(listelmc[-1+i].a2y-listelmc[-1+i].a1y)+ listelmc[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listelmc[-1+i].a1x+mu*(listelmc[-1+i].a2x-listelmc[-1+i].a1x); yinter:=listelmc[-1+i].a1y+mu*(listelmc[-1+i].a2y-listelmc[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; incidence:=Pi/2-listelmc[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; surfaceabsorbanteatteinte:=false; surface_future:=sur_lmc; indicesurfacefuture:=i; if ((kxact*(listelmc[-1+i].f1x-listelmc[-1+i].ox)+kyact*(listelmc[-1+i].f1y-listelmc[-1+i].oy))>0) then begin ffx:=listelmc[-1+i].f1x; ffy:=listelmc[-1+i].f1y end else begin ffx:=listelmc[-1+i].f2x; ffy:=listelmc[-1+i].f2y; end; lambda:=sqr(listelmc[-1+i].focale)/ (kxact*(ffx-listelmc[-1+i].ox)+kyact*(ffy-listelmc[-1+i].oy)); kxfutur:=sqrt(kxact*kxact+kyact*kyact)*(listelmc[-1+i].ox-xinter+lambda*kxact)/ sqrt((listelmc[-1+i].ox-xinter+lambda*kxact)*(listelmc[-1+i].ox-xinter+lambda*kxact)+ (listelmc[-1+i].oy-yinter+lambda*kyact)*(listelmc[-1+i].oy-yinter+lambda*kyact)); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*(listelmc[-1+i].oy-yinter+lambda*kyact)/ sqrt((listelmc[-1+i].ox-xinter+lambda*kxact)*(listelmc[-1+i].ox-xinter+lambda*kxact)+ (listelmc[-1+i].oy-yinter+lambda*kyact)*(listelmc[-1+i].oy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then begin cheminsup:=(sqr(listelmc[-1+i].rayonmonture)-sqr(distancecentre))/2/listelmc[-1+i].focale; end; end; end; end; {des lmc} {test sur les lentilles minces divergentes} if nombrelmd>0 then for i:=1 to nombrelmd do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_lmd)) then if ((kyact*(listelmd[-1+i].a2x-listelmd[-1+i].a1x)) <> (kxact*(listelmd[-1+i].a2y-listelmd[-1+i].a1y )) ) then begin mu:=(kyact*(xact-listelmd[-1+i].a1x)-kxact*(yact-listelmd[-1+i].a1y))/ (kyact*(listelmd[-1+i].a2x-listelmd[-1+i].a1x)- kxact*(listelmd[-1+i].a2y-listelmd[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( listelmd[-1+i].a2x-listelmd[-1+i].a1x) +listelmd[-1+i].a1x-xact)/kxact else lambda:=(mu*(listelmd[-1+i].a2y-listelmd[-1+i].a1y)+ listelmd[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=listelmd[-1+i].a1x+mu*(listelmd[-1+i].a2x-listelmd[-1+i].a1x); yinter:=listelmd[-1+i].a1y+mu*(listelmd[-1+i].a2y-listelmd[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; incidence:=Pi/2-listelmd[-1+i].anglepolaire+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; surfaceabsorbanteatteinte:=false; surface_future:=sur_lmd; indicesurfacefuture:=i; if ((kxact*(listelmd[-1+i].f1x-listelmd[-1+i].ox)+kyact*(listelmd[-1+i].f1y-listelmd[-1+i].oy))<0) then begin ffx:=listelmd[-1+i].f1x; ffy:=listelmd[-1+i].f1y end else begin ffx:=listelmd[-1+i].f2x; ffy:=listelmd[-1+i].f2y; end; lambda:=((ffx-listelmd[-1+i].ox)*(ffx-listelmd[-1+i].ox)+ (ffy-listelmd[-1+i].oy)*(ffy-listelmd[-1+i].oy))/ (kxact*(ffx-listelmd[-1+i].ox)+kyact*(ffy-listelmd[-1+i].oy)); kxfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listelmd[-1+i].ox-xinter+lambda*kxact)/ sqrt((listelmd[-1+i].ox-xinter+lambda*kxact)*(listelmd[-1+i].ox-xinter+lambda*kxact)+ (listelmd[-1+i].oy-yinter+lambda*kyact)*(listelmd[-1+i].oy-yinter+lambda*kyact)); kyfutur:=-sqrt(kxact*kxact+kyact*kyact)*(listelmd[-1+i].oy-yinter+lambda*kyact)/ sqrt((listelmd[-1+i].ox-xinter+lambda*kxact)*(listelmd[-1+i].ox-xinter+lambda*kxact)+ (listelmd[-1+i].oy-yinter+lambda*kyact)*(listelmd[-1+i].oy-yinter+lambda*kyact)); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=false; normale2cotes:=false; incidentatracer:=false; refracteatracer:=false; if optionsurfacesonde then cheminsup:=(sqr(xinter-listelmd[-1+i].ox)+sqr(yinter-listelmd[-1+i].oy))/2/ listelmd[-1+i].focale; end; end; end; {des lmd} {test sur les miroirs coniques} if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_miroirconique) and not(listemiroirconique[-1+i].concave)) then begin {pour les concaves, le rayon peut avoir plusieurs reflexions successives sur le meme miroir; on ne peut donc pas faire le test sur la surface; on avance le point d'une quantite petite, suffisante pour que le point de contact precdent ne puisse etre recompte} if (listemiroirconique[-1+i].concave and (indicesurfaceactuelle=i) and (surface_actuelle=sur_miroirconique)) then begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end; aaa:=kyact*listemiroirconique[-1+i].parametre+ kyact*listemiroirconique[-1+i].excentricite*cos(listemiroirconique[-1+i].theta0)*(listemiroirconique[-1+i].fx-xact)- kxact*listemiroirconique[-1+i].excentricite*(listemiroirconique[-1+i].fy-yact)*cos(listemiroirconique[-1+i].theta0); bbb:=kxact*listemiroirconique[-1+i].parametre+ kxact*listemiroirconique[-1+i].excentricite*sin(listemiroirconique[-1+i].theta0)*(listemiroirconique[-1+i].fy-yact)- kyact*listemiroirconique[-1+i].excentricite*(listemiroirconique[-1+i].fx-xact)*sin(listemiroirconique[-1+i].theta0); ccc:=kxact*(listemiroirconique[-1+i].fy-yact)-kyact*(listemiroirconique[-1+i].fx-xact); delta:=4*(sqr(bbb)+sqr(aaa)-sqr(ccc)); if delta>=0 then begin if ((aaa+ccc=0) and (bbb<>0)) then begin xxx:=(aaa-ccc)/2/bbb; tata:=2*arctan(xxx); rrr:=listemiroirconique[-1+i].parametre/(1+listemiroirconique[-1+i].excentricite*cos(tata- listemiroirconique[-1+i].theta0)); if abs(kxact)>abs(kyact) then lambda:=(listemiroirconique[-1+i].fx+rrr*cos(tata)-xact)/kxact else lambda:=(listemiroirconique[-1+i].fy+rrr*sin(tata)-yact)/kyact end else if ((delta=0) and (aaa+ccc<>0)) then begin xxx:=-bbb/(aaa+ccc); tata:=2*arctan(xxx); if (1+listemiroirconique[-1+i].excentricite*cos(tata- listemiroirconique[-1+i].theta0))>0 then begin rrr:=listemiroirconique[-1+i].parametre/(1+listemiroirconique[-1+i].excentricite*cos(tata- listemiroirconique[-1+i].theta0)); if abs(kxact)>abs(kyact) then lambda:=(listemiroirconique[-1+i].fx+rrr*cos(tata)-xact)/kxact else lambda:=(listemiroirconique[-1+i].fy+rrr*sin(tata)-yact)/kyact; end else begin rrr:=0; lambda:=0; end; end else begin xxx1:=(-bbb+sqrt(sqr(bbb)+sqr(aaa)-sqr(ccc)))/(aaa+ccc); tata1:=2*arctan(xxx1); if (1+listemiroirconique[-1+i].excentricite*cos(tata1- listemiroirconique[-1+i].theta0))>0 then begin rrr1:=listemiroirconique[-1+i].parametre/(1+listemiroirconique[-1+i].excentricite*cos(tata1- listemiroirconique[-1+i].theta0)); if abs(kxact)>abs(kyact) then lambda1:=(listemiroirconique[-1+i].fx+rrr1*cos(tata1)-xact)/kxact else lambda1:=(listemiroirconique[-1+i].fy+rrr1*sin(tata1)-yact)/kyact; end else begin rrr1:=0; lambda1:=0; end; if tata1<0 then tata1:=tata1+2*Pi; if tata1>2*pi then tata1:=tata1-2*Pi; xxx2:=(-bbb-sqrt(sqr(bbb)+sqr(aaa)-sqr(ccc)))/(aaa+ccc); tata2:=2*arctan(xxx2); if (1+listemiroirconique[-1+i].excentricite*cos(tata2- listemiroirconique[-1+i].theta0))> 0 then begin rrr2:=listemiroirconique[-1+i].parametre/(1+listemiroirconique[-1+i].excentricite*cos(tata2- listemiroirconique[-1+i].theta0)); if abs(kxact)>abs(kyact) then lambda2:=(listemiroirconique[-1+i].fx+rrr2*cos(tata2)-xact)/kxact else lambda2:=(listemiroirconique[-1+i].fy+rrr2*sin(tata2)-yact)/kyact; end else begin rrr2:=0; lambda2:=0; end; if tata2<0 then tata2:=tata2+2*Pi; if tata2>Pi*2 then tata2:=tata2-2*Pi; if ( ((lambda2>0) and (tata2>=listemiroirconique[-1+i].theta1) and (tata2<=listemiroirconique[-1+i].theta2)) or ((lambda2>0) and (tata2+2*Pi>=listemiroirconique[-1+i].theta1) and (tata2+2*Pi<=listemiroirconique[-1+i].theta2)) ) then begin lambda:=lambda2; rrr:=rrr2; tata:=tata2 end else begin lambda:=lambda1; rrr:=rrr1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listemiroirconique[-1+i].theta1) and (tata<=listemiroirconique[-1+i].theta2)) or ((lambda>0) and (tata+2*Pi>=listemiroirconique[-1+i].theta1) and (tata+2*Pi<=listemiroirconique[-1+i].theta2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; {nnnx et nnny sont les composantes de la normale dirigee vers l'interieur} nnnx:=1/sqrt(1+sqr(listemiroirconique[-1+i].excentricite)+2*listemiroirconique[-1+i].excentricite*cos(tata- listemiroirconique[-1+i].theta0))* (-listemiroirconique[-1+i].excentricite*sin(tata-listemiroirconique[-1+i].theta0)*sin(tata)- (1+listemiroirconique[-1+i].excentricite*cos(tata-listemiroirconique[-1+i].theta0))*cos(tata)); nnny:=1/sqrt(1+sqr(listemiroirconique[-1+i].excentricite)+2*listemiroirconique[-1+i].excentricite*cos(tata- listemiroirconique[-1+i].theta0))* (listemiroirconique[-1+i].excentricite*sin(tata-listemiroirconique[-1+i].theta0)*cos(tata)- (1+listemiroirconique[-1+i].excentricite*cos(tata-listemiroirconique[-1+i].theta0))*sin(tata)); if (( (kxact*nnnx+kyact*nnny<0) and not(listemiroirconique[-1+i].concave) ) or ( (kxact*nnnx+kyact*nnny>0) and listemiroirconique[-1+i].concave )) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_miroirconique; indicesurfacefuture:=i; kxfutur:=kxact-2*(kxact*nnnx+kyact*nnny)*nnnx; kyfutur:=kyact-2*(kxact*nnnx+kyact*nnny)*nnny; anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); normaleatracer:=true; normale2cotes:=false; anglepolairenormaleatracer:=donneanglepolairedans02pi(nnnx,nnny); if optionangles then begin incidentatracer:=true; refracteatracer:=false; if listemiroirconique[-1+i].concave then angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) else angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact); end; if not(listemiroirconique[-1+i].concave) then anglepolairenormaleatracer:=anglepolairenormaleatracer+pi; end; end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} if (listemiroirconique[-1+i].concave and (indicesurfaceactuelle=i) and (surface_actuelle=sur_miroirconique)) then begin xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end; end;{des miroirconique} {test sur les miroirs spheriques concaves reels non troues} if nombremscore>0 then for i:=1 to nombremscore do if not(listemscore[-1+i].trou) then { if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then } begin {pour les concaves, le rayon peut avoir plusieurs reflexions successives sur le meme miroir; on ne peut donc pas faire le test sur la surface; on avance le point d'une quantite petite, suffisante pour que le point de contact precdent ne puisse etre recompte} if ((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end; delta:=4*sqr(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listemscore[-1+i].cx)+sqr(yact-listemscore[-1+i].cy)- sqr(listemscore[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listemscore[-1+i].cx, lambda1*kyact+yact-listemscore[-1+i].cy); lambda2:=(-2*(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listemscore[-1+i].cx, lambda2*kyact+yact-listemscore[-1+i].cy); if ( ((lambda2>0) and (tata2>=listemscore[-1+i].theta1) and (tata2<=listemscore[-1+i].theta2)) or ((lambda2>0) and (tata2+2*Pi>=listemscore[-1+i].theta1) and (tata2+2*Pi<=listemscore[-1+i].theta2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listemscore[-1+i].theta1) and (tata<=listemscore[-1+i].theta2)) or ((lambda>0) and (tata+2*Pi>=listemscore[-1+i].theta1) and (tata+2*Pi<=listemscore[-1+i].theta2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (xinter=listemscore[-1+i].cx) then if (listemscore[-1+i].cy>yinter) then anglepolairenormale:=Pi/2 else anglepolairenormale:=-Pi/2 else begin anglepolairenormale:=arctan((listemscore[-1+i].cy-yinter)/(listemscore[-1+i].cx-xinter)); if (listemscore[-1+i].cxPi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscore; indicesurfacefuture:=i; anglepolairefutur:=anglepolairenormale-incidence; normaleatracer:=true; normale2cotes:=false; anglepolairenormaleatracer:=anglepolairenormale; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) ; end; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-Pi*2; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; kxfutur:=sqrt(sqr(kxact)+sqr(kyact))*cos(anglepolairefutur); kyfutur:=sqrt(sqr(kxact)+sqr(kyact))*sin(anglepolairefutur); end; end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} if ((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then begin xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end;end;{des mscore} {test sur les yeux} if nombreoeil>0 then for i:=1 to nombreoeil do { if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_oeil)) then } begin tati1:=listeoeil[-1+i].anglepolaire-Pi/6; tati2:=listeoeil[-1+i].anglepolaire+Pi/6; if tati1<0 then begin tati1:=tati1+2*Pi; tati2:=tati2+2*Pi; end; delta:=4*sqr(kxact*(xact-listeoeil[-1+i].cx)+kyact*(yact-listeoeil[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listeoeil[-1+i].cx)+sqr(yact-listeoeil[-1+i].cy)- sqr(listeoeil[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listeoeil[-1+i].cx)+kyact*(yact-listeoeil[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listeoeil[-1+i].cx)+kyact*(yact-listeoeil[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listeoeil[-1+i].cx, lambda1*kyact+yact-listeoeil[-1+i].cy); lambda2:=(-2*(kxact*(xact-listeoeil[-1+i].cx)+kyact*(yact-listeoeil[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listeoeil[-1+i].cx, lambda2*kyact+yact-listeoeil[-1+i].cy); if ( ((lambda2>0) and (tata2>=tati1) and (tata2<=tati2)) or ((lambda2>0) and (tata2+2*Pi>=tati1) and (tata2+2*Pi<=tati2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=tati1) and (tata<=tati2)) or ((lambda>0) and (tata+2*Pi>=tati1) and (tata+2*Pi<=tati2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; surfaceabsorbanteatteinte:=true; surface_future:=sur_oeil; indicesurfacefuture:=i; end; end; end; end;{des oeil} {test sur les yeux, suite} if nombreoeil>0 then for i:=1 to nombreoeil do { if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_oeil)) then } begin tati1:=listeoeil[-1+i].anglepolaire-Pi/2; tati2:=listeoeil[-1+i].anglepolaire-Pi/2+Pi/3+Pi/20; if tati1<0 then begin tati1:=tati1+2*Pi; tati2:=tati2+2*Pi; end; delta:=4*sqr(kxact*(xact-listeoeil[-1+i].c1x)+kyact*(yact-listeoeil[-1+i].c1y))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listeoeil[-1+i].c1x)+sqr(yact-listeoeil[-1+i].c1y)- sqr(listeoeil[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listeoeil[-1+i].c1x)+kyact*(yact-listeoeil[-1+i].c1y))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listeoeil[-1+i].c1x)+kyact*(yact-listeoeil[-1+i].c1y)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listeoeil[-1+i].c1x, lambda1*kyact+yact-listeoeil[-1+i].c1y); lambda2:=(-2*(kxact*(xact-listeoeil[-1+i].c1x)+kyact*(yact-listeoeil[-1+i].c1y)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listeoeil[-1+i].c1x, lambda2*kyact+yact-listeoeil[-1+i].c1y); if ( ((lambda2>0) and (tata2>=tati1) and (tata2<=tati2)) or ((lambda2>0) and (tata2+2*Pi>=tati1) and (tata2+2*Pi<=tati2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=tati1) and (tata<=tati2)) or ((lambda>0) and (tata+2*Pi>=tati1) and (tata+2*Pi<=tati2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; surfaceabsorbanteatteinte:=true; surface_future:=sur_oeil; indicesurfacefuture:=i; end; end; end; end;{des oeil} {test sur les yeux, suite et fin } if nombreoeil>0 then for i:=1 to nombreoeil do { if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_oeil)) then } begin tati1:=listeoeil[-1+i].anglepolaire+Pi/2-Pi/3-Pi/20; tati2:=listeoeil[-1+i].anglepolaire+Pi/2; if tati1<0 then begin tati1:=tati1+2*Pi; tati2:=tati2+2*Pi; end; delta:=4*sqr(kxact*(xact-listeoeil[-1+i].c2x)+kyact*(yact-listeoeil[-1+i].c2y))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listeoeil[-1+i].c2x)+sqr(yact-listeoeil[-1+i].c2y)- sqr(listeoeil[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listeoeil[-1+i].c2x)+kyact*(yact-listeoeil[-1+i].c2y))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listeoeil[-1+i].c2x)+kyact*(yact-listeoeil[-1+i].c2y)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listeoeil[-1+i].c2x, lambda1*kyact+yact-listeoeil[-1+i].c2y); lambda2:=(-2*(kxact*(xact-listeoeil[-1+i].c2x)+kyact*(yact-listeoeil[-1+i].c2y)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listeoeil[-1+i].c2x, lambda2*kyact+yact-listeoeil[-1+i].c2y); if ( ((lambda2>0) and (tata2>=tati1) and (tata2<=tati2)) or ((lambda2>0) and (tata2+2*Pi>=tati1) and (tata2+2*Pi<=tati2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=tati1) and (tata<=tati2)) or ((lambda>0) and (tata+2*Pi>=tati1) and (tata+2*Pi<=tati2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; surfaceabsorbanteatteinte:=true; surface_future:=sur_oeil; indicesurfacefuture:=i; end; end; end; end;{des oeil} {test sur les miroirs spheriques concaves reels troues, 1ere partie} if nombremscore>0 then for i:=1 to nombremscore do if (listemscore[-1+i].trou) then { if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then } begin {pour les concaves, le rayon peut avoir plusieurs reflexions successives sur le meme miroir; on ne peut donc pas faire le test sur la surface; on avance le point d'une quantite petite, suffisante pour que le point de contact precdent ne puisse etre recompte} if ((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end; delta:=4*sqr(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listemscore[-1+i].cx)+sqr(yact-listemscore[-1+i].cy)- sqr(listemscore[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listemscore[-1+i].cx, lambda1*kyact+yact-listemscore[-1+i].cy); lambda2:=(-2*(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listemscore[-1+i].cx, lambda2*kyact+yact-listemscore[-1+i].cy); if ( ((lambda2>0) and (tata2>=listemscore[-1+i].theta1) and (tata2<=listemscore[-1+i].theta1p)) or ((lambda2>0) and (tata2+2*Pi>=listemscore[-1+i].theta1) and (tata2+2*Pi<=listemscore[-1+i].theta1p)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listemscore[-1+i].theta1) and (tata<=listemscore[-1+i].theta1p)) or ((lambda>0) and (tata+2*Pi>=listemscore[-1+i].theta1) and (tata+2*Pi<=listemscore[-1+i].theta1p)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (xinter=listemscore[-1+i].cx) then if (listemscore[-1+i].cy>yinter) then anglepolairenormale:=Pi/2 else anglepolairenormale:=-Pi/2 else begin anglepolairenormale:=arctan((listemscore[-1+i].cy-yinter)/(listemscore[-1+i].cx-xinter)); if (listemscore[-1+i].cxPi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscore; indicesurfacefuture:=i; anglepolairefutur:=anglepolairenormale-incidence; normaleatracer:=true; normale2cotes:=false; anglepolairenormaleatracer:=anglepolairenormale; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) ; end; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-Pi*2; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; kxfutur:=sqrt(sqr(kxact)+sqr(kyact))*cos(anglepolairefutur); kyfutur:=sqrt(sqr(kxact)+sqr(kyact))*sin(anglepolairefutur); end; end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} if ((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then begin xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end;end;{des mscore} {test sur les miroirs spheriques concaves reels troues, 2eme partie} if nombremscore>0 then for i:=1 to nombremscore do if (listemscore[-1+i].trou) then { if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then } begin {pour les concaves, le rayon peut avoir plusieurs reflexions successives sur le meme miroir; on ne peut donc pas faire le test sur la surface; on avance le point d'une quantite petite, suffisante pour que le point de contact precdent ne puisse etre recompte} if ((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end; delta:=4*sqr(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listemscore[-1+i].cx)+sqr(yact-listemscore[-1+i].cy)- sqr(listemscore[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listemscore[-1+i].cx, lambda1*kyact+yact-listemscore[-1+i].cy); lambda2:=(-2*(kxact*(xact-listemscore[-1+i].cx)+kyact*(yact-listemscore[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listemscore[-1+i].cx, lambda2*kyact+yact-listemscore[-1+i].cy); if ( ((lambda2>0) and (tata2>=listemscore[-1+i].theta2p) and (tata2<=listemscore[-1+i].theta2)) or ((lambda2>0) and (tata2+2*Pi>=listemscore[-1+i].theta2p) and (tata2+2*Pi<=listemscore[-1+i].theta2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listemscore[-1+i].theta2p) and (tata<=listemscore[-1+i].theta2)) or ((lambda>0) and (tata+2*Pi>=listemscore[-1+i].theta2p) and (tata+2*Pi<=listemscore[-1+i].theta2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (xinter=listemscore[-1+i].cx) then if (listemscore[-1+i].cy>yinter) then anglepolairenormale:=Pi/2 else anglepolairenormale:=-Pi/2 else begin anglepolairenormale:=arctan((listemscore[-1+i].cy-yinter)/(listemscore[-1+i].cx-xinter)); if (listemscore[-1+i].cxPi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscore; indicesurfacefuture:=i; anglepolairefutur:=anglepolairenormale-incidence; normaleatracer:=true; normale2cotes:=false; anglepolairenormaleatracer:=anglepolairenormale; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) ; end; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-Pi*2; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; kxfutur:=sqrt(sqr(kxact)+sqr(kyact))*cos(anglepolairefutur); kyfutur:=sqrt(sqr(kxact)+sqr(kyact))*sin(anglepolairefutur); end; end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} if ((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscore)) then begin xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end;end;{des mscore} {test sur les spheres refractantes} if nombresphere>0 then for i:=1 to nombresphere do begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; delta:=4*sqr(kxact*(xact-listesphere[-1+i].cx)+kyact*(yact-listesphere[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listesphere[-1+i].cx)+sqr(yact-listesphere[-1+i].cy)- sqr(listesphere[-1+i].rayon)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listesphere[-1+i].cx)+kyact*(yact-listesphere[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listesphere[-1+i].cx)+kyact*(yact-listesphere[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); lambda2:=(-2*(kxact*(xact-listesphere[-1+i].cx)+kyact*(yact-listesphere[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); if (lambda2>0) then lambda:=lambda2 else lambda:=lambda1; end; if (lambda>0) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; nnx:=(xinter-listesphere[-1+i].cx); nny:=(yinter-listesphere[-1+i].cy); normaleatracer:=true; normale2cotes:=true; anglepolairenormaleatracer:=donneanglepolairedans02pi(nnx,nny); if optionangles then begin incidentatracer:=true; refracteatracer:=false; if (nnx*kxact+nny*kyact<0) then angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) else angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact); end; surfaceabsorbanteatteinte:=false; surface_future:=sur_sphere; indicesurfacefuture:=i; {rayon entrant} if (nnx*kxact+nny*kyact<0) then begin case couleur of clred: indiceoptiquefutur:=listesphere[-1+i].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+i].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+i].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+ kyact*((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon)); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+kyact* ((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon))* ((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon) -((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+ kyact*((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon))* ((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon)-((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon) *sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon rentre} {rayon sortant} if (nnx*kxact+nny*kyact>0) then begin case couleur of clred: indiceoptiquefutur:=indice_rouge_par_defaut; clgreen: indiceoptiquefutur:=indice_vert_par_defaut; clblue: indiceoptiquefutur:=indice_bleu_par_defaut; end; if nombrepolycercle>0 then for iii:=1 to nombrepolycercle do if listepolycercle[-1+iii].estou(xinter+(xinter-listesphere[-1+i].cx)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+(yinter-listesphere[-1+i].cy)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+iii].indicebleu; end; if nombrepolyhedre>0 then for iii:=1 to nombrepolyhedre do if listepolyhedre[-1+iii].estou(xinter+(xinter-listesphere[-1+i].cx)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+(yinter-listesphere[-1+i].cy)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+iii].indicebleu; end; if nombresphere>0 then for iii:=1 to nombresphere do if listesphere[-1+iii].estou(xinter+(xinter-listesphere[-1+i].cx)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+(yinter-listesphere[-1+i].cy)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listesphere[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+iii].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+iii].indicebleu; end; if nombreprisme>0 then for iii:=1 to nombreprisme do if listeprisme[-1+iii].estou(xinter+(xinter-listesphere[-1+i].cx)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+(yinter-listesphere[-1+i].cy)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listeprisme[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+iii].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+iii].indicebleu; end; if nombrelec>0 then for iii:=1 to nombrelec do if listelec[-1+iii].estou(xinter+(xinter-listesphere[-1+i].cx)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+(yinter-listesphere[-1+i].cy)/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listelec[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+iii].indicevert; clblue: indiceoptiquefutur:=listelec[-1+iii].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+kyact* ((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon)); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+kyact* ((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon))* ((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+kyact* ((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon))* ((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon)+((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon)*sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon sort} if nnx=0 then if nny>0 then agp:=Pi/2 else agp:=-Pi/2 else begin agp:=arctan(nny/nnx); if nnx<0 then agp:=agp+Pi; end; {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+ kyact*((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon)>0) then if ((listesphere[-1+i].reflechisortant=toujoursreflechi) or (unrefracte and (listesphere[-1+i].reflechisortant=reflechisirefracte)) or (not(unrefracte) and (listesphere[-1+i].reflechisortant=reflechisipasrefracte))) then begin agp:=agp+pi/2; surfaceabsorbanteatteinte:=false; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est sortant} {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*((xinter-listesphere[-1+i].cx)/listesphere[-1+i].rayon)+ kyact*((yinter-listesphere[-1+i].cy)/listesphere[-1+i].rayon)<0) then if ((listesphere[-1+i].reflechientrant=toujoursreflechi) or (unrefracte and (listesphere[-1+i].reflechientrant=reflechisirefracte)) or (not(unrefracte) and (listesphere[-1+i].reflechientrant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; agp:=agp-pi/2; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est entrant} end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end;{des sphere} {test sur les lecs refractantes, 1ere face} if nombrelec>0 then for i:=1 to nombrelec do begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; delta:=4*sqr(kxact*(xact-listelec[-1+i].c1x)+kyact*(yact-listelec[-1+i].c1y))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listelec[-1+i].c1x)+sqr(yact-listelec[-1+i].c1y)- sqr(abs(listelec[-1+i].r1))); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listelec[-1+i].c1x)+kyact*(yact-listelec[-1+i].c1y))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listelec[-1+i].c1x)+kyact*(yact-listelec[-1+i].c1y)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listelec[-1+i].c1x, lambda1*kyact+yact-listelec[-1+i].c1y); lambda2:=(-2*(kxact*(xact-listelec[-1+i].c1x)+kyact*(yact-listelec[-1+i].c1y)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listelec[-1+i].c1x, lambda2*kyact+yact-listelec[-1+i].c1y); if ( ((lambda2>0) and (tata2>=listelec[-1+i].theta1_1) and (tata2<=listelec[-1+i].theta2_1)) or ((lambda2>0) and (tata2+2*Pi>=listelec[-1+i].theta1_1) and (tata2+2*Pi<=listelec[-1+i].theta2_1)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listelec[-1+i].theta1_1) and (tata<=listelec[-1+i].theta2_1)) or ((lambda>0) and (tata+2*Pi>=listelec[-1+i].theta1_1) and (tata+2*Pi<=listelec[-1+i].theta2_1)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (kxact*(xinter-listelec[-1+i].c1x)+kyact*(yinter-listelec[-1+i].c1y)<0) then begin nnx:=(xinter-listelec[-1+i].c1x); nny:=(yinter-listelec[-1+i].c1y); end else begin nnx:=-(xinter-listelec[-1+i].c1x); nny:=-(yinter-listelec[-1+i].c1y); end; surfaceabsorbanteatteinte:=false; surface_future:=sur_lec; indicesurfacefuture:=i; normaleatracer:=true; normale2cotes:=true; anglepolairenormaleatracer:=donneanglepolairedans02pi(nnx,nny); if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) ; end; {rayon entrant} if {(nnx*kxact+nny*kyact<0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iinterieur then begin case couleur of clred: indiceoptiquefutur:=listelec[-1+i].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+i].indicevert; clblue: indiceoptiquefutur:=listelec[-1+i].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+ kyact*((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; if (kxact*(xinter-listelec[-1+i].c1x)+kyact*(yinter-listelec[-1+i].c1y)<0) then begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+kyact* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1)) -((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+ kyact*((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))-((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)) *sqrt(patate); end else begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+kyact* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1)) +((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+ kyact*((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))+((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)) *sqrt(patate); end; anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon rentre} {rayon sortant} if {(nnx*kxact+nny*kyact>0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iexterieur then begin case couleur of clred: indiceoptiquefutur:=indice_rouge_par_defaut; clgreen: indiceoptiquefutur:=indice_vert_par_defaut; clblue: indiceoptiquefutur:=indice_bleu_par_defaut; end; if nombrepolycercle>0 then for iii:=1 to nombrepolycercle do if listepolycercle[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+iii].indicebleu; end; if nombrepolyhedre>0 then for iii:=1 to nombrepolyhedre do if listepolyhedre[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+iii].indicebleu; end; if nombreprisme>0 then for iii:=1 to nombreprisme do if listeprisme[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listeprisme[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+iii].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+iii].indicebleu; end; if nombresphere>0 then for iii:=1 to nombresphere do if listesphere[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listesphere[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+iii].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+iii].indicebleu; end; if nombrelec>0 then for iii:=1 to nombrelec do if listelec[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listelec[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+iii].indicevert; clblue: indiceoptiquefutur:=listelec[-1+iii].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+kyact* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; if (kxact*(xinter-listelec[-1+i].c1x)+kyact*(yinter-listelec[-1+i].c1y)<0) then begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+kyact* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))-((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+kyact* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))-((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))*sqrt(patate); end else begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+kyact* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+kyact* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1)))* ((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))+((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))*sqrt(patate); end; anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon sort} if nnx=0 then if nny>0 then agp:=Pi/2 else agp:=-Pi/2 else begin agp:=arctan(nny/nnx); if nnx<0 then agp:=agp+Pi; end; {rayon reflechi dans le cas ou le refracte est entrant} if {(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+ kyact*((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))>0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iinterieur then if ((listelec[-1+i].reflechisortant=toujoursreflechi) or (unrefracte and (listelec[-1+i].reflechisortant=reflechisirefracte)) or (not(unrefracte) and (listelec[-1+i].reflechisortant=reflechisipasrefracte))) then begin agp:=agp+pi/2; surfaceabsorbanteatteinte:=false; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est sortant} {rayon reflechi dans le cas ou le refracte est entrant} if {(kxact*((xinter-listelec[-1+i].c1x)/abs(listelec[-1+i].r1))+ kyact*((yinter-listelec[-1+i].c1y)/abs(listelec[-1+i].r1))<0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iexterieur then if ((listelec[-1+i].reflechientrant=toujoursreflechi) or (unrefracte and (listelec[-1+i].reflechientrant=reflechisirefracte)) or (not(unrefracte) and (listelec[-1+i].reflechientrant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; agp:=agp-pi/2; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est entrant} end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end;{des lec, 1ere face} {test sur les lecs refractantes, 2eme face} if nombrelec>0 then for i:=1 to nombrelec do begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; delta:=4*sqr(kxact*(xact-listelec[-1+i].c2x)+kyact*(yact-listelec[-1+i].c2y))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listelec[-1+i].c2x)+sqr(yact-listelec[-1+i].c2y)- sqr(abs(listelec[-1+i].r2))); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listelec[-1+i].c2x)+kyact*(yact-listelec[-1+i].c2y))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listelec[-1+i].c2x)+kyact*(yact-listelec[-1+i].c2y)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listelec[-1+i].c2x, lambda1*kyact+yact-listelec[-1+i].c2y); lambda2:=(-2*(kxact*(xact-listelec[-1+i].c2x)+kyact*(yact-listelec[-1+i].c2y)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listelec[-1+i].c2x, lambda2*kyact+yact-listelec[-1+i].c2y); if ( ((lambda2>0) and (tata2>=listelec[-1+i].theta1_2) and (tata2<=listelec[-1+i].theta2_2)) or ((lambda2>0) and (tata2+2*Pi>=listelec[-1+i].theta1_2) and (tata2+2*Pi<=listelec[-1+i].theta2_2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listelec[-1+i].theta1_2) and (tata<=listelec[-1+i].theta2_2)) or ((lambda>0) and (tata+2*Pi>=listelec[-1+i].theta1_2) and (tata+2*Pi<=listelec[-1+i].theta2_2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (kxact*(xinter-listelec[-1+i].c2x)+kyact*(yinter-listelec[-1+i].c2y)<0) then begin nnx:=(xinter-listelec[-1+i].c2x); nny:=(yinter-listelec[-1+i].c2y); end else begin nnx:=-(xinter-listelec[-1+i].c2x); nny:=-(yinter-listelec[-1+i].c2y); end; normaleatracer:=true; normale2cotes:=true; anglepolairenormaleatracer:=donneanglepolairedans02pi(nnx,nny); if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) ; end; surfaceabsorbanteatteinte:=false; surface_future:=sur_lec; indicesurfacefuture:=i; {rayon entrant} if {(nnx*kxact+nny*kyact<0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iinterieur then begin case couleur of clred: indiceoptiquefutur:=listelec[-1+i].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+i].indicevert; clblue: indiceoptiquefutur:=listelec[-1+i].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+ kyact*((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; if (kxact*(xinter-listelec[-1+i].c2x)+kyact*(yinter-listelec[-1+i].c2y)<0) then begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+kyact* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2)) -((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+ kyact*((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))-((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)) *sqrt(patate); end else begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+kyact* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2)) +((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+ kyact*((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))+((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)) *sqrt(patate); end; anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon rentre} {rayon sortant} if {(nnx*kxact+nny*kyact>0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iexterieur then begin case couleur of clred: indiceoptiquefutur:=indice_rouge_par_defaut; clgreen: indiceoptiquefutur:=indice_vert_par_defaut; clblue: indiceoptiquefutur:=indice_bleu_par_defaut; end; if nombrepolycercle>0 then for iii:=1 to nombrepolycercle do if listepolycercle[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+iii].indicebleu; end; if nombrepolyhedre>0 then for iii:=1 to nombrepolyhedre do if listepolyhedre[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+iii].indicebleu; end; if nombreprisme>0 then for iii:=1 to nombreprisme do if listeprisme[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listeprisme[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+iii].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+iii].indicebleu; end; if nombresphere>0 then for iii:=1 to nombresphere do if listesphere[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listesphere[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+iii].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+iii].indicebleu; end; if nombrelec>0 then for iii:=1 to nombrelec do if listelec[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listelec[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+iii].indicevert; clblue: indiceoptiquefutur:=listelec[-1+iii].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+kyact* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; if (kxact*(xinter-listelec[-1+i].c2x)+kyact*(yinter-listelec[-1+i].c2y)<0) then begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+kyact* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))-((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+kyact* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))-((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))*sqrt(patate); end else begin kxfutur:=kxact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+kyact* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+kyact* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2)))* ((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))+((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))*sqrt(patate); end; anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon sort} if nnx=0 then if nny>0 then agp:=Pi/2 else agp:=-Pi/2 else begin agp:=arctan(nny/nnx); if nnx<0 then agp:=agp+Pi; end; {rayon reflechi dans le cas ou le refracte est entrant} if {(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+ kyact*((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))>0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iinterieur then if ((listelec[-1+i].reflechisortant=toujoursreflechi) or (unrefracte and (listelec[-1+i].reflechisortant=reflechisirefracte)) or (not(unrefracte) and (listelec[-1+i].reflechisortant=reflechisipasrefracte))) then begin agp:=agp+pi/2; surfaceabsorbanteatteinte:=false; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est sortant} {rayon reflechi dans le cas ou le refracte est entrant} if {(kxact*((xinter-listelec[-1+i].c2x)/abs(listelec[-1+i].r2))+ kyact*((yinter-listelec[-1+i].c2y)/abs(listelec[-1+i].r2))<0)} listelec[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iexterieur then if ((listelec[-1+i].reflechientrant=toujoursreflechi) or (unrefracte and (listelec[-1+i].reflechientrant=reflechisirefracte)) or (not(unrefracte) and (listelec[-1+i].reflechientrant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; agp:=agp-pi/2; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est entrant} end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end;{des lec, 2eme fce} {test sur les lecs, bord de la lentille=surface absorbante} if nombrelec>0 then for i:=1 to nombrelec do if Listelec[-1+i].tronque then if ((kyact*(Listelec[-1+i].a2x-Listelec[-1+i].a1x)) <> (kxact*(Listelec[-1+i].a2y-Listelec[-1+i].a1y )) ) then begin mu:=(kyact*(xact-Listelec[-1+i].a1x)-kxact*(yact-Listelec[-1+i].a1y))/ (kyact*(Listelec[-1+i].a2x-Listelec[-1+i].a1x)- kxact*(Listelec[-1+i].a2y-Listelec[-1+i].a1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listelec[-1+i].a2x-Listelec[-1+i].a1x) +Listelec[-1+i].a1x-xact)/kxact else lambda:=(mu*(Listelec[-1+i].a2y-Listelec[-1+i].a1y)+ Listelec[-1+i].a1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listelec[-1+i].a1x+mu*(Listelec[-1+i].a2x-Listelec[-1+i].a1x); yinter:=Listelec[-1+i].a1y+mu*(Listelec[-1+i].a2y-Listelec[-1+i].a1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; kxfutur:=kxact; kyfutur:=kyact; yfutur:=yinter; bordureatteinte:=false; naissance:=false; incidentatracer:=false; refracteatracer:=false; normaleatracer:=false; normale2cotes:=false; surfaceabsorbanteatteinte:=true; end; end; end; {des lecs} {test sur les lecs, bord de la lentille=surface absorbante} if nombrelec>0 then for i:=1 to nombrelec do if Listelec[-1+i].tronque then if ((kyact*(Listelec[-1+i].b2x-Listelec[-1+i].b1x)) <> (kxact*(Listelec[-1+i].b2y-Listelec[-1+i].b1y )) ) then begin mu:=(kyact*(xact-Listelec[-1+i].b1x)-kxact*(yact-Listelec[-1+i].b1y))/ (kyact*(Listelec[-1+i].b2x-Listelec[-1+i].b1x)- kxact*(Listelec[-1+i].b2y-Listelec[-1+i].b1y )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listelec[-1+i].b2x-Listelec[-1+i].b1x) +Listelec[-1+i].b1x-xact)/kxact else lambda:=(mu*(Listelec[-1+i].b2y-Listelec[-1+i].b1y)+ Listelec[-1+i].b1y-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listelec[-1+i].b1x+mu*(Listelec[-1+i].b2x-Listelec[-1+i].b1x); yinter:=Listelec[-1+i].b1y+mu*(Listelec[-1+i].b2y-Listelec[-1+i].b1y); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon))then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; kxfutur:=kxact; kyfutur:=kyact; yfutur:=yinter; bordureatteinte:=false; naissance:=false; normaleatracer:=false; normale2cotes:=false; surfaceabsorbanteatteinte:=true; incidentatracer:=false; refracteatracer:=false; normaleatracer:=false; normale2cotes:=false; end; end; end; {des lecs} {test sur les miroirs spheriques convexes reels non troues} if nombremscere>0 then for i:=1 to nombremscere do if not(listemscere[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscere)) then begin delta:=4*sqr(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listemscere[-1+i].cx)+sqr(yact-listemscere[-1+i].cy)- sqr(listemscere[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listemscere[-1+i].cx, lambda1*kyact+yact-listemscere[-1+i].cy); lambda2:=(-2*(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listemscere[-1+i].cx, lambda2*kyact+yact-listemscere[-1+i].cy); if ( ((lambda2>0) and (tata2>=listemscere[-1+i].theta1) and (tata2<=listemscere[-1+i].theta2)) or ((lambda2>0) and (tata2+2*Pi>=listemscere[-1+i].theta1) and (tata2+2*Pi<=listemscere[-1+i].theta2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listemscere[-1+i].theta1) and (tata<=listemscere[-1+i].theta2)) or ((lambda>0) and (tata+2*Pi>=listemscere[-1+i].theta1) and (tata+2*Pi<=listemscere[-1+i].theta2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (xinter=listemscere[-1+i].cx) then if (listemscere[-1+i].cy>yinter) then anglepolairenormale:=Pi/2 else anglepolairenormale:=-Pi/2 else begin anglepolairenormale:=arctan((listemscere[-1+i].cy-yinter)/(listemscere[-1+i].cx-xinter)); if (listemscere[-1+i].cxPi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscere; indicesurfacefuture:=i; normaleatracer:=true; normale2cotes:=false; anglepolairenormaleatracer:=anglepolairenormale; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) ; end; anglepolairefutur:=anglepolairenormale-incidence; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-Pi*2; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; kxfutur:=sqrt(sqr(kxact)+sqr(kyact))*cos(anglepolairefutur); kyfutur:=sqrt(sqr(kxact)+sqr(kyact))*sin(anglepolairefutur); end; end; end; end; end;{des mscere} {test sur les miroirs spheriques convexes reels troues, 1ere partie} if nombremscere>0 then for i:=1 to nombremscere do if (listemscere[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscere)) then begin delta:=4*sqr(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listemscere[-1+i].cx)+sqr(yact-listemscere[-1+i].cy)- sqr(listemscere[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listemscere[-1+i].cx, lambda1*kyact+yact-listemscere[-1+i].cy); lambda2:=(-2*(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listemscere[-1+i].cx, lambda2*kyact+yact-listemscere[-1+i].cy); if ( ((lambda2>0) and (tata2>=listemscere[-1+i].theta1) and (tata2<=listemscere[-1+i].theta1p)) or ((lambda2>0) and (tata2+2*Pi>=listemscere[-1+i].theta1) and (tata2+2*Pi<=listemscere[-1+i].theta1p)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listemscere[-1+i].theta1) and (tata<=listemscere[-1+i].theta1p)) or ((lambda>0) and (tata+2*Pi>=listemscere[-1+i].theta1) and (tata+2*Pi<=listemscere[-1+i].theta1p)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (xinter=listemscere[-1+i].cx) then if (listemscere[-1+i].cy>yinter) then anglepolairenormale:=Pi/2 else anglepolairenormale:=-Pi/2 else begin anglepolairenormale:=arctan((listemscere[-1+i].cy-yinter)/(listemscere[-1+i].cx-xinter)); if (listemscere[-1+i].cxPi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscere; indicesurfacefuture:=i; normaleatracer:=true; normale2cotes:=false; anglepolairenormaleatracer:=anglepolairenormale; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) ; end; anglepolairefutur:=anglepolairenormale-incidence; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-Pi*2; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; kxfutur:=sqrt(sqr(kxact)+sqr(kyact))*cos(anglepolairefutur); kyfutur:=sqrt(sqr(kxact)+sqr(kyact))*sin(anglepolairefutur); end; end; end; end; end;{des mscere} {test sur les miroirs spheriques convexes reels troues, 2eme partie} if nombremscere>0 then for i:=1 to nombremscere do if (listemscere[-1+i].trou) then if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_mscere)) then begin delta:=4*sqr(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listemscere[-1+i].cx)+sqr(yact-listemscere[-1+i].cy)- sqr(listemscere[-1+i].rayoncourbure)); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listemscere[-1+i].cx, lambda1*kyact+yact-listemscere[-1+i].cy); lambda2:=(-2*(kxact*(xact-listemscere[-1+i].cx)+kyact*(yact-listemscere[-1+i].cy)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listemscere[-1+i].cx, lambda2*kyact+yact-listemscere[-1+i].cy); if ( ((lambda2>0) and (tata2>=listemscere[-1+i].theta2p) and (tata2<=listemscere[-1+i].theta2)) or ((lambda2>0) and (tata2+2*Pi>=listemscere[-1+i].theta2p) and (tata2+2*Pi<=listemscere[-1+i].theta2)) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listemscere[-1+i].theta2p) and (tata<=listemscere[-1+i].theta2)) or ((lambda>0) and (tata+2*Pi>=listemscere[-1+i].theta2p) and (tata+2*Pi<=listemscere[-1+i].theta2)) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (xinter=listemscere[-1+i].cx) then if (listemscere[-1+i].cy>yinter) then anglepolairenormale:=Pi/2 else anglepolairenormale:=-Pi/2 else begin anglepolairenormale:=arctan((listemscere[-1+i].cy-yinter)/(listemscere[-1+i].cx-xinter)); if (listemscere[-1+i].cxPi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if ((incidence>Pi/2) or (incidence<-Pi/2)) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; surface_future:=sur_mscere; indicesurfacefuture:=i; normaleatracer:=true; normale2cotes:=false; anglepolairenormaleatracer:=anglepolairenormale; if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, xact,yact) ; end; anglepolairefutur:=anglepolairenormale-incidence; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-Pi*2; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; kxfutur:=sqrt(sqr(kxact)+sqr(kyact))*cos(anglepolairefutur); kyfutur:=sqrt(sqr(kxact)+sqr(kyact))*sin(anglepolairefutur); end; end; end; end; end;{des mscere} {cas des polyhedres} if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_polyhedre) and (coteactuel=j)) then if ((kyact*(Listepolyhedre[-1+i].messommets[j+1].ax-Listepolyhedre[-1+i].messommets[j].ax)) <> (kxact*(Listepolyhedre[-1+i].messommets[j+1].ay-Listepolyhedre[-1+i].messommets[j].ay )) ) then begin mu:=(kyact*(xact-Listepolyhedre[-1+i].messommets[j].ax)-kxact*(yact- Listepolyhedre[-1+i].messommets[j].ay))/ (kyact*(Listepolyhedre[-1+i].messommets[j+1].ax- Listepolyhedre[-1+i].messommets[j].ax)- kxact*(Listepolyhedre[-1+i].messommets[j+1].ay-Listepolyhedre[-1+i].messommets[j].ay )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listepolyhedre[-1+i].messommets[j+1].ax-Listepolyhedre[-1+i].messommets[j].ax) +Listepolyhedre[-1+i].messommets[j].ax-xact)/kxact else lambda:=(mu*(Listepolyhedre[-1+i].messommets[j+1].ay- Listepolyhedre[-1+i].messommets[j].ay)+ Listepolyhedre[-1+i].messommets[j].ay-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listepolyhedre[-1+i].messommets[j].ax+ mu*(Listepolyhedre[-1+i].messommets[j+1].ax-Listepolyhedre[-1+i].messommets[j].ax); yinter:=Listepolyhedre[-1+i].messommets[j].ay+ mu*(Listepolyhedre[-1+i].messommets[j+1].ay-Listepolyhedre[-1+i].messommets[j].ay); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; surface_future:=sur_polyhedre; indicesurfacefuture:=i; cotefutur:=j; normaleatracer:=true; normale2cotes:=true; anglepolairenormaleatracer:=donneanglepolairedans02pi(listepolyhedre[-1+i].nx[j],listepolyhedre[-1+i].ny[j]); if optionangles then begin incidentatracer:=true; refracteatracer:=false; if (kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j]<0) then angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) else angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact); end; {si le rayon sort} if (kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j]>0) then begin {determination de l'indice du milieu de sortie} case couleur of clred: indiceoptiquefutur:=indice_rouge_par_defaut; clgreen: indiceoptiquefutur:=indice_vert_par_defaut; clblue: indiceoptiquefutur:=indice_bleu_par_defaut; end; if nombrepolycercle>0 then for iii:=1 to nombrepolycercle do if listepolycercle[-1+iii].estou(xinter+listepolyhedre[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolyhedre[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+iii].indicebleu; end; if nombrepolyhedre>0 then for iii:=1 to nombrepolyhedre do if listepolyhedre[-1+iii].estou(xinter+listepolyhedre[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolyhedre[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+iii].indicebleu; end; if nombreprisme>0 then for iii:=1 to nombreprisme do if listeprisme[-1+iii].estou(xinter+listepolyhedre[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolyhedre[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listeprisme[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+iii].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+iii].indicebleu; end; if nombresphere>0 then for iii:=1 to nombresphere do if listesphere[-1+iii].estou(xinter+listepolyhedre[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolyhedre[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listesphere[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+iii].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+iii].indicebleu; end; if nombrelec>0 then for iii:=1 to nombrelec do if listelec[-1+iii].estou(xinter+listepolyhedre[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolyhedre[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listelec[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+iii].indicevert; clblue: indiceoptiquefutur:=listelec[-1+iii].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j]); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j])* listepolyhedre[-1+i].nx[j]+listepolyhedre[-1+i].nx[j]*sqrt(patate); kyfutur:=kyact-(kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j])* listepolyhedre[-1+i].ny[j]+listepolyhedre[-1+i].ny[j]*sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon sort} {si le rayon rentre} if (kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j]<0) then begin case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+i].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+i].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+i].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j]); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j])* listepolyhedre[-1+i].nx[j]-listepolyhedre[-1+i].nx[j]*sqrt(patate); kyfutur:=kyact-(kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j])* listepolyhedre[-1+i].ny[j]-listepolyhedre[-1+i].ny[j]*sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon rentre} {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j]>0) then if ((listepolyhedre[-1+i].reflechisortant=toujoursreflechi) or (unrefracte and (listepolyhedre[-1+i].reflechisortant=reflechisirefracte)) or (not(unrefracte) and (listepolyhedre[-1+i].reflechisortant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; incidence:=Pi/2-Listepolyhedre[-1+i].anglepolaire[j]+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est sortant} {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*listepolyhedre[-1+i].nx[j]+kyact*listepolyhedre[-1+i].ny[j]<0) then if ((listepolyhedre[-1+i].reflechientrant=toujoursreflechi) or (unrefracte and (listepolyhedre[-1+i].reflechientrant=reflechisirefracte)) or (not(unrefracte) and (listepolyhedre[-1+i].reflechientrant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; incidence:=Pi/2-Listepolyhedre[-1+i].anglepolaire[j]+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolyhedre[-1+i].anglepolaire[j]-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est entrant} end; end; end; {des polyhedre} {cas des prismes} if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_prisme) and (coteactuel=j)) then if ((kyact*(Listeprisme[-1+i].messommets[j+1].ax-Listeprisme[-1+i].messommets[j].ax)) <> (kxact*(Listeprisme[-1+i].messommets[j+1].ay-Listeprisme[-1+i].messommets[j].ay )) ) then begin mu:=(kyact*(xact-Listeprisme[-1+i].messommets[j].ax)-kxact*(yact- Listeprisme[-1+i].messommets[j].ay))/ (kyact*(Listeprisme[-1+i].messommets[j+1].ax- Listeprisme[-1+i].messommets[j].ax)- kxact*(Listeprisme[-1+i].messommets[j+1].ay-Listeprisme[-1+i].messommets[j].ay )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listeprisme[-1+i].messommets[j+1].ax-Listeprisme[-1+i].messommets[j].ax) +Listeprisme[-1+i].messommets[j].ax-xact)/kxact else lambda:=(mu*(Listeprisme[-1+i].messommets[j+1].ay- Listeprisme[-1+i].messommets[j].ay)+ Listeprisme[-1+i].messommets[j].ay-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listeprisme[-1+i].messommets[j].ax+ mu*(Listeprisme[-1+i].messommets[j+1].ax-Listeprisme[-1+i].messommets[j].ax); yinter:=Listeprisme[-1+i].messommets[j].ay+ mu*(Listeprisme[-1+i].messommets[j+1].ay-Listeprisme[-1+i].messommets[j].ay); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; surface_future:=sur_prisme; indicesurfacefuture:=i; cotefutur:=j; normaleatracer:=true; normale2cotes:=true; anglepolairenormaleatracer:=donneanglepolairedans02pi(listeprisme[-1+i].nx[j],listeprisme[-1+i].ny[j]); if optionangles then begin incidentatracer:=true; refracteatracer:=false; if (kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j]<0) then angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) else angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact); end; {si le rayon sort} if (kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j]>0) then begin {determination de l'indice du milieu de sortie} case couleur of clred: indiceoptiquefutur:=indice_rouge_par_defaut; clgreen: indiceoptiquefutur:=indice_vert_par_defaut; clblue: indiceoptiquefutur:=indice_bleu_par_defaut; end; if nombrepolycercle>0 then for iii:=1 to nombrepolycercle do if listepolycercle[-1+iii].estou(xinter+listeprisme[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listeprisme[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+iii].indicebleu; end; if nombrepolyhedre>0 then for iii:=1 to nombrepolyhedre do if listepolyhedre[-1+iii].estou(xinter+listeprisme[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listeprisme[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+iii].indicebleu; end; if nombreprisme>0 then for iii:=1 to nombreprisme do if listeprisme[-1+iii].estou(xinter+listeprisme[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listeprisme[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listeprisme[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+iii].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+iii].indicebleu; end; if nombresphere>0 then for iii:=1 to nombresphere do if listesphere[-1+iii].estou(xinter+listeprisme[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listeprisme[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listesphere[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+iii].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+iii].indicebleu; end; if nombrelec>0 then for iii:=1 to nombrelec do if listelec[-1+iii].estou(xinter+listeprisme[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listeprisme[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listelec[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+iii].indicevert; clblue: indiceoptiquefutur:=listelec[-1+iii].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j]); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j])* listeprisme[-1+i].nx[j]+listeprisme[-1+i].nx[j]*sqrt(patate); kyfutur:=kyact-(kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j])* listeprisme[-1+i].ny[j]+listeprisme[-1+i].ny[j]*sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon sort} {si le rayon rentre} if (kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j]<0) then begin case couleur of clred: indiceoptiquefutur:=listeprisme[-1+i].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+i].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+i].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j]); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j])* listeprisme[-1+i].nx[j]-listeprisme[-1+i].nx[j]*sqrt(patate); kyfutur:=kyact-(kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j])* listeprisme[-1+i].ny[j]-listeprisme[-1+i].ny[j]*sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon rentre} {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j]>0) then if ((listeprisme[-1+i].reflechisortant=toujoursreflechi) or (unrefracte and (listeprisme[-1+i].reflechisortant=reflechisirefracte)) or (not(unrefracte) and (listeprisme[-1+i].reflechisortant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; incidence:=Pi/2-Listeprisme[-1+i].anglepolaire[j]+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est sortant} {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*listeprisme[-1+i].nx[j]+kyact*listeprisme[-1+i].ny[j]<0) then if ((listeprisme[-1+i].reflechientrant=toujoursreflechi) or (unrefracte and (listeprisme[-1+i].reflechientrant=reflechisirefracte)) or (not(unrefracte) and (listeprisme[-1+i].reflechientrant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; incidence:=Pi/2-Listeprisme[-1+i].anglepolaire[j]+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listeprisme[-1+i].anglepolaire[j]-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est entrant} end; end; end; {des prisme} {cas des polycercles} if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if listepolycercle[-1+i].rectiligne[j] then { if not((indicesurfaceactuelle=i) and (surface_actuelle=sur_polycercle) and (coteactuel=j)) then } if ((kyact*(Listepolycercle[-1+i].messommets[j+1].ax-Listepolycercle[-1+i].messommets[j].ax)) <> (kxact*(Listepolycercle[-1+i].messommets[j+1].ay-Listepolycercle[-1+i].messommets[j].ay )) ) then begin mu:=(kyact*(xact-Listepolycercle[-1+i].messommets[j].ax)-kxact*(yact- Listepolycercle[-1+i].messommets[j].ay))/ (kyact*(Listepolycercle[-1+i].messommets[j+1].ax- Listepolycercle[-1+i].messommets[j].ax)- kxact*(Listepolycercle[-1+i].messommets[j+1].ay-Listepolycercle[-1+i].messommets[j].ay )); if (abs(kxact)>abs(kyact)) then lambda:=(mu*( Listepolycercle[-1+i].messommets[j+1].ax-Listepolycercle[-1+i].messommets[j].ax) +Listepolycercle[-1+i].messommets[j].ax-xact)/kxact else lambda:=(mu*(Listepolycercle[-1+i].messommets[j+1].ay- Listepolycercle[-1+i].messommets[j].ay)+ Listepolycercle[-1+i].messommets[j].ay-yact)/kyact; if ((mu>=0) and (mu<=1) and (lambda>0)) then begin xinter:=Listepolycercle[-1+i].messommets[j].ax+ mu*(Listepolycercle[-1+i].messommets[j+1].ax-Listepolycercle[-1+i].messommets[j].ax); yinter:=Listepolycercle[-1+i].messommets[j].ay+ mu*(Listepolycercle[-1+i].messommets[j+1].ay-Listepolycercle[-1+i].messommets[j].ay); if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; surface_future:=sur_polycercle; indicesurfacefuture:=i; cotefutur:=j; normaleatracer:=true; normale2cotes:=true; anglepolairenormaleatracer:=donneanglepolairedans02pi(listepolycercle[-1+i].nx[j],listepolycercle[-1+i].ny[j]); if optionangles then begin incidentatracer:=true; refracteatracer:=false; if (kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j]<0) then angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) else angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact); end; {si le rayon sort} if (kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j]>0) then begin {determination de l'indice du milieu de sortie} case couleur of clred: indiceoptiquefutur:=indice_rouge_par_defaut; clgreen: indiceoptiquefutur:=indice_vert_par_defaut; clblue: indiceoptiquefutur:=indice_bleu_par_defaut; end; if nombrepolycercle>0 then for iii:=1 to nombrepolycercle do if listepolycercle[-1+iii].estou(xinter+listepolycercle[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolycercle[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+iii].indicebleu; end; if nombrepolyhedre>0 then for iii:=1 to nombrepolyhedre do if listepolyhedre[-1+iii].estou(xinter+listepolycercle[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolycercle[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+iii].indicebleu; end; if nombreprisme>0 then for iii:=1 to nombreprisme do if listeprisme[-1+iii].estou(xinter+listepolycercle[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolycercle[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listeprisme[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+iii].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+iii].indicebleu; end; if nombresphere>0 then for iii:=1 to nombresphere do if listesphere[-1+iii].estou(xinter+listepolycercle[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolycercle[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listesphere[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+iii].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+iii].indicebleu; end; if nombrelec>0 then for iii:=1 to nombrelec do if listelec[-1+iii].estou(xinter+listepolycercle[-1+i].nx[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)),yinter+listepolycercle[-1+i].ny[j]/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)))=Iinterieur then case couleur of clred: indiceoptiquefutur:=listelec[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+iii].indicevert; clblue: indiceoptiquefutur:=listelec[-1+iii].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j]); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j])* listepolycercle[-1+i].nx[j]+listepolycercle[-1+i].nx[j]*sqrt(patate); kyfutur:=kyact-(kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j])* listepolycercle[-1+i].ny[j]+listepolycercle[-1+i].ny[j]*sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon sort} {si le rayon rentre} if (kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j]<0) then begin case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+i].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+i].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+i].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j]); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; kxfutur:=kxact-(kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j])* listepolycercle[-1+i].nx[j]-listepolycercle[-1+i].nx[j]*sqrt(patate); kyfutur:=kyact-(kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j])* listepolycercle[-1+i].ny[j]-listepolycercle[-1+i].ny[j]*sqrt(patate); anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon rentre} {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j]>0) then if ((listepolycercle[-1+i].reflechisortant=toujoursreflechi) or (unrefracte and (listepolycercle[-1+i].reflechisortant=reflechisirefracte)) or (not(unrefracte) and (listepolycercle[-1+i].reflechisortant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; incidence:=Pi/2-Listepolycercle[-1+i].anglepolaire[j]+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est sortant} {rayon reflechi dans le cas ou le refracte est entrant} if (kxact*listepolycercle[-1+i].nx[j]+kyact*listepolycercle[-1+i].ny[j]<0) then if ((listepolycercle[-1+i].reflechientrant=toujoursreflechi) or (unrefracte and (listepolycercle[-1+i].reflechientrant=reflechisirefracte)) or (not(unrefracte) and (listepolycercle[-1+i].reflechientrant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; incidence:=Pi/2-Listepolycercle[-1+i].anglepolaire[j]+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*Listepolycercle[-1+i].anglepolaire[j]-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon reflechi si le refracte est entrant} end; end; end; {des polycercle, cotes rectilignes} {test sur les lpolycercles, faces circulaires} if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:= 1 to listepolycercle[-1+i].nombresommet do if not(listepolycercle[-1+i].rectiligne[j]) then begin xact:=xact+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; delta:=4*sqr(kxact*(xact-listepolycercle[-1+i].mescentres[j].ax)+kyact*(yact-listepolycercle[-1+i].mescentres[j].ay))-4* (sqr(kxact)+sqr(kyact))*(sqr(xact-listepolycercle[-1+i].mescentres[j].ax)+sqr(yact-listepolycercle[-1+i].mescentres[j].ay)- sqr(abs(listepolycercle[-1+i].rayon[j]))); if delta>=0 then begin if delta=0 then lambda:=(kxact*(xact-listepolycercle[-1+i].mescentres[j].ax)+kyact*(yact-listepolycercle[-1+i].mescentres[j].ay))/ (sqr(kxact)+sqr(kyact)) else begin lambda1:=(-2*(kxact*(xact-listepolycercle[-1+i].mescentres[j].ax)+kyact*(yact-listepolycercle[-1+i].mescentres[j].ay)) +sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata1:=donneanglepolairedans02pi(lambda1*kxact+xact-listepolycercle[-1+i].mescentres[j].ax, lambda1*kyact+yact-listepolycercle[-1+i].mescentres[j].ay); lambda2:=(-2*(kxact*(xact-listepolycercle[-1+i].mescentres[j].ax)+kyact*(yact-listepolycercle[-1+i].mescentres[j].ay)) -sqrt(delta))/2/(sqr(kxact)+sqr(kyact)); tata2:=donneanglepolairedans02pi(lambda2*kxact+xact-listepolycercle[-1+i].mescentres[j].ax, lambda2*kyact+yact-listepolycercle[-1+i].mescentres[j].ay); if ( ((lambda2>0) and (tata2>=listepolycercle[-1+i].theta1[j]) and (tata2<=listepolycercle[-1+i].theta2[j])) or ((lambda2>0) and (tata2+2*Pi>=listepolycercle[-1+i].theta1[j]) and (tata2+2*Pi<=listepolycercle[-1+i].theta2[j])) or ((lambda2>0) and (tata2-2*Pi>=listepolycercle[-1+i].theta1[j]) and (tata2-2*Pi<=listepolycercle[-1+i].theta2[j])) ) then begin lambda:=lambda2; tata:=tata2 end else begin lambda:=lambda1; tata:=tata1; end; end; if ( ((lambda>0) and (tata>=listepolycercle[-1+i].theta1[j]) and (tata<=listepolycercle[-1+i].theta2[j])) or ((lambda>0) and (tata+2*Pi>=listepolycercle[-1+i].theta1[j]) and (tata+2*Pi<=listepolycercle[-1+i].theta2[j])) or ((lambda>0) and (tata-2*Pi>=listepolycercle[-1+i].theta1[j]) and (tata-2*Pi<=listepolycercle[-1+i].theta2[j])) ) then begin xinter:=xact+lambda*kxact; yinter:=yact+lambda*kyact; if ((sqrt(sqr(xinter-xpact)+sqr(yinter-ypact))sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*epsilon)) then begin distance:=sqrt(sqr(xinter-xpact)+sqr(yinter-ypact)); xfutur:=xinter; yfutur:=yinter; bordureatteinte:=false; naissance:=false; if (kxact*(xinter-listepolycercle[-1+i].mescentres[j].ax)+kyact*(yinter-listepolycercle[-1+i].mescentres[j].ay)<0) then begin nnx:=(xinter-listepolycercle[-1+i].mescentres[j].ax); nny:=(yinter-listepolycercle[-1+i].mescentres[j].ay); end else begin nnx:=-(xinter-listepolycercle[-1+i].mescentres[j].ax); nny:=-(yinter-listepolycercle[-1+i].mescentres[j].ay); end; surfaceabsorbanteatteinte:=false; surface_future:=sur_polycercle; indicesurfacefuture:=i; normaleatracer:=true; normale2cotes:=true; anglepolairenormaleatracer:=donneanglepolairedans02pi(nnx,nny); if optionangles then begin incidentatracer:=true; refracteatracer:=false; angleincident.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xact,yact) ; end; {rayon entrant} if {(nnx*kxact+nny*kyact<0)} listepolycercle[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iinterieur then begin case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+i].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+i].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+i].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+ kyact*((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; if (kxact*(xinter-listepolycercle[-1+i].mescentres[j].ax)+kyact*(yinter-listepolycercle[-1+i].mescentres[j].ay)<0) then begin kxfutur:=kxact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+kyact* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j])) -((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+ kyact*((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))-((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])) *sqrt(patate); end else begin kxfutur:=kxact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+kyact* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j])) +((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+ kyact*((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))+((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])) *sqrt(patate); end; anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon rentre} {rayon sortant} if {(nnx*kxact+nny*kyact>0)} listepolycercle[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iexterieur then begin case couleur of clred: indiceoptiquefutur:=indice_rouge_par_defaut; clgreen: indiceoptiquefutur:=indice_vert_par_defaut; clblue: indiceoptiquefutur:=indice_bleu_par_defaut; end; if nombrepolycercle>0 then for iii:=1 to nombrepolycercle do if listepolycercle[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolycercle[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolycercle[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolycercle[-1+iii].indicebleu; end; if nombrepolyhedre>0 then for iii:=1 to nombrepolyhedre do if listepolyhedre[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listepolyhedre[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listepolyhedre[-1+iii].indicevert; clblue: indiceoptiquefutur:=listepolyhedre[-1+iii].indicebleu; end; if nombreprisme>0 then for iii:=1 to nombreprisme do if listeprisme[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listeprisme[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listeprisme[-1+iii].indicevert; clblue: indiceoptiquefutur:=listeprisme[-1+iii].indicebleu; end; if nombresphere>0 then for iii:=1 to nombresphere do if listesphere[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listesphere[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listesphere[-1+iii].indicevert; clblue: indiceoptiquefutur:=listesphere[-1+iii].indicebleu; end; if nombrelec>0 then for iii:=1 to nombrelec do if listelec[-1+iii].estou(xinter+kxact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000, yinter+kyact*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxact)+sqr(kyact))/1000)=Iinterieur then case couleur of clred: indiceoptiquefutur:=listelec[-1+iii].indicerouge; clgreen: indiceoptiquefutur:=listelec[-1+iii].indicevert; clblue: indiceoptiquefutur:=listelec[-1+iii].indicebleu; end; patate:=(sqr(indiceoptiquefutur/indiceoptiqueactuel)-1)*(sqr(kxact)+sqr(kyact)) +sqr(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+kyact* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))); unrefracte:=patate>0; if not(unrefracte) then surfaceabsorbanteatteinte:=true else begin surfaceabsorbanteatteinte:=false; if (kxact*(xinter-listepolycercle[-1+i].mescentres[j].ax)+kyact*(yinter-listepolycercle[-1+i].mescentres[j].ay)<0) then begin kxfutur:=kxact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+kyact* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))-((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+kyact* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))-((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))*sqrt(patate); end else begin kxfutur:=kxact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+kyact* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))*sqrt(patate); kyfutur:=kyact-(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+kyact* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j])))* ((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))+((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))*sqrt(patate); end; anglepolairefutur:=donneanglepolairedanspipi(kxfutur,kyfutur); xfutur:=xinter; yfutur:=yinter; if optionangles then begin incidentatracer:=true; refracteatracer:=true; anglerefracte.create(xfutur,yfutur,xfutur+cos( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin( anglepolairenormaleatracer+pi)* sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+kxfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2, yfutur+kyfutur*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/sqrt(sqr(kxfutur)+sqr(kyfutur))*pourcentagenormale/2) ; end; end; {du cas ou existe le rayon refracte} end;{du cas ou le rayon sort} if nnx=0 then if nny>0 then agp:=Pi/2 else agp:=-Pi/2 else begin agp:=arctan(nny/nnx); if nnx<0 then agp:=agp+Pi; end; {rayon refpolycerclehi dans le cas ou le refracte est entrant} if {(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+ kyact*((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))>0)} listepolycercle[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iinterieur then if ((listepolycercle[-1+i].reflechisortant=toujoursreflechi) or (unrefracte and (listepolycercle[-1+i].reflechisortant=reflechisirefracte)) or (not(unrefracte) and (listepolycercle[-1+i].reflechisortant=reflechisipasrefracte))) then begin agp:=agp+pi/2; surfaceabsorbanteatteinte:=false; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon refpolycerclehi si le refracte est sortant} {rayon refpolycerclehi dans le cas ou le refracte est entrant} if {(kxact*((xinter-listepolycercle[-1+i].mescentres[j].ax)/abs(listepolycercle[-1+i].rayon[j]))+ kyact*((yinter-listepolycercle[-1+i].mescentres[j].ay)/abs(listepolycercle[-1+i].rayon[j]))<0)} listepolycercle[-1+i].estou( xinter+kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000,yinter+kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000)=Iexterieur then if ((listepolycercle[-1+i].reflechientrant=toujoursreflechi) or (unrefracte and (listepolycercle[-1+i].reflechientrant=reflechisirefracte)) or (not(unrefracte) and (listepolycercle[-1+i].reflechientrant=reflechisipasrefracte))) then begin surfaceabsorbanteatteinte:=false; agp:=agp-pi/2; incidence:=Pi/2-agp+anglepolaireact; if incidence>Pi then incidence:=incidence-2*Pi; if incidence<-Pi then incidence:=incidence+2*Pi; if not(unrefracte) then begin indiceoptiquefutur:=indiceoptiqueactuel; kxfutur:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyfutur:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); xfutur:=xinter; yfutur:=yinter; anglepolairefutur:=2*agp-anglepolaireact; if anglepolairefutur>Pi then anglepolairefutur:=anglepolairefutur-2*Pi; if anglepolairefutur<-Pi then anglepolairefutur:=anglepolairefutur+2*Pi; end else begin kxenfant:=sqrt(kxact*kxact+kyact*kyact)*cos(2*agp-anglepolaireact); kyenfant:=sqrt(kxact*kxact+kyact*kyact)*sin(2*agp-anglepolaireact); naissance:=true; xenfant:=xinter+kxenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); yenfant:=yinter+kyenfant/sqrt(sqr(kxenfant)+sqr(kyenfant))/10000*sqrt( sqr(xxmax-xxmin)+sqr(yymax-yymin)); end; end; {du rayon refpolycerclehi si le refracte est entrant} end; end; end; {on retablit les valeurs d'origine s'il a fallu les modifier} xact:=xact-kxact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; yact:=yact-kyact*sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))/ sqrt(sqr(kxact)+sqr(kyact))/10000; end;{des cercle, 1ere face} if abs(kxfutur)cheminactuelaobtenir then begin lambda:=(cheminactuelaobtenir-(cheminoptique-indiceoptiqueactuel* sqrt(sqr(xfutur-xact)+sqr(yfutur-yact))))/indiceoptiqueactuel/ sqrt(sqr(xfutur-xact)+sqr(yfutur-yact)); if premierpointsurfacesonde then begin premierpointsurfacesonde:=false; interx1:=xact+lambda*(xfutur-xact); intery1:=yact+lambda*(yfutur-yact); exit; end; interx2:=xact+lambda*(xfutur-xact); intery2:=yact+lambda*(yfutur-yact); retaillepsegment(listesegment,nombretotalsegment,nombretotalsegment+1); inc(nombretotalsegment); listesegment[-1+nombretotalsegment].create(interx1,intery1,interx2,intery2, donneanglepolairedans02pi(interx2-interx1,intery2-intery1),1, couleur,false,false); interx1:=interx2; intery1:=intery2; exit; end; if ((surface_future=sur_lmc) or (surface_future=sur_mscopa) or (surface_future=sur_lmd) or (surface_future=sur_mscepa)) then cheminoptique:=cheminoptique+cheminsup; end; if not(optionsurfacesonde) then if optionangles then begin if incidentatracer then begin retaillepangle(listeanglesatracer,nombreanglesatracer,nombreanglesatracer+1); inc(nombreanglesatracer); listeanglesatracer[-1+nombreanglesatracer].create(angleincident.cx, angleincident.cy,angleincident.a1x,angleincident.a1y, angleincident.a2x,angleincident.a2y); end; if refracteatracer then begin retaillepangle(listeanglesatracer,nombreanglesatracer,nombreanglesatracer+1); inc(nombreanglesatracer); listeanglesatracer[-1+nombreanglesatracer].create(anglerefracte.cx, anglerefracte.cy,anglerefracte.a1x,anglerefracte.a1y, anglerefracte.a2x,anglerefracte.a2y); end; end; if not(optionsurfacesonde) then if optionnormale then if normaleatracer then begin retaillepsegment(listenormale,nombrenormale,nombrenormale+1); inc(nombrenormale); if normale2cotes then listenormale[-1+nombrenormale].create(xfutur+cos(anglepolairenormaleatracer) *sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin(anglepolairenormaleatracer) *sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, xfutur+cos(anglepolairenormaleatracer+pi) *sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2, yfutur+sin(anglepolairenormaleatracer+pi) *sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale/2,anglepolairenormaleatracer,epaisseurnormale, couleurnormale,false,false) else listenormale[-1+nombrenormale].create(xfutur, yfutur, xfutur+cos(anglepolairenormaleatracer) *sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale, yfutur+sin(anglepolairenormaleatracer) *sqrt(sqr(xxmax-xxmin)+sqr(yymax-yymin))*pourcentagenormale,anglepolairenormaleatracer,epaisseurnormale, couleurnormale,false,false); end; xact:=xfutur; yact:=yfutur; kxact:=kxfutur; kyact:=kyfutur; anglepolaireact:=anglepolairefutur; indiceoptiqueactuel:=indiceoptiquefutur; surface_actuelle:=surface_future; coteactuel:=cotefutur; indicesurfaceactuelle:=indicesurfacefuture; inc(nombresegment); if not(optionsurfacesonde) and not(surface_future=sur_reseau) then if (naissance and (nombrenaissance0) and not(surfaceabsorbanteatteinte) then if ((nombrenaissance+nombreenfantreseaunbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdtexteaffiche)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].texteluimeme, thearray[-1+nbelements].policename,thearray[-1+nbelements].policecharset, thearray[-1+nbelements].policecolor,thearray[-1+nbelements].policesize, thearray[-1+nbelements].policepitch, thearray[-1+nbelements].policefsbold, thearray[-1+nbelements].policefsitalic, thearray[-1+nbelements].policefsunderline, thearray[-1+nbelements].policefsstrikeout, thearray[-1+nbelements].x, thearray[-1+nbelements].y); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdtexteaffiche)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleptexteaffiche(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePmiroirplan(var TheArray : Pmiroirplan; NumElements : longint); begin setlength(TheArray,NumElements); end; procedure CreePReseau(var TheArray : PReseau; NumElements : longint); begin setlength(TheArray,NumElements); end; procedure FreePmiroirplan(var TheArray : Pmiroirplan; NumElements : longint); begin finalize(TheArray); end; procedure FreePReseau(var TheArray : PReseau; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePmiroirplan(var TheArray :Pmiroirplan; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure ReTaillePreseau(var TheArray :Preseau; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1PMiroirplan(var thearray:pmiroirplan; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmiroirplan)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui2, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].hachures); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmiroirplan)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepmiroirplan(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1PReseau(var thearray:pReseau; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdReseau)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui2, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].pas, thearray[-1+nbelements].entransmission, thearray[-1+nbelements].hachures, thearray[-1+nbelements].ordre_min, thearray[-1+nbelements].ordre_max); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdReseau)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepReseau(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePfleche(var TheArray : Pfleche; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePfleche(var TheArray : Pfleche; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePfleche(var TheArray :Pfleche; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Pfleche(var thearray:pfleche; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdfleche)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui3, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].ext1, thearray[-1+nbelements].ext1, thearray[-1+nbelements].styletrait, thearray[-1+nbelements].taille1, thearray[-1+nbelements].taille2); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdfleche)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepfleche(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePmiroirconique(var TheArray : Pmiroirconique; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePmiroirconique(var TheArray : Pmiroirconique; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePmiroirconique(var TheArray :Pmiroirconique; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Pmiroirconique(var thearray:pmiroirconique; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmiroirconique)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui4, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; {thearray[-1+indice].create(thearray[-1+nbelements].fx, thearray[-1+nbelements].fy, thearray[-1+nbelements].sx, thearray[-1+nbelements].sy, thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].concave, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].hachures, thearray[-1+nbelements].axefocal);} thearray[-1+indice].create2(thearray[-1+nbelements].fx, thearray[-1+nbelements].fy, thearray[-1+nbelements].theta0, thearray[-1+nbelements].theta1, thearray[-1+nbelements].theta2, thearray[-1+nbelements].excentricite, thearray[-1+nbelements].parametre, thearray[-1+nbelements].concave, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].hachures, thearray[-1+nbelements].axefocal); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmiroirconique)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepmiroirconique(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePsphere(var TheArray : Psphere; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePsphere(var TheArray : Psphere; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePsphere(var TheArray :Psphere; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Psphere(var thearray:psphere; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdsphere)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui5, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].cx, thearray[-1+nbelements].cy, thearray[-1+nbelements].rayon, thearray[-1+nbelements].indicerouge, thearray[-1+nbelements].indicebleu, thearray[-1+nbelements].indicevert, thearray[-1+nbelements].couleurbord, thearray[-1+nbelements].couleurfond, thearray[-1+nbelements].reflechientrant, thearray[-1+nbelements].reflechisortant); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdsphere)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepsphere(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePEcran(var TheArray : PEcran; NumElements : longint); begin setlength(TheArray,NumElements); end; procedure FreePEcran(var TheArray : PEcran; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePEcran(var TheArray :PEcran; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1PEcran(var thearray:pEcran; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdecran)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui6, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdecran)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepEcran(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePgroupe(var TheArray : Pgroupe; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePgroupe(var TheArray : Pgroupe; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePgroupe(var TheArray :Pgroupe; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Pgroupe(var thearray:pgroupe; indice:longint; var nbelements:longint); var i:integer; begin if indice>nbelements then exit; if indice<=0 then exit; thearray[-1+indice].create; for i:=1 to thearray[-1+nbelements].nombreelements do thearray[-1+indice].add(thearray[-1+nbelements].listeelements[i].typeelementgroupe, thearray[-1+nbelements].listeelements[i].indiceelement); retaillepgroupe(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePoeil(var TheArray : Poeil; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePoeil(var TheArray : Poeil; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePoeil(var TheArray :Poeil; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Poeil(var thearray:poeil; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdoeil)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui7, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].cx, thearray[-1+nbelements].cy, thearray[-1+nbelements].ax, thearray[-1+nbelements].ay, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdoeil)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepoeil(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePdiaphragme(var TheArray : Pdiaphragme; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePdiaphragme(var TheArray : Pdiaphragme; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePdiaphragme(var TheArray :Pdiaphragme; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Pdiaphragme(var thearray:pdiaphragme; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mddiaphragme)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui8, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create2(thearray[-1+nbelements].cx, thearray[-1+nbelements].cy, thearray[-1+nbelements].anglepolaire, thearray[-1+nbelements].rint, thearray[-1+nbelements].rext, thearray[-1+nbelements].couleur, thearray[-1+nbelements].epaisseur); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mddiaphragme)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepdiaphragme(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePlsr(var TheArray : Plsr; NumElements : longint); begin setlength(TheArray,NumElements); end; procedure FreePlsr(var TheArray : Plsr; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePlsr(var TheArray :Plsr; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Plsr(var thearray:plsr; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlsr)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui9, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlsr)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleplsr(thearray,nbelements,nbelements-1); dec(nbelements); end; function angle.create(_cx,_cy,_a1x,_a1y,_a2x,_a2y:extended):boolean; var ttai:extended; begin {if ((_a1x>xxmax) or (_a1xyymax) or (_a1yxxmax) or (_a2xyymax) or (_a2yxxmax) or (_cxyymax) or (_cyxxmax) or (_a1xyymax) or (_a1yxxmax) or (_a2xyymax) or (_a2ynbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmetre)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui10, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmetre)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepmetre(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Pangle(var thearray:pangle; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdangle)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui11, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].cx, thearray[-1+nbelements].cy, thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdangle)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepangle(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePsegment(var TheArray : Psegment; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePsegment(var TheArray : Psegment; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePsegment(var TheArray :Psegment; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePpolyhedre(var TheArray : Ppolyhedre; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePpolyhedre(var TheArray : Ppolyhedre; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePpolyhedre(var TheArray :Ppolyhedre; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePprisme(var TheArray : Pprisme; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePprisme(var TheArray : Pprisme; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePprisme(var TheArray :Pprisme; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePpolycercle(var TheArray : Ppolycercle; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePpolycercle(var TheArray : Ppolycercle; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePpolycercle(var TheArray :Ppolycercle; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure Supprime1Psegment(var thearray:psegment; indice:longint; var nbelements:longint); var i:integer; begin if indice>nbelements then exit; if indice<=0 then exit; thearray[-1+indice].create(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].ap, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].virtuelavant, thearray[-1+nbelements].virtuelarriere); retaillepsegment(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Prayon(var thearray:prayon; indice:longint; var nbelements:longint); var saa,sar:shortstring; i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdrayon)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui12, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].ax, thearray[-1+nbelements].ay, thearray[-1+nbelements].kx, thearray[-1+nbelements].ky, thearray[-1+nbelements].couleur, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].vav, thearray[-1+nbelements].vaa, thearray[-1+nbelements].nombremaxenfant, thearray[-1+nbelements].maxsegment); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdrayon)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleprayon(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Psourceponctuelle(var thearray:psourceponctuelle; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdsourceponctuelle)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui13, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].nombrederayon, thearray[-1+nbelements].sx, thearray[-1+nbelements].sy, thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].ray[1].couleur, thearray[-1+nbelements].ray[1].epaisseur, thearray[-1+nbelements].ray[1].vav, thearray[-1+nbelements].ray[1].vaa, thearray[-1+nbelements].maxenfantparrayon, thearray[-1+nbelements].sourcevirtuelle, thearray[-1+nbelements].tracersurfacesonde, thearray[-1+nbelements].listechemins, thearray[-1+nbelements].maxsegment); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdsourceponctuelle)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepsourceponctuelle(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Pondeplane(var thearray:pondeplane; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdondeplane)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui14, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].nombrederayon, thearray[-1+nbelements].ray[1].bx, thearray[-1+nbelements].ray[1].by, thearray[-1+nbelements].ray[1].ax, thearray[-1+nbelements].ray[1].ay, thearray[-1+nbelements].ray[thearray[-1+nbelements].nombrederayon].ax, thearray[-1+nbelements].ray[thearray[-1+nbelements].nombrederayon].ay, thearray[-1+nbelements].ray[1].couleur, thearray[-1+nbelements].ray[1].epaisseur, thearray[-1+nbelements].ray[1].vav, thearray[-1+nbelements].ray[1].vaa, thearray[-1+nbelements].maxenfantparrayon, thearray[-1+nbelements].tracersurfacesonde, thearray[-1+nbelements].listechemins, thearray[-1+nbelements].maxsegment); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdondeplane)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepondeplane(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Pmscopa(var thearray:pmscopa; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscopa)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui15, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create2(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].focale, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].hachures, thearray[-1+nbelements].axefocal, thearray[-1+nbelements].trou, thearray[-1+nbelements].diametretrou); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscopa)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepmscopa(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Pmscepa(var thearray:pmscepa; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscepa)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui16, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create2(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].focale, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].hachures, thearray[-1+nbelements].axefocal, thearray[-1+nbelements].trou, thearray[-1+nbelements].diametretrou); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscepa)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepmscepa(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Pmscore(var thearray:pmscore; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscore)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui17, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create2(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].rayoncourbure, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].hachures, thearray[-1+nbelements].axefocal, thearray[-1+nbelements].aigu, thearray[-1+nbelements].trou, thearray[-1+nbelements].diametretrou); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscore)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepmscore(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Ppolyhedre(var thearray:ppolyhedre; indice:longint; var nbelements:longint); var pp:tableaupointpolyhedre; i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdpolyhedre)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui18, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; for i:=1 to thearray[-1+nbelements].nombresommet do begin pp[i].ax:=thearray[-1+nbelements].messommets[i].ax; pp[i].ay:=thearray[-1+nbelements].messommets[i].ay; end; thearray[-1+indice].create(thearray[-1+nbelements].nombresommet, pp, thearray[-1+nbelements].indicerouge, thearray[-1+nbelements].indicebleu, thearray[-1+nbelements].indicevert, thearray[-1+nbelements].couleurbord, thearray[-1+nbelements].couleurfond, thearray[-1+nbelements].reflechientrant, thearray[-1+nbelements].reflechisortant); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdpolyhedre)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleppolyhedre(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Pprisme(var thearray:pprisme; indice:longint; var nbelements:longint); var pp:tableaupointpolyhedre; i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdprisme)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui19, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; for i:=1 to thearray[-1+nbelements].nombresommet do begin pp[i].ax:=thearray[-1+nbelements].messommets[i].ax; pp[i].ay:=thearray[-1+nbelements].messommets[i].ay; end; thearray[-1+indice].create(thearray[-1+nbelements].gx, thearray[-1+nbelements].gy,thearray[-1+nbelements].ax, thearray[-1+nbelements].ay,thearray[-1+nbelements].bx, thearray[-1+nbelements].by, thearray[-1+nbelements].indicerouge, thearray[-1+nbelements].indicebleu, thearray[-1+nbelements].indicevert, thearray[-1+nbelements].couleurbord, thearray[-1+nbelements].couleurfond, thearray[-1+nbelements].reflechientrant, thearray[-1+nbelements].reflechisortant); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdprisme)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepprisme(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Ppolycercle(var thearray:ppolycercle; indice:longint; var nbelements:longint); var pp,ps:tableaupointpolyhedre; r:tableaurectiligne; i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdpolycercle)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui20, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; for i:=1 to thearray[-1+nbelements].nombresommet do begin pp[i].ax:=thearray[-1+nbelements].messommets[i].ax; pp[i].ay:=thearray[-1+nbelements].messommets[i].ay; ps[i].ax:=thearray[-1+nbelements].mess[i].ax; ps[i].ay:=thearray[-1+nbelements].mess[i].ay; r[i]:=thearray[-1+nbelements].rectiligne[i]; end; thearray[-1+indice].create(thearray[-1+nbelements].nombresommet, pp,ps,r, thearray[-1+nbelements].indicerouge, thearray[-1+nbelements].indicebleu, thearray[-1+nbelements].indicevert, thearray[-1+nbelements].couleurbord, thearray[-1+nbelements].couleurfond, thearray[-1+nbelements].reflechientrant, thearray[-1+nbelements].reflechisortant); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdpolycercle)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleppolycercle(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Pmscere(var thearray:pmscere; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscere)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui21, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create2(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].rayoncourbure, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].hachures, thearray[-1+nbelements].axefocal, thearray[-1+nbelements].aigu, thearray[-1+nbelements].trou, thearray[-1+nbelements].diametretrou); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdmscere)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retaillepmscere(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Plmc(var thearray:plmc; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlmc)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui22, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create2(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].focale, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].axefocal); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlmc)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleplmc(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Plec(var thearray:plec; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlec)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui23, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create(thearray[-1+nbelements].s1x, thearray[-1+nbelements].s1y, thearray[-1+nbelements].s2x, thearray[-1+nbelements].s2y, thearray[-1+nbelements].r1, thearray[-1+nbelements].r2, thearray[-1+nbelements].diametre, thearray[-1+nbelements].couleurfond, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].axefocal, thearray[-1+nbelements].indicerouge,thearray[-1+nbelements].indicebleu, thearray[-1+nbelements].indicevert,thearray[-1+nbelements].ReflechiEntrant, thearray[-1+nbelements].ReflechiSortant); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlec)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleplec(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure Supprime1Plmd(var thearray:plmd; indice:longint; var nbelements:longint); var i,j:integer; label 123; begin if indice>nbelements then exit; if indice<=0 then exit; 123: if nombregroupe>0 then for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=indice) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlmd)) then begin application.messagebox(pchar(Format(rsLeGroupeNQui24, [inttostr(i)])), pchar(rsVotReAttenti), mb_ok); supprime1pgroupe(listegroupe,i,nombregroupe); goto 123; end; thearray[-1+indice].create2(thearray[-1+nbelements].a1x, thearray[-1+nbelements].a1y, thearray[-1+nbelements].a2x, thearray[-1+nbelements].a2y, thearray[-1+nbelements].focale, thearray[-1+nbelements].epaisseur, thearray[-1+nbelements].couleur, thearray[-1+nbelements].couleuraxe, thearray[-1+nbelements].axefocal); for i:=1 to nombregroupe do for j:=1 to listegroupe[-1+i].nombreelements do if ((listegroupe[-1+i].listeelements[j].indiceelement=nbelements) and (listegroupe[-1+i].listeelements[j].typeelementgroupe=mdlmd)) then listegroupe[-1+i].listeelements[j].indiceelement:=indice; retailleplmd(thearray,nbelements,nbelements-1); dec(nbelements); end; procedure CreePmscopa(var TheArray : Pmscopa; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePmscopa(var TheArray : Pmscopa; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePmscopa(var TheArray :Pmscopa; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePmscepa(var TheArray : Pmscepa; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePmscepa(var TheArray : Pmscepa; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePmscepa(var TheArray :Pmscepa; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePmscore(var TheArray : Pmscore; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePmscore(var TheArray : Pmscore; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePmscore(var TheArray :Pmscore; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePmscere(var TheArray : Pmscere; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePmscere(var TheArray : Pmscere; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePmscere(var TheArray :Pmscere; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePlmc(var TheArray : Plmc; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePlmc(var TheArray : Plmc; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePlmc(var TheArray :Plmc; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePlec(var TheArray : Plec; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePlec(var TheArray : Plec; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePlec(var TheArray :Plec; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePlmd(var TheArray : Plmd; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePlmd(var TheArray : Plmd; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePlmd(var TheArray :Plmd; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePrayon(var TheArray : Prayon; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePrayon(var TheArray : Prayon; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePrayon(var TheArray :Prayon; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePsourceponctuelle(var TheArray : Psourceponctuelle; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePsourceponctuelle(var TheArray : Psourceponctuelle; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePsourceponctuelle(var TheArray :Psourceponctuelle; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePondeplane(var TheArray : Pondeplane; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePondeplane(var TheArray : Pondeplane; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePondeplane(var TheArray :Pondeplane; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePmetre(var TheArray : Pmetre; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePmetre(var TheArray : Pmetre; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePmetre(var TheArray :Pmetre; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; procedure CreePangle(var TheArray : Pangle; NumElements : longint); begin setlength(TheArray, NumElements); end; procedure FreePangle(var TheArray : Pangle; NumElements : longint); begin finalize(TheArray); end; procedure ReTaillePangle(var TheArray :Pangle; OldNumElements : longint; NewNumElements : longint); begin setlength(thearray,NewNumElements); end; function polycercle.estou(x,y:extended):ttypeinterieur; var i:integer; A,B,C,delta:extended; xi,xi1,xi2:extended; nbe_interceptions:integer; t,t1,t2:extended; label 147,890; begin nbe_interceptions:=0; for i:=1 to nombresommet do begin {cas rectiligne} if rectiligne[i] then begin if (messommets[i].ay=messommets[i+1].ay) and (y=messommets[i].ay) and (x>=min(messommets[i].ax,messommets[i+1].ax)) and (x<=max(messommets[i].ax,messommets[i+1].ax)) then begin result:=ibord; exit; end; if (messommets[i].ay=messommets[i+1].ay) and (y=messommets[i].ay) and (xmax(messommets[i].ax,messommets[i+1].ax)) then inc(nbe_interceptions,0) else if ((y>=min(messommets[i].ay,messommets[i+1].ay)) and (y<=max(messommets[i].ay,messommets[i+1].ay))) then begin xi:=messommets[i].ax+(y-messommets[i].ay)*(messommets[i+1].ax-messommets[i].ax)/ (messommets[i+1].ay-messommets[i].ay); if x=xi then begin result:=ibord; exit; end; if x=theta1[i]) and (t<=theta2[i])) or ( (t-2*pi>=theta1[i]) and (t-2*pi<=theta2[i])) or ( (t+2*pi>=theta1[i]) and (t+2*pi<=theta2[i])) then if x=xi then begin result:=ibord; exit; end else if xi>x then inc(nbe_interceptions,2); end {du cas delta=0} else if (delta>0) then begin xi1:=(-B+sqrt(delta))/2/A; xi2:=(-B-sqrt(delta))/2/A; t1:=donneanglepolairedans02pi(xi1-mescentres[i].ax,y-mescentres[i].ay); t2:=donneanglepolairedans02pi(xi2-mescentres[i].ax,y-mescentres[i].ay); if ( (t1>=theta1[i]) and (t1<=theta2[i])) or ( (t1-2*pi>=theta1[i]) and (t1-2*pi<=theta2[i])) or ( (t1+2*pi>=theta1[i]) and (t1+2*pi<=theta2[i])) then if x=xi1 then begin result:=ibord; exit; end else if xi1>x then inc(nbe_interceptions,1); if ( (t2>=theta1[i]) and (t2<=theta2[i])) or ( (t2-2*pi>=theta1[i]) and (t2-2*pi<=theta2[i])) or ( (t2+2*pi>=theta1[i]) and (t2+2*pi<=theta2[i])) then if x=xi2 then begin result:=ibord; exit; end else if xi2>x then inc(nbe_interceptions,1); end; {du cas delta>0} end; {fin cas circulaire} end; {fin boucle sur les cotes} if nbe_interceptions mod 2=0 then result:=iexterieur else result:=iinterieur; end; { function polycercle.create2(_nombresommet:integer; _MesSommets: TableauPointPolyhedre; _rayon:sommetsreels; _rectiligne,_rentrant,_aigu:tableaurectiligne; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre;_trigodirect:boolean):boolean; var i,j:integer; ix,iy,mu,lambda,ecart,totalangle,alpha,alpha1,alpha2,tt,AI,CI,agp,angleaucentre,para,para1,para2,para3,para4:extended; aire_signee:extended; toto:array[1..2*maxsommet] of pointpolyhedre; sens1,sens2,sens3,sens:integer; var tol:extended; begin tol:=1e-10; para1:=0; para2:=0; ReflechiEntrant:=_ReflechiEntrant; ReflechiSortant:=_ReflechiSortant; nombresommet:=_nombresommet; indicerouge:=_indicerouge; indicebleu:=_indicebleu; indicevert:=_indicevert; couleurbord:=_couleurbord; couleurfond:=_couleurfond; trigodirect:=_trigodirect; if ((nombresommet<2) or (nombresommet>maxsommet)) then begin create2:=false; exit; end; if ((nombresommet=2) and (_rectiligne[1]) and (_rectiligne[2])) then begin create2:=false; application.MessageBox(pchar(rsCetteStructu), pchar(rsImpossible), mb_ok); exit; end; if ((nombresommet=2) and not(_rectiligne[1]) and not(_rectiligne[2])) then begin create2:=false; application.MessageBox(pchar(rsPourCrErUneL2), pchar(rsImpossible), mb_ok); exit; end; for i:=1 to nombresommet do begin if ((_messommets[i].ax>xxmax) or (_messommets[i].axyymax) or (_messommets[i].ay3 then for i:=1 to nombresommet do begin if i>2 then for j:=1 to i-3 do if Le_point_est_il_sur_une_droite(messommets[i].ax,messommets[i].ay, messommets[j].ax,messommets[j].ay,messommets[j+1].ax,messommets[j+1].ay,para,tol) and (para>=-tol) and (para<=1+tol) then begin create2:=false; exit; end; if i=-tol) and (para<=1+tol) then begin create2:=false; exit; end; end; {on verifie que 2 segments ne se coupent pas} if nombresommet>3 then for i:=1 to nombresommet do for j:=i+2 to i+nombresommet-2 do if (rectiligne[i] and rectiligne[j]) then if Les_deux_segments_se_coupent_ils(toto[i].ax,toto[i].ay,toto[i+1].ax,toto[i+1].ay, toto[j].ax,toto[j].ay,toto[j+1].ax,toto[j+1].ay) then begin create2:=false; exit; end; //end; end; {calcul des angles polaires des cotes} for i:=1 to nombresommet do anglepolaire[i]:=donneanglepolairedanspipi(messommets[i+1].ax-messommets[i].ax,messommets[i+1].ay-messommets[i].ay); for i:=1 to nombresommet do if not(rectiligne[i]) then begin ix:=(MesSommets[i].ax+MesSommets[i+1].ax)/2; iy:=(MesSommets[i].ay+MesSommets[i+1].ay)/2; AI:=sqrt(sqr(MesSommets[i].ax-ix)+sqr(MesSommets[i].ay-iy)); if AI>=rayon[i] then begin create2:=false; exit; end; CI:=sqrt(sqr(rayon[i])-sqr(AI)); {if ( ((trigodirect) and not(rentrant[i])) or (not(trigodirect) and (rentrant[i])) ) then begin} if trigodirect then sens1:=1 else sens1:=-1; if aigu[i] then sens2:=1 else sens2:=-1; if not(rentrant[i]) then sens3:=1 else sens3:=-1; sens:=sens1*sens2*sens3; if sens=1 then begin mescentres[i].ax:=ix-CI/2/AI*(messommets[i+1].ay-messommets[i].ay); mescentres[i].ay:=iy+CI/2/AI*(messommets[i+1].ax-messommets[i].ax); end else begin mescentres[i].ax:=ix+CI/2/AI*(messommets[i+1].ay-messommets[i].ay); mescentres[i].ay:=iy-CI/2/AI*(messommets[i+1].ax-messommets[i].ax); end; agp:=donneanglepolairedans02pi(ix-mescentres[i].ax,iy-mescentres[i].ay); if aigu[i] then begin mess[i].ax:=mescentres[i].ax+cos(agp)*rayon[i]; mess[i].ay:=mescentres[i].ay+sin(agp)*rayon[i]; end else begin mess[i].ax:=mescentres[i].ax-cos(agp)*rayon[i]; mess[i].ay:=mescentres[i].ay-sin(agp)*rayon[i]; end; angleaucentre:=arccos(((MesSommets[i].ax-MesCentres[i].ax)*(MesS[i].ax-MesCentres[i].ax)+ (MesSommets[i].ay-MesCentres[i].ay)*(MesS[i].ay-MesCentres[i].ay))/sqr(rayon[i])); theta1[i]:=donneanglepolairedans02pi(MesS[i].ax-MesCentres[i].ax, MesS[i].ay-MesCentres[i].ay)-angleaucentre; theta2[i]:=donneanglepolairedans02pi(MesS[i].ax-MesCentres[i].ax, MesS[i].ay-MesCentres[i].ay)+angleaucentre; thetavrai1[i]:=theta1[i]; thetavrai2[i]:=theta2[i]; end else rectiligne[i]:=true; {normales aux cotes rectilignes} for i:=1 to nombresommet do begin if trigodirect then nx[i]:=cos(anglepolaire[i]-Pi/2) else nx[i]:=cos(anglepolaire[i]+Pi/2); if trigodirect then ny[i]:=sin(anglepolaire[i]-Pi/2) else ny[i]:=sin(anglepolaire[i]+Pi/2); // if rectiligne[i] then application.MessageBox(pchar(floattostr(nx[i])+' '+floattostr(ny[i])),'',mb_ok); end; for i:=1 to nombresommet do if rectiligne[i] then begin mescentres[i].ax:=0; mescentres[i].ay:=0; mess[i].ax:=(messommets[i].ax+messommets[i+1].ax)/2; mess[i].ay:=(messommets[i].ay+messommets[i+1].ay)/2; theta1[i]:=0; theta2[i]:=0; end; {test d'inter entre cote rectiligne et cote circulaire} for i:=1 to nombresommet do if rectiligne[i] then begin if i1 then for j:=1 to i-1 do if not(rectiligne[j]) then begin if ( (Le_segment_et_le_cercle_se_coupent_ils(messommets[i].ax,messommets[i].ay,messommets[i+1].ax,messommets[i+1].ay, mescentres[j].ax,mescentres[j].ay,rayon[j],theta1[j],theta2[j],para1,para2,para3,para4,tol)=1) and not( ((abs(para1)1 then for j:=1 to i-1 do if not(rectiligne[j]) then begin if ( (Les_deux_cercles_se_coupent_ils(mescentres[i].ax,mescentres[i].ay,mescentres[j].ax,mescentres[j].ay, rayon[i],rayon[j],theta1[i],theta2[i],theta1[j],theta2[j],para1,para2,para3,para4)=1) and not( ((abs(para1)maxsommet)) then begin create:=false; exit; end; if ((nombresommet=2) and (_rectiligne[1]) and (_rectiligne[2])) then begin create:=false; application.MessageBox(pchar(rsCetteStructu), pchar(rsImpossible), mb_ok); exit; end; if ((nombresommet=2) and not(_rectiligne[1]) and not(_rectiligne[2])) then begin create:=false; application.MessageBox(pchar(rsPourCrErUneL), pchar(rsImpossible), mb_ok); exit; end; for i:=1 to nombresommet do begin if ((_messommets[i].ax>xxmax) or (_messommets[i].axyymax) or (_messommets[i].ay ix) or (MesS[i].ay<>iy) then begin rayon[i]:=(sqr(MesS[i].ax-ix)+sqr(MesS[i].ay-iy)+sqr(MesSommets[i].ax-ix)+ sqr(MesSommets[i].ay-iy))/2/sqrt(sqr(MesS[i].ax-ix)+ sqr(MesS[i].ay-iy)); lambda:=rayon[i]/sqrt(sqr(MesS[i].ax-ix)+sqr(MesS[i].ay-iy)); MesCentres[i].ax:=MesS[i].ax-lambda*(MesS[i].ax-ix); MesCentres[i].ay:=MesS[i].ay-lambda*(MesS[i].ay-iy); aigu[i]:=( ( (MesSommets[i].ax-MesCentres[i].ax)*(MesS[i].ax-MesCentres[i].ax) + (MesSommets[i].ay-MesCentres[i].ay)*(MesS[i].ay-MesCentres[i].ay) ) >=0); angleaucentre:=arccos(((MesSommets[i].ax-MesCentres[i].ax)*(MesS[i].ax-MesCentres[i].ax)+ (MesSommets[i].ay-MesCentres[i].ay)*(MesS[i].ay-MesCentres[i].ay))/sqr(rayon[i])); theta1[i]:=donneanglepolairedans02pi(MesS[i].ax-MesCentres[i].ax, MesS[i].ay-MesCentres[i].ay)-angleaucentre; theta2[i]:=donneanglepolairedans02pi(MesS[i].ax-MesCentres[i].ax, MesS[i].ay-MesCentres[i].ay)+angleaucentre; listetrigodirect[i]:=(MesS[i].ax-MesCentres[i].ax)*(MesSommets[i+1].ay-MesSommets[i].ay)- (MesS[i].ay-MesCentres[i].ay)*(MesSommets[i+1].ax-MesSommets[i].ax)>0; {faux, ca depend aussi de caractere aigu-obtu} end else rectiligne[i]:=true; end; for i:=1 to nombresommet do if rectiligne[i] then begin mescentres[i].ax:=0; mescentres[i].ay:=0; mess[i].ax:=(messommets[i].ax+messommets[i+1].ax)/2; mess[i].ay:=(messommets[i].ay+messommets[i+1].ay)/2; theta1[i]:=0; theta2[i]:=0; end; {on verifie que les points ne sont pas trop proches} for i:=1 to nombresommet-1 do for j:=i+1 to nombresommet do if sqrt(sqr(messommets[i].ax-messommets[j].ax)+ sqr(messommets[i].ay-messommets[j].ay))3 then for i:=1 to nombresommet do begin if i>2 then for j:=1 to i-3 do if Le_point_est_il_sur_une_droite(messommets[i].ax,messommets[i].ay, messommets[j].ax,messommets[j].ay,messommets[j+1].ax,messommets[j+1].ay,para,tol) and (para>=-tol) and (para<=1+tol) then begin create:=false; exit; end; if i=-tol) and (para<=1+tol) then begin create:=false; exit; end; end; {test intersection cotes rectilignes} if nombresommet>3 then for i:=1 to nombresommet do for j:=i+2 to i+nombresommet-2 do if (rectiligne[i] and rectiligne[j]) then if Les_deux_segments_se_coupent_ils(toto[i].ax,toto[i].ay,toto[i+1].ax,toto[i+1].ay, toto[j].ax,toto[j].ay,toto[j+1].ax,toto[j+1].ay) then begin create:=false; exit; end; {calcul des angles polaires des cotes} for i:=1 to nombresommet do anglepolaire[i]:=donneanglepolairedanspipi(messommets[i+1].ax-messommets[i].ax,messommets[i+1].ay-messommets[i].ay); {sens trigo direct ?} //if nombresommet>2 then begin aire_signee:=0; for i:=1 to nombresommet do begin aire_signee:=aire_signee+0.5*(messommets[i+1].ax-messommets[i].ax)*(messommets[i+1].ay+ messommets[i].ay); if not(rectiligne[i]) then begin angleaucentre:=abs(theta2[i]-theta1[i]); airecalotte:=sqr(rayon[i])*(angleaucentre/2-sin(angleaucentre)/2); ix:=(MesSommets[i].ax+MesSommets[i+1].ax)/2; iy:=(MesSommets[i].ay+MesSommets[i+1].ay)/2; if (messommets[i+1].ax-messommets[i].ax)*(mess[i].ay-iy)- (messommets[i+1].ay-messommets[i].ay)*(mess[i].ax-ix)>0 then aire_signee:=aire_signee+airecalotte else aire_signee:=aire_signee-airecalotte end; end; trigodirect:=(aire_signee<0); {determination du caractere entrant ou sortant des secteurs} for i:=1 to nombresommet do if not(rectiligne[i]) then begin rentrant[i]:=not( (trigodirect and ((MesS[i].ax-MesCentres[i].ax)*(MesSommets[i+1].ay-MesSommets[i].ay)- (MesS[i].ay-MesCentres[i].ay)*(MesSommets[i+1].ax-MesSommets[i].ax)>0)) or (not(trigodirect) and ((MesS[i].ax-MesCentres[i].ax)*(MesSommets[i+1].ay-MesSommets[i].ay)- (MesS[i].ay-MesCentres[i].ay)*(MesSommets[i+1].ax-MesSommets[i].ax)<0)) ); agauche[i]:=( (MesSommets[i+1].ax-MesSommets[i].ax)*(MesS[i].ay-0.5*(MesSommets[i+1].ay+MesSommets[i].ay)) -(MesSommets[i+1].ay-MesSommets[i].ay)*(MesS[i].ax-0.5*(MesSommets[i+1].ax+MesSommets[i].ax))>0) ; end; {normales aux cotes rectilignes} for i:=1 to nombresommet do begin if trigodirect then nx[i]:=cos(anglepolaire[i]-Pi/2) else nx[i]:=cos(anglepolaire[i]+Pi/2); if trigodirect then ny[i]:=sin(anglepolaire[i]-Pi/2) else ny[i]:=sin(anglepolaire[i]+Pi/2); //if rectiligne[i] then application.MessageBox(pchar(floattostr(nx[i])+' '+floattostr(ny[i])),'',mb_ok); end; {test d'inter entre cote rectiligne et cote circulaire} for i:=1 to nombresommet do if rectiligne[i] then begin if i1 then for j:=1 to i-1 do if not(rectiligne[j]) then begin if ( (Le_segment_et_le_cercle_se_coupent_ils(messommets[i].ax,messommets[i].ay,messommets[i+1].ax,messommets[i+1].ay, mescentres[j].ax,mescentres[j].ay,rayon[j],theta1[j],theta2[j],para1,para2,para3,para4,tol)=1) and not( ((abs(para1)1 then for j:=1 to i-1 do if not(rectiligne[j]) then begin if ( (Les_deux_cercles_se_coupent_ils(mescentres[i].ax,mescentres[i].ay,mescentres[j].ax,mescentres[j].ay, rayon[i],rayon[j],theta1[i],theta2[i],theta1[j],theta2[j],para1,para2,para3,para4)=1) and not( ((abs(para1)indicevert) or (indicevert<>indicebleu) or (indicerouge<>indicebleu); end; function prisme.dispersif:boolean; begin dispersif:=(indicerouge<>indicevert) or (indicevert<>indicebleu) or (indicerouge<>indicebleu); end; function prisme.create(_gx,_gy,_ax,_ay,_3x,_3y:extended; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; var i,j:integer; mu,lambda,ecart,totalangle,alpha,alpha1,alpha2,hx,hy,aire_signee:extended; ff:textfile; toto:array[1..2*maxsommet] of pointpolyhedre; begin ReflechiEntrant:=_ReflechiEntrant; ReflechiSortant:=_ReflechiSortant; nombresommet:=3; gx:=_gx; gy:=_gy; ax:=_ax; ay:=_ay; if ((_3x-gx)*(ax-gx)+(_3y-gy)*(ay-gy)>0) then begin create:=false; exit; end; hx:=gx-(ax-gx)/2; hy:=gy-(ay-gy)/2; if ((ax-gx)*(_3y-gy)-(ay-gy)*(_3x-gx))>0 then begin bx:=_3x; by:=_3y; cx:=-bx+2*hx; cy:=-by+2*hy; end else begin cx:=_3x; cy:=_3y; bx:=-cx+2*hx; by:=-cy+2*hy; end; MesSommets[1].ax:=ax; MesSommets[1].ay:=ay; MesSommets[2].ax:=bx; MesSommets[2].ay:=by; MesSommets[3].ax:=cx; MesSommets[3].ay:=cy; MesSommets[4].ax:=ax; MesSommets[4].ay:=ay; indicerouge:=_indicerouge; indicebleu:=_indicebleu; indicevert:=_indicevert; couleurbord:=_couleurbord; couleurfond:=_couleurfond; {on verifie que les points ne sont pas trop proches} for i:=1 to 3-1 do for j:=i+1 to 3 do if sqrt(sqr(messommets[i].ax-messommets[j].ax)+ sqr(messommets[i].ay-messommets[j].ay))xxmax) or (messommets[i].axyymax) or (messommets[i].ay0) then anglepolaire[i]:=Pi/2 else anglepolaire[i]:=-Pi/2 else begin anglepolaire[i]:=arctan((toto[i+1].ay-toto[i].ay)/(toto[i+1].ax-toto[i].ax)); if ((toto[i+1].ax-toto[i].ax)<0) then anglepolaire[i]:=anglepolaire[i]+Pi; end; if anglepolaire[i]>Pi then anglepolaire[i]:=anglepolaire[i]-Pi*2; end; if ((toto[1].ax-toto[nombresommet].ax)=0) then if ((toto[1].ay-toto[nombresommet].ay)>0) then anglepolaire[nombresommet]:=Pi/2 else anglepolaire[nombresommet]:=-Pi/2 else begin anglepolaire[nombresommet]:=arctan((toto[1].ay-toto[nombresommet].ay)/ (toto[1].ax-toto[nombresommet].ax)); if ((toto[1].ax-toto[nombresommet].ax)<0) then anglepolaire[nombresommet]:=anglepolaire[nombresommet]+Pi; end; if anglepolaire[nombresommet]>Pi then anglepolaire[nombresommet]:=anglepolaire[i]-Pi*2; {senstrigodirect ?} {sens de parcours} aire_signee:=0; for i:=1 to nombresommet do aire_signee:=aire_signee+0.5*(messommets[i].ax*messommets[i+1].ay- messommets[i].ay*messommets[i+1].ax); trigodirect:=(aire_signee>0); {calcul des normales sortantes sur chaque cote} for i:=1 to nombresommet do begin if trigodirect then nx[i]:=cos(anglepolaire[i]-Pi/2) else nx[i]:=cos(anglepolaire[i]+Pi/2); if trigodirect then ny[i]:=sin(anglepolaire[i]-Pi/2) else ny[i]:=sin(anglepolaire[i]+Pi/2); end; xiso:=gx; yiso:=gy; modifie:=true; end; function Polyhedre.create(_nombresommet:integer; _MesSommets: TableauPointPolyhedre; _indicerouge,_indicebleu,_indicevert:extended; _couleurbord,_couleurfond:tcolor; _ReflechiEntrant,_ReflechiSortant:TReflechiPolyhedre):boolean; var i,j:integer; mu,lambda,ecart,totalangle,alpha,alpha1,alpha2,aire_signee,para,tol:extended; ff:textfile; toto:array[1..2*maxsommet] of pointpolyhedre; begin tol:=1e-6; ReflechiEntrant:=_ReflechiEntrant; ReflechiSortant:=_ReflechiSortant; nombresommet:=_nombresommet; if ((nombresommet<3) or (nombresommet>maxsommet)) then begin create:=false; exit; end; for i:=1 to nombresommet do begin if ((_messommets[i].ax>xxmax) or (_messommets[i].axyymax) or (_messommets[i].ay3 then for i:=1 to nombresommet do begin if i>2 then for j:=1 to i-3 do if Le_point_est_il_sur_une_droite(messommets[i].ax,messommets[i].ay, messommets[j].ax,messommets[j].ay,messommets[j+1].ax,messommets[j+1].ay,para,tol) and (para>=-tol) and (para<=1+tol) then begin create:=false; exit; end; if i=-tol) and (para<=1+tol) then begin create:=false; exit; end; end; if nombresommet>3 then for i:=1 to nombresommet do for j:=i+2 to i+nombresommet-2 do if Les_deux_segments_se_coupent_ils(toto[i].ax,toto[i].ay,toto[i+1].ax,toto[i+1].ay, toto[j].ax,toto[j].ay,toto[j+1].ax,toto[j+1].ay) then begin create:=false; exit; end; //end; end; create:=true; {calcul des angles polaires des cotes} for i:=1 to nombresommet do anglepolaire[i]:=donneanglepolairedanspipi(messommets[i+1].ax-messommets[i].ax,messommets[i+1].ay-messommets[i].ay); aire_signee:=0; for i:=1 to nombresommet do begin aire_signee:=aire_signee+0.5*(messommets[i+1].ax-messommets[i].ax)*(messommets[i+1].ay+ messommets[i].ay); end; trigodirect:=(aire_signee<0); {calcul des normales sortantes sur chaque cote} for i:=1 to nombresommet do begin if trigodirect then nx[i]:=cos(anglepolaire[i]-Pi/2) else nx[i]:=cos(anglepolaire[i]+Pi/2); if trigodirect then ny[i]:=sin(anglepolaire[i]-Pi/2) else ny[i]:=sin(anglepolaire[i]+Pi/2); end; xiso:=0; yiso:=0; for i:=1 to nombresommet do begin xiso:=xiso+MesSommets[i].ax; yiso:=yiso+MesSommets[i].ay; end; xiso:=xiso/nombresommet; yiso:=yiso/nombresommet; modifie:=true; end; function polyhedre.estou(x,y:extended):ttypeinterieur; var i,intersection:integer; alpha,beta:extended; pente1,pente2:extended; pente:array[1..2*maxsommet] of extended; bonnepente,ux,uy:extended; poly:array of tpoint; begin {le point est-il sur un bord ?} for i:=1 to nombresommet do if ((x-messommets[i].ax)*(messommets[i+1].ay-messommets[i].ay)- (y-messommets[i].ay)*(messommets[i+1].ax-messommets[i].ax)=0) then begin if abs(messommets[i+1].ax-messommets[i].ax)>abs(messommets[i+1].ay-messommets[i].ay) then alpha:=(x-messommets[i].ax)/(messommets[i+1].ax-messommets[i].ax) else alpha:=(y-messommets[i].ay)/(messommets[i+1].ay-messommets[i].ay); if ((alpha>=0) and (alpha<=1)) then begin estou:=Ibord; exit; end; end; if IsPointInPolygon(X,y,messommets,nombresommet+1)=true then estou:=Iinterieur else estou:=Iexterieur; {for i:=1 to nombresommet do pente[i]:=anglepolaire[i]; for i:=1 to nombresommet do begin if ((messommets[i].ax-x)=0) then if ((messommets[i].ay-y)>0) then pente[i+nombresommet]:=Pi/2 else pente[i+nombresommet]:=-Pi/2 else begin pente[i+nombresommet]:=arctan((messommets[i].ay-y)/(messommets[i].ax-x)); if ((messommets[i].ax-x)<0) then pente[i+nombresommet]:=pente[i+nombresommet]+Pi; end; if pente[i+nombresommet]>Pi then pente[i+nombresommet]:=pente[i+nombresommet]-Pi*2; end; pente1:=pente[1]; pente2:=pente[1]; for i:=2 to 2*nombresommet do if pente[i]>=pente1 then pente1:=pente[i] else pente2:=pente[i]; for i:=1 to 2*nombresommet do if ((pente[i]pente2)) then pente2:=pente[i]; bonnepente:=(pente1+pente2)/2; ux:=cos(bonnepente); uy:=sin(bonnepente); intersection:=0; for i:=1 to nombresommet do begin if (uy*(messommets[i].ax-messommets[i+1].ax)-ux*(messommets[i].ay-messommets[i+1].ay))<>0 then beta:=(uy*(messommets[i].ax-x)-ux*(messommets[i].ay-y))/ (uy*(messommets[i].ax-messommets[i+1].ax)-ux*(messommets[i].ay-messommets[i+1].ay)) else if (uy*(messommets[i].ax-x)-ux*(messommets[i].ay-y))>0 then beta:=100 else beta:=-100; if abs(ux)>abs(uy) then alpha:=(messommets[i].ax-x-beta*(messommets[i].ax-messommets[i+1].ax))/ux else alpha:=(messommets[i].ay-y-beta*(messommets[i].ay-messommets[i+1].ay))/uy; if ((beta<1) and (beta>0) and (alpha>0)) then inc(intersection); end; if ((intersection mod 2)=0) then estou:=Iexterieur else estou:=Iinterieur;} end; function prisme.estou(x,y:extended):ttypeinterieur; var i,intersection:integer; alpha,beta:extended; pente1,pente2:extended; pente:array[1..2*maxsommet] of extended; bonnepente,ux,uy:extended; begin {le point est-il sur un bord ?} for i:=1 to nombresommet do if ((x-messommets[i].ax)*(messommets[i+1].ay-messommets[i].ay)- (y-messommets[i].ay)*(messommets[i+1].ax-messommets[i].ax)=0) then begin if abs(messommets[i+1].ax-messommets[i].ax)>abs(messommets[i+1].ay-messommets[i].ay) then alpha:=(x-messommets[i].ax)/(messommets[i+1].ax-messommets[i].ax) else alpha:=(y-messommets[i].ay)/(messommets[i+1].ay-messommets[i].ay); if ((alpha>=0) and (alpha<=1)) then begin estou:=Ibord; exit; end; end; for i:=1 to nombresommet do pente[i]:=anglepolaire[i]; for i:=1 to nombresommet do begin if ((messommets[i].ax-x)=0) then if ((messommets[i].ay-y)>0) then pente[i+nombresommet]:=Pi/2 else pente[i+nombresommet]:=-Pi/2 else begin pente[i+nombresommet]:=arctan((messommets[i].ay-y)/(messommets[i].ax-x)); if ((messommets[i].ax-x)<0) then pente[i+nombresommet]:=pente[i+nombresommet]+Pi; end; if pente[i+nombresommet]>Pi then pente[i+nombresommet]:=pente[i+nombresommet]-Pi*2; end; pente1:=pente[1]; pente2:=pente[1]; for i:=2 to 2*nombresommet do if pente[i]>=pente1 then pente1:=pente[i] else pente2:=pente[i]; for i:=1 to 2*nombresommet do if ((pente[i]pente2)) then pente2:=pente[i]; bonnepente:=(pente1+pente2)/2; ux:=cos(bonnepente); uy:=sin(bonnepente); intersection:=0; for i:=1 to nombresommet do begin if (uy*(messommets[i].ax-messommets[i+1].ax)-ux*(messommets[i].ay-messommets[i+1].ay))<>0 then beta:=(uy*(messommets[i].ax-x)-ux*(messommets[i].ay-y))/ (uy*(messommets[i].ax-messommets[i+1].ax)-ux*(messommets[i].ay-messommets[i+1].ay)) else if (uy*(messommets[i].ax-x)-ux*(messommets[i].ay-y))>0 then beta:=100 else beta:=-100; if abs(ux)>abs(uy) then alpha:=(messommets[i].ax-x-beta*(messommets[i].ax-messommets[i+1].ax))/ux else alpha:=(messommets[i].ay-y-beta*(messommets[i].ay-messommets[i+1].ay))/uy; if ((beta<1) and (beta>0) and (alpha>0)) then inc(intersection); end; if ((intersection mod 2)=0) then estou:=Iexterieur else estou:=Iinterieur; end; function lec.estou(x,y:extended):ttypeinterieur; var d1,d2,daxe,lambda:extended; begin d1:=sqrt(sqr(x-c1x)+sqr(y-c1y)); d2:=sqrt(sqr(x-c2x)+sqr(y-c2y)); lambda:=(x-ox)*cos(apaf)+(y-oy)*sin(apaf); daxe:=sqrt(sqr(ox+lambda*cos(apaf)-x)+sqr(oy+lambda*sin(apaf)-y)); if (daxe>diametre) then begin estou:=iexterieur; exit; end; if mince then begin {lentille biconvexe } if r1*r2<0 then begin if ( (d1=abs(r1)) and (d2<=abs(r2))) then begin estou:=Ibord; exit; end; if ( (d1<=abs(r1)) and (d2=abs(r2))) then begin estou:=Ibord; exit; end; if ( (d10) and (r2>0)) then begin if ( (d1>abs(r1)) and (d2=abs(r1)) and (d2=abs(r2))) then begin estou:=Ibord; exit; end; estou:=Iexterieur; end; {convexe concave dans autre sens} if ((r1<0) and (r2<0)) then begin if ( (d2>abs(r2)) and (d1=abs(r2))) then begin estou:=Ibord; exit; end; if ( (d1<=abs(r1)) and (d2=abs(r2))) then begin estou:=Ibord; exit; end; estou:=Iexterieur; exit; end; end; {du cas lentille mince} {lentille epaisse} if not(mince) then begin {biconcave} if (r1*r2<0) then begin if ( (d1>abs(r1)) and (d2>abs(r2)) and ((x-c1x)*(s2x-s1x)+(y-c1y)*(s2y-s1y)>=0) and ((x-c2x)*(s2x-s1x)+(y-c2y)*(s2x-s1x)<=0)) then begin estou:=Iinterieur; exit; end; if ( (d1=abs(r1)) and (d2>abs(r2)) and ((x-c1x)*(s2x-s1x)+(y-c1y)*(s2y-s1y)>=0) and ((x-c2x)*(s2x-s1x)+(y-c2y)*(s2x-s1x)<=0)) then begin estou:=Ibord; exit; end; if ( (d1>abs(r1)) and (d2=abs(r2)) and ((x-c1x)*(s2x-s1x)+(y-c1y)*(s2y-s1y)>=0) and ((x-c2x)*(s2x-s1x)+(y-c2y)*(s2x-s1x)<=0)) then begin estou:=Ibord; exit; end; estou:=Iexterieur; exit; end; {du cas biconcave} {convexe concave, 1er cas} if ((r1>0) and (r2>0)) then begin if ((d1>abs(r1)) and (d2=0)) then begin estou:=Iinterieur; exit; end; if ((d1=abs(r1)) and (d2=0)) then begin estou:=Ibord; exit; end; if ((d1>abs(r1)) and (d2=abs(r2)) and ((x-c1x)*(s2x-s1x)+(y-c1y)*(s2y-s1y)>=0)) then begin estou:=Ibord; exit; end; estou:=Iexterieur; exit; end; {du 1er cas cc} {convexe concave, 2er cas} if ((r1<0) and (r2<0)) then begin if ((d1abs(r2)) and ((x-c1x)*(s2x-s1x)+(y-c1y)*(s2y-s1y)<=0)) then begin estou:=Iinterieur; exit; end; if ((d1=abs(r1)) and (d2>abs(r2)) and ((x-c1x)*(s2x-s1x)+(y-c1y)*(s2y-s1y)<=0)) then begin estou:=Ibord; exit; end; if ((d1indicevert) or (indicevert<>indicebleu) or (indicerouge<>indicebleu); end; function polycercle.dispersif:boolean; begin dispersif:=(indicerouge<>indicevert) or (indicevert<>indicebleu) or (indicerouge<>indicebleu); end; function sphere.estou(x,y:extended):ttypeinterieur; begin if sqrt(sqr(x-cx)+sqr(y-cy))>rayon then begin estou:=iexterieur; exit; end; if sqrt(sqr(x-cx)+sqr(y-cy))=xxmax) or (_cx-_rayon<=xxmin) or (_cy+_rayon>=yymax) or (_cy-_rayon<=yymin)) then begin create:=false; exit; end; create:=true; cx:=_cx; cy:=_cy; rayon:=_rayon; indicerouge:=_indicerouge; indicebleu:=_indicebleu; indicevert:=_indicevert; ReflechiEntrant:=_ReflechiEntrant; ReflechiSortant:=_ReflechiSortant; couleurbord:=_couleurbord; couleurfond:=_couleurfond; modifie:=true; end; function sphere.dispersif:boolean; begin dispersif:=(indicerouge<>indicevert) or (indicevert<>indicebleu) or (indicerouge<>indicebleu); end; procedure sphere.dessine(mc:tmonbitmap); begin mc.disque(cx,cy,rayon,couleurbord,couleurfond,false,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin if modemodif then mc.croixx(cx,cy,3, 2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx+rayon,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx-rayon,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy+rayon,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy-rayon,3, 1,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(cx,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx+rayon,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx-rayon,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx,cy+rayon,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx,cy-rayon,3, 1,couleursuppression,pmcopy,true); end; end; procedure sphere.dessinePS(mc:tmonpostscript); begin mc.disque(cx,cy,rayon,couleurbord,couleurfond,false,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin if modemodif then mc.croixx(cx,cy,3, 2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx+rayon,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx-rayon,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy+rayon,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy-rayon,3, 1,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(cx,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx+rayon,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx-rayon,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx,cy+rayon,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx,cy-rayon,3, 1,couleursuppression,pmcopy,true); end; end; procedure sphere.imprime(mc:tmyimprimante); begin mc.disque(cx,cy,rayon,couleurbord,couleurfond,false,true); if modegroupement then mc.croixx(cx,cy,3, 2,clpurple,pmcopy,true); if ((modemodif or modeinfo) and not(modeduplication)) then begin if modemodif then mc.croixx(cx,cy,3, 2,couleurtrans,pmcopy,true) else mc.cercle(cx,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx+rayon,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx-rayon,cy,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy+rayon,3, 1,couleurpoignees,pmcopy,true); mc.cercle(cx,cy-rayon,3, 1,couleurpoignees,pmcopy,true); end; if modeduplication then mc.cercle(cx,cy,3, 1,couleurpoignees,pmcopy,true); if (modesuppression) then begin mc.cercle(cx,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx+rayon,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx-rayon,cy,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx,cy+rayon,3, 1,couleursuppression,pmcopy,true); mc.cercle(cx,cy-rayon,3, 1,couleursuppression,pmcopy,true); end; end; initialization {$ifndef darwin} application.UpdateFormatSettings:=false; {$endif} DefaultFormatSettings.DecimalSeparator:='.'; taillepoint:=3; stylepoint:=tpcroixp; couleurpoint:=clblue; signaler:=true; tracergrille:=false; attractiongrille:=false; grillex:=20; grilley:=20; nombrecopies:=1; graphepresent:=false; tracesegment:=false; point1fait:=false; point2fait:=false; point3fait:=false; point4fait:=false; foyerfait:=false; sourcefaite:=false; ajoutrayon:=false; ajoutrayon:=false; ajoutMscopa:=false; ajoutMscepa:=false; ajoutlmc:=false; ajoutlmd:=false; modifencours:=false; ajoutMscore:=false; ajoutMscere:=false; ajoutsphere:=false; ajoutsourceponctuelle:=false; modemodif:=false; modeduplication:=false; ajoutondeplane:=false; modedistance:=false; modesuppression:=false; modegroupement:=false; couleursuppression:=clred; couleurreseau:=clblue; epaisseurreseau:=1; couleurmiroirplan:=clblack; epaisseurmiroirplan:=1; couleurmscopa:=clblack; epaisseurmscopa:=1; couleuraxemscopa:=clblue; couleurmscepa:=clblack; epaisseurmscepa:=1; couleuraxemscepa:=clblue; couleurmscore:=clblack; epaisseurmscore:=1; couleuraxemscore:=clblue; couleurmscere:=clblack; epaisseurmscere:=1; couleuraxemscere:=clblue; couleurlmc:=clblue; epaisseurlmc:=1; couleuraxelmc:=clFuchsia; couleurlmd:=clblue; epaisseurlmd:=1; couleuraxelmd:=clFuchsia; couleurlec:=claqua; couleuraxelec:=clred; epaisseurlec:=1; couleurrayon:=clred; epaisseurrayon:=1; couleurondeplane:=clred; epaisseurondeplane:=1; couleursourceponctuelle:=clred; epaisseursourceponctuelle:=1; couleurecran:=clblack; epaisseurecran:=2; couleurlsr:=clblack; epaisseurlsr:=1; couleurpolyhedre:=claqua; epaisseurpolyhedre:=1; couleurprisme:=claqua; epaisseurprisme:=1; couleurpolycercle:=claqua; epaisseurpolycercle:=1; couleursphere:=claqua; epaisseursphere:=1; couleurmiroirconique:=clblack; couleuraxemiroirconique:=clblue; couleurtexte:=clblack; taillefontetexte:=10; couleurdiaphragme:=clblack; epaisseurdiaphragme:=1; couleurfleche:=clblack; epaisseurfleche:=1; couleuroeil:=clgreen; epaisseuroeil:=1; couleurangle:=clblack; epaisseurangle:=1; couleurmetre:=clblack; epaisseurmetre:=1; couleurpoignees:=clblue; couleurnormale:=clblack; epaisseurnormale:=1; pourcentagenormale:=0.05; optionnormale:=true; optionangles:=false; nombrerayon:=0; nombremiroirplan:=0; nombrefleche:=0; nombrereseau:=0; nombreecran:=0; nombregroupe:=0; nombreMscopa:=0; nombreMscepa:=0; nombrelmc:=0; nombrelmd:=0; nombreMscore:=0; nombreMscere:=0; nombresourceponctuelle:=0; zoomfactor:=1; nombreondeplane:=0; nombretotalsegment:=0; nombrenormale:=0; nombrepolyhedre:=0; nombresphere:=0; nombremetre:=0; nombreangle:=0; nombreprisme:=0; nombremiroirconique:=0; nombreanglesatracer:=0; nombrepolycercle:=0; nombretexte:=0; nombrediaphragme:=0; respectrapport:=false; CreePmiroirplan(listemiroirplan,0); creepfleche(listefleche,0); CreePreseau(listereseau,0); creepecran(listeecran,0); creepoeil(listeoeil,0); creepgroupe(listegroupe,0); creePMscopa(ListeMscopa,0); creeplsr(listelsr,0); creePMscepa(ListeMscepa,0); CreePpolyhedre(listepolyhedre,0); creeppolycercle(listepolycercle,0); creePMscore(ListeMscore,0); creepsphere(listesphere,0); creePMscere(ListeMscere,0); creepmetre(listemetre,0); creepangle(listeangle,0); creePlmc(Listelmc,0); creeplec(listelec,0); creepangle(listeanglesatracer,0); creepmiroirconique(listemiroirconique,0); creePlmd(Listelmd,0); creeptexteaffiche(listetexteaffiche,0); creePrayon(Listerayon,0); creepdiaphragme(listediaphragme,0); creePSourcePonctuelle(ListeSourcePonctuelle,0); creePOndePlane(ListeOndePlane,0); xxmin:=0; xxmax:=0; yymin:=0; yymax:=0; creepsegment(listesegment,0); creepsegment(listenormale,0); decimalesangles:=0; nomsauvegarde:=''; fantomespresents:=false; listefantomes:=''; unitelongueur:='mm'; maxrayonsrecherchesurfacesonde:=20; couleurtrans:=clgreen; couleurfondsimulation:=clwhite; modifie:=false; lastx:=0; lasty:=0; positionempennage:=500; tailleempennage:=5; couleurglobale:=clblack; couleurglobaleaxe:=clred; couleurglobalerayon:=clred; epaisseurglobale:=1; longueur_donde_red:=632e-9; longueur_donde_blue:=450e-9; longueur_donde_green:=520e-9; end. optgeo-2.21/saisielec.pas0000750000175000017500000001617312247333133015606 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisielec; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisielentille } Tsaisielentille = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; StaticText5: TLabel; StaticText6: TLabel; edits1x: TEdit; edits1y: TEdit; edits2x: TEdit; edits2y: TEdit; Image1: TImage; GroupBox2: TGroupBox; StaticText7: TLabel; StaticText8: TLabel; StaticText9: TLabel; StaticText10: TLabel; editr1: TEdit; editr2: TEdit; GroupBox3: TGroupBox; StaticText11: TLabel; editdiametre: TEdit; GroupBox4: TGroupBox; StaticText12: TLabel; StaticText13: TLabel; StaticText14: TLabel; editnrouge: TEdit; editnvert: TEdit; editnbleu: TEdit; boutonsup: TBitBtn; GroupBox5: TGroupBox; ColorGrid1: TColorBox; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; log6: TLabel; log7: TLabel; StaticText15: TLabel; combomateriaux: TComboBox; procedure BitBtn1Click(Sender: TObject); procedure combomateriauxChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisielentille: Tsaisielentille; lec_s1x,lec_s1y,lec_s2x,lec_s2y,lec_r1,lec_r2,lec_nr,lec_nv,lec_nb, lec_diametre:extended; implementation uses unit222; procedure Tsaisielentille.BitBtn1Click(Sender: TObject); begin try lec_s1x:=strtofloat(edits1x.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce17), pchar(rsAttention), mb_ok); exit; end; end; try lec_s1y:=strtofloat(edits1y.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce18), pchar(rsattention),mb_ok); exit; end; end; try lec_s2x:=strtofloat(edits2x.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce19), pchar(rsattention),mb_ok); exit; end; end; try lec_s2y:=strtofloat(edits2y.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce20), pchar(rsattention),mb_ok); exit; end; end; try lec_r1:=strtofloat(editr1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce21), pchar(rsattention),mb_ok); exit; end; end; try lec_r2:=strtofloat(editr2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce22), pchar(rsattention),mb_ok); exit; end; end; try lec_nr:=strtofloat(editnrouge.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce4), pchar(rsattention),mb_ok); exit; end; end; try lec_nv:=strtofloat(editnvert.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce5), pchar(rsattention),mb_ok); exit; end; end; try lec_nb:=strtofloat(editnbleu.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce6), pchar(rsattention),mb_ok); exit; end; end; try lec_diametre:=abs(strtofloat(editdiametre.text)); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce23), pchar(rsattention),mb_ok); exit; end; end; ReTaillePlec(Listelec,nombrelec,nombrelec+1); inc(nombrelec); if not (Listelec[-1+nombrelec].create(lec_s1x,lec_s1y,lec_s2x,lec_s2y,lec_r1,lec_r2, lec_diametre,colorgrid1.selected,clred,true,lec_nr,lec_nb,lec_nv ,jamaisreflechi,jamaisreflechi)) then begin ReTaillePlec(Listelec,nombrelec,nombrelec-1); dec(nombrelec); application.messagebox(pchar(rsTypeDeLentil), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisielentille.combomateriauxChange(Sender: TObject); begin if combomateriaux.itemindex=0 then exit; editnrouge.text:=listenrouge.strings[combomateriaux.itemindex]; editnvert.text:=listenvert.strings[combomateriaux.itemindex]; editnbleu.text:=listenbleu.strings[combomateriaux.itemindex]; end; procedure Tsaisielentille.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet5; CAPTION :=rsAjoutDUneLen4; if decimalseparator=',' then EDITNBLEU.TEXT :=rs17 else EDITNBLEU.TEXT :=rs17b; if decimalseparator=',' then EDITNROUGE.TEXT :=rs15 else EDITNROUGE.TEXT :=rs15b; if decimalseparator=',' then EDITNVERT.TEXT :=rs16 else EDITNVERT.TEXT :=rs16b; GROUPBOX1.CAPTION :=rsCoordonnEsDe3; GROUPBOX2.CAPTION :=rsRayonsDeCour; GROUPBOX3.CAPTION :=rsDiamTre; GROUPBOX4.CAPTION :=rsIndiceDeRFra2; GROUPBOX5.CAPTION :=rsCouleurLCran5; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; LOG5.CAPTION :=rsLog5; LOG6.CAPTION :=rsLog6; LOG7.CAPTION :=rsLog7; STATICTEXT1.CAPTION :=rsSommetS1; STATICTEXT10.CAPTION :=rsR2; STATICTEXT11.CAPTION :=rsD; STATICTEXT12.CAPTION :=rsPourLeRouge; STATICTEXT13.CAPTION :=rsPourLeVert; STATICTEXT14.CAPTION :=rsPourLeBleu; STATICTEXT15.CAPTION :=rsMatRiau; STATICTEXT2.CAPTION :=rsSommetS2; STATICTEXT3.CAPTION :=rsX; STATICTEXT4.CAPTION :=rsY; STATICTEXT5.CAPTION :=rsX; STATICTEXT6.CAPTION :=rsY; STATICTEXT7.CAPTION :=rsSigneSiCentr; STATICTEXT8.CAPTION :=rsSurLAxeOrien; STATICTEXT9.CAPTION :=rsR1; end; procedure Tsaisielentille.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisielec.lrs} end. optgeo-2.21/monbitmap.pas0000750000175000017500000016212612247333133015633 0ustar georgeskgeorgeskunit MonBitmap; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,LCLProc,Math,LCLType {$ifdef windows},Windows{$endif}; type TMonBitmap =Object Xmin,Xmax,Ymin1,Ymax1,Ymin2,Ymax2,GraduationX, GraduationY1,GraduationY2:extended; Largeur,Hauteur,BordureBasse,BordureHaute, BordureGauche,BordureDroite,EpaisseurGrille,PuissanceDeDixX, PuissancedeDixY1,PuissancedeDixY2,epaisseurcadre,epaisseurgraduation:integer; longueurgraduationX,longueurgraduationY1,longueurgraduationY2:extended; PasGrillex,PasGrilley1,PasGrilley2:extended; couleurfondsim,couleurcadre,couleurgraduation, couleurgrille1,couleurgrille2:tcolor; cadre,gradue,grille1,grille2,fond,borduresverticalessymetriques,echelle_g,echelle_d:boolean; titre,labelx,labely1,labely2,unitex,unitey1,unitey2:string; fontegraduation:tfont; fontetitre:tfont; procedure background(couleur:tcolor); function LimitesEtAxes(_xmin,_xmax,_ymin1,_ymax1,_ymin2,_ymax2:extended; _Largeur,_Hauteur:integer; _titre:string; _fontetitre:tfont; _Fond:boolean; _CouleurFondsim:tcolor; _Cadre:boolean; _EpaisseurCadre:integer; _CouleurCadre:tcolor; _Gradue:boolean; _EpaisseurGraduation,_LongueurGraduation:integer; _couleurgraduation:tcolor; _fontegraduation:tfont; _Grille1,_Grille2:boolean; _EpaisseurGrille:integer; _CouleurGrille1,_CouleurGrille2:tcolor; _labelx,_labely1,_labely2,_unitex,_unitey1,_unitey2:string; _borduresverticalessymetriques, _echelle_g,_echelle_d:boolean):boolean; procedure dessinergrille(pas_grillex,pas_grilley:extended); procedure arronditalagrille(var x1,y1:extended;pas_grillex,pas_grilley:extended); function invconvert(var xi,yi:integer; x,y:extended;gauche:boolean):boolean; function Convert(xi,yi:integer; var x,y:extended;gauche:boolean):boolean; function CroixX(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function CroixP(x,y:extended; demi_longueur,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function Carreau(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function Trait(x1,y1,x2,y2:extended; epaisseur:integer; couleur:tcolor; sty:tpenstyle; _penmod:tpenmode;gauche:boolean):boolean; function Point(x,y:extended; rayon:integer; couleur:tcolor; _penmod:tpenmode;gauche:boolean):boolean; function cercle(x,y:extended; rayon,epaisseur:integer; couleur:tcolor; _penmod:tpenmode;gauche:boolean):boolean; function disque(x,y:extended; rayon:extended; couleurbord,couleurf:tcolor;_transparent:boolean;gauche:boolean): boolean; function disque2(x,y:extended; rayon:integer; couleurbord,couleurf:tcolor;gauche:boolean): boolean; function arcdecercle(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean):boolean; function arcdecercleoriente(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean;trigodirect:boolean):boolean; function tracepolygone(nombrepoint:integer;listex,listey:array of extended; couleurbord,couleurf:tcolor; _transparent:boolean;_mode:tpenmode; gauche:boolean):boolean; procedure traceconique(theta0,theta1,theta2,fx,fy,excentricite,parametre:extended; couleur:tcolor;gauche:boolean); procedure arronditalagrille(var x1,y1:extended;gauche:boolean); procedure ecrire(x,y:extended; s:string;gauche:boolean; police:tfont); procedure ecrireI(x,y:integer; s:string; police:tfont); procedure tracelec(c1x,c1y,r1,c2x,c2y,r2:extended;couleurfond:tcolor); procedure graduation(xi,xa:extended; var xci,xca:extended; var graduation:extended; var PuissanceDeDix:integer; var nombregraduation:integer); end; procedure echange(var a,b:extended); procedure echange_entiers(var a,b:integer); function partieentiere(x:extended):extended; function dix_pp(p:longint):extended; implementation uses Unit222,ray1; procedure TMonBitmap.tracelec(c1x,c1y,r1,c2x,c2y,r2:extended;couleurfond:tcolor); var x1,y1,rx,ry,res:integer; rgn1,rgn2,rgn:hrgn; begin x1:= trunc((c1x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax1-c1y)/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; rx:= trunc(abs(r1)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); ry:=trunc(abs(r1)/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse)); {$ifdef windows} rgn1:=windows.CreateEllipticRgn(x1-rx,y1-ry,x1+rx,y1+ry); if rgn1=NULLREGION then begin windows.deleteobject(rgn1); exit; end; x1:= trunc((c2x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax1-c2y)/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; rx:= trunc((abs(r2))/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); ry:=trunc((abs(r2))/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse)); rgn2:=windows.CreateEllipticRgn(x1-rx,y1-ry,x1+rx,y1+ry); if rgn2=NULLREGION then begin windows.deleteobject(rgn2); exit; end; rgn:=windows.CreateEllipticRgn(x1-rx,y1-ry,x1+rx,y1+ry); if r1*r2<0 then res:=windows.combinergn(rgn,rgn1,rgn2,RGN_AND) else if abs(r1)>abs(r2) then res:=windows.combinergn(rgn,rgn2,rgn1,RGN_DIFF) else res:=windows.combinergn(rgn,rgn1,rgn2,RGN_DIFF); if res=ERROR then begin windows.deleteobject(res); exit; end; form1.image1.Picture.Bitmap.Canvas.brush.color:=couleurfond; form1.image1.Picture.Bitmap.Canvas.brush.style:=bsSolid; windows.FillRgn(form1.image1.Picture.Bitmap.Canvas.handle,rgn,form1.image1.Picture.Bitmap.Canvas.brush.handle); windows.DeleteObject(rgn); windows.deleteobject(rgn1); windows.deleteobject(rgn2); form1.image1.Picture.Bitmap.Canvas.brush.color:=clwhite; {$endif} end; procedure TMonBitmap.arronditalagrille(var x1,y1:extended;pas_grillex,pas_grilley:extended); var newx,newy,divx,divy,fracx,fracy:extended; begin divx:=partieentiere((x1-xmin)/pas_grillex); divy:=partieentiere((y1-ymin1)/pas_grilley); fracx:=x1-xmin-divx*pas_grillex; fracy:=y1-ymin1-divy*pas_grilley; if fracx>0.5*pas_grillex then newx:=xmin+(divx+1)*pas_grillex else newx:=xmin+divx*pas_grillex; if fracy>0.5*pas_grilley then newy:=ymin1+(divy+1)*pas_grilley else newy:=ymin1+divy*pas_grilley; x1:=newx; y1:=newy; end; procedure TMonBitmap.dessinergrille(pas_grillex,pas_grilley:extended); var i,j,x1,y1:integer; x,y:extended; begin for i:=1 to trunc((xmax-xmin)/pas_grillex) do for j:=1 to trunc((ymax1-ymin1)/pas_grilley) do begin x:=xmin+i*pas_grillex; y:=ymin1+j*pas_grilley; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax1-y)/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; form1.image1.Picture.Bitmap.Canvas.pixels[x1,y1]:=couleurgrille1; end; end; procedure TMonBitmap.graduation(xi,xa:extended; var xci,xca:extended; var graduation:extended; var PuissanceDeDix:integer; var nombregraduation:integer); var n,gm,g,d,logd,tht:extended; p,i,xpa,xpi:longint; res:array[1..12] of extended; nb:longint; begin if xa=0) then p :=longint(trunc(logd)) else p:=longint(trunc(logd)-1); PuissanceDeDix:=p; if xa>=0 then begin gm:=trunc(xa/dix_pp(p-1))*dix_pp(p-1); if (gm>=xa) then xpa:=trunc(xa/dix_pp(p-1)) else xpa:=trunc(xa/dix_pp(p-1))+1; end; if xa<0 then begin gm:=trunc(xa/dix_pp(p-1))*dix_pp(p-1); if (gm>=xa) then xpa:=trunc(xa/dix_pp(p-1)) else xpa:=trunc(xa/dix_pp(p-1)); end; if xi>=0 then begin gm:=trunc(xi/dix_pp(p-1))*dix_pp(p-1); if (gm<=xi) then xpi:=trunc(xi/dix_pp(p-1)) else xpi:=trunc(xi/dix_pp(p-1))-1; end; if xi<0 then begin gm:=trunc(xi/dix_pp(p-1))*dix_pp(p-1); if (gm<=xi) then xpi:=trunc(xi/dix_pp(p-1)) else xpi:=trunc(xi/dix_pp(p-1))-1; end; case (xpa-xpi ) of 1: g:=0.1; 2: g:=0.2; 3,4,5: g:=0.5; 6,7,8,9,10: g:=1; else g:=trunc((xpa-xpi-1)/10+0.001)+1; end; graduation:=g*dix_pp(p-1); {xca:=xpa*dix_pp(p-1); nombregraduation:=trunc((xpa-xpi)/g); xci:=xca-graduation*nombregraduation; if xci>xi then begin xci:=xci-graduation; inc(nombregraduation); end; } xci:=xpi*dix_pp(p-1); nombregraduation:=trunc((xpa-xpi)/g); xca:=xci+graduation*nombregraduation; if xca1) then begin inter:=10; for i:=1 to p-1 do inter:=inter*10; result:=inter; end else if (p=-1) then begin result:=1/10; end; end; function partieentiere(x:extended):extended; begin if x>=0 then begin partieentiere:=int(x); exit; end; if frac(x)=0 then begin partieentiere:=x; exit; end; {cas ou x est <0 et non entier} partieentiere:=int(x)-1; end; function TMonBitmap.disque2(x,y:extended; rayon:integer; couleurbord,couleurf:tcolor;gauche:boolean): boolean; var x1,y1,r1x,r1y:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin disque2:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; if rayon=0 then exit; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleurbord; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.width:=1; form1.image1.Picture.Bitmap.Canvas.pen.mode:=pmcopy; disque2:=true; form1.image1.Picture.Bitmap.Canvas.brush.style:=bssolid; form1.image1.Picture.Bitmap.Canvas.brush.color:=couleurf; form1.image1.Picture.Bitmap.Canvas.ellipse(x1-rayon,y1-rayon,x1+rayon, y1+rayon); form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; function TMonBitmap.Carreau(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin carreau:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseur; form1.image1.Picture.Bitmap.Canvas.pen.mode:=penmod; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleur; form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1+demi_diagonale); form1.image1.Picture.Bitmap.Canvas.lineto(x1+demi_diagonale,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1,y1-demi_diagonale); form1.image1.Picture.Bitmap.Canvas.lineto(x1-demi_diagonale,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1,y1+demi_diagonale); carreau:=true; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; procedure echange_entiers(var a,b:integer); var c:integer; begin c:=a; a:=b; b:=c; end; procedure echange(var a,b:extended); var c:extended; begin c:=a; a:=b; b:=c; end; procedure TMonBitmap.traceconique(theta0,theta1,theta2,fx,fy,excentricite,parametre:extended; couleur:tcolor;gauche:boolean); var pas,theta,r,ract,thetaact,nx,ny,ttai:extended; nombrepas,i:integer; ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; nombrepas:=1000; pas:=(theta2-theta1)/nombrepas; thetaact:=theta1; ract:=parametre/(1+excentricite*cos(thetaact-theta0)); for i:=1 to nombrepas do begin theta:=theta1+i*pas; r:=parametre/(1+excentricite*cos(theta-theta0)); if ((r>0) and (ract>0)) then trait(fx+ract*cos(thetaact),fy+ract*sin(thetaact),fx+r*cos(theta),fy+r*sin(theta), 1,couleur,pssolid,pmcopy,gauche); thetaact:=theta; ract:=r; end; end; function TMonBitmap.tracepolygone(nombrepoint:integer;listex,listey:array of extended; couleurbord,couleurf:tcolor;_transparent:boolean;_mode:tpenmode;gauche:boolean):boolean; var i,x1,y1:integer; titi:array of tpoint; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; setlength(titi,nombrepoint); for i:=1 to nombrepoint do begin x1:= trunc((listex[i-1]-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-listey[i-1])/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; titi[i-1].x:=x1; titi[i-1].y:=y1; end; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=couleurbord; form1.image1.Picture.Bitmap.Canvas.brush.color:=couleurf; form1.image1.Picture.Bitmap.Canvas.brush.style:=bsSolid; form1.image1.Picture.Bitmap.Canvas.pen.Color:=couleurbord; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.Width:=1; form1.image1.Picture.Bitmap.Canvas.pen.Mode:=pmcopy; if not(_transparent) then form1.image1.Picture.Bitmap.Canvas.brush.style:=bsSolid else form1.image1.Picture.Bitmap.Canvas.brush.style:=bsclear; form1.image1.Picture.Bitmap.Canvas.Polygon(titi,false,0,nombrepoint); form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; function TMonBitmap.arcdecercle(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean): boolean; var x1,y1,rax,ray:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; t1,t2:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; { if ((xxmax) or (y>ymax) or (yt2 then t1:=t1-2*Pi; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseur; form1.image1.Picture.Bitmap.Canvas.pen.Style:=_style; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin form1.image1.Picture.Bitmap.Canvas.pen.mode:=pmxor; form1.image1.Picture.Bitmap.Canvas.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin form1.image1.Picture.Bitmap.Canvas.pen.color:=couleur; form1.image1.Picture.Bitmap.Canvas.pen.mode:=_penmod; end; arcdecercle:=true; form1.image1.Picture.Bitmap.Canvas.brush.style:=bsclear; form1.image1.Picture.Bitmap.Canvas.arc(x1-rax,y1-ray,x1+rax,y1+ray,trunc(t1/Pi*180*16),trunc((t2-t1)/Pi*180*16)); arcdecercle:=true; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; function TMonBitmap.arcdecercleoriente(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean;trigodirect:boolean): boolean; var x1,y1,rax,ray:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; t1,t2,dt:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; { if ((xxmax) or (y>ymax) or (y2*Pi then dt:=dt-2*pi; // if t1>t2 then t1:=t1-2*Pi; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseur; form1.image1.Picture.Bitmap.Canvas.pen.Style:=_style; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin form1.image1.Picture.Bitmap.Canvas.pen.mode:=pmxor; form1.image1.Picture.Bitmap.Canvas.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin form1.image1.Picture.Bitmap.Canvas.pen.color:=couleur; form1.image1.Picture.Bitmap.Canvas.pen.mode:=_penmod; end; arcdecercleoriente:=true; form1.image1.Picture.Bitmap.Canvas.brush.style:=bsclear; if trigodirect then form1.image1.Picture.Bitmap.Canvas.arc(x1-rax,y1-ray,x1+rax,y1+ray,trunc(t1/Pi*180*16),trunc(dt/Pi*180*16)) else form1.image1.Picture.Bitmap.Canvas.arc(x1-rax,y1-ray,x1+rax,y1+ray,trunc(t2/Pi*180*16),trunc(dt/Pi*180*16)); arcdecercleoriente:=true; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; function TMonBitmap.Point(x,y:extended; rayon:integer; couleur:tcolor ; _penmod:tpenmode;gauche:boolean): boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; invconvert(x1,y1,x,y,true); if ((xxmax) or (y>ymax) or (y=xmax) or (yymax) or (rayon=0)) then begin cercle:=false; exit; end; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseur; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin form1.image1.Picture.Bitmap.Canvas.pen.mode:=pmxor; form1.image1.Picture.Bitmap.Canvas.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin form1.image1.Picture.Bitmap.Canvas.pen.color:=couleur; form1.image1.Picture.Bitmap.Canvas.pen.mode:=_penmod; end; cercle:=true; form1.image1.Picture.Bitmap.Canvas.brush.style:=bsclear; form1.image1.Picture.Bitmap.Canvas.arc(xx1-rayon,yy1-rayon,xx1+rayon,yy1+rayon,0, 360*16); form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; function TMonBitmap.disque(x,y:extended; rayon:extended; couleurbord,couleurf:tcolor;_transparent:boolean;gauche:boolean): boolean; var x1,y1,r1x,r1y:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin disque:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; r1x:= trunc(rayon/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); r1y:=trunc((rayon)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if rayon=0 then exit; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleurbord; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.width:=1; form1.image1.Picture.Bitmap.Canvas.pen.mode:=pmcopy; disque:=true; form1.image1.Picture.Bitmap.Canvas.brush.color:=couleurf; if not(_transparent) then form1.image1.Picture.Bitmap.Canvas.brush.style:=bssolid else form1.image1.Picture.Bitmap.Canvas.brush.style:=bsclear; form1.image1.Picture.Bitmap.Canvas.ellipse(x1-r1x,y1-r1y,x1+r1x, y1+r1y); form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; function TMonBitmap.Trait(x1,y1,x2,y2:extended; epaisseur:integer; couleur:tcolor;sty:tpenstyle; _penmod:tpenmode;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; xi1,yi1,xi2,yi2:integer; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; if xmax=xmin then exit; if ymax=ymin then exit; if ((x1>xmax) or (x1ymax) or (y1xmax) or (x2ymax) or (y2=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin croixp:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseur; form1.image1.Picture.Bitmap.Canvas.pen.mode:=penmod; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleur; form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1,y1+demi_longueur); form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1,y1-demi_longueur); form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1+demi_longueur,y1); form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1-demi_longueur,y1); croixp:=true; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; procedure TMonBitmap.arronditalagrille(var x1,y1:extended;gauche:boolean); var newx,newy,divx,divy,fracx,fracy:extended; ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; divx:=partieentiere((x1-xmin)/pasgrillex); divy:=partieentiere((y1-ymin)/pasgrilley); fracx:=x1-xmin-divx*pasgrillex; fracy:=y1-ymin-divy*pasgrilley; if fracx>0.5*pasgrillex then newx:=(divx+1)*pasgrillex else newx:=divx*pasgrillex; if fracy>0.5*pasgrilley then newy:=(divy+1)*pasgrilley else newy:=divy*pasgrilley; x1:=newx; y1:=newy; end; procedure TMonBitmap.ecrireI(x,y:integer; s:string; police:tfont); var xi,yi:integer; old_font:tfont; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfondsimulation; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=bsclear; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=couleurfondsimulation; old_font:=form1.image1.Picture.Bitmap.Canvas.Font; form1.image1.Picture.Bitmap.Canvas.Font:=police; form1.image1.Picture.Bitmap.Canvas.textout(x,y,s); form1.image1.Picture.Bitmap.Canvas.Font:=old_font; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; procedure TMonBitmap.ecrire(x,y:extended; s:string;gauche:boolean; police:tfont); var xi,yi:integer; old_font:tfont; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=couleurfondsimulation; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=bsclear; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=couleurfondsimulation; invconvert(xi,yi,x,y,gauche); old_font:=form1.image1.Picture.Bitmap.Canvas.Font; form1.image1.Picture.Bitmap.Canvas.Font:=police; form1.image1.Picture.Bitmap.Canvas.textout(xi,yi,s); form1.image1.Picture.Bitmap.Canvas.Font:=old_font; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; procedure TMonBitmap.background(couleur:tcolor); var old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=couleur; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=bssolid; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=couleur; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=pmcopy; form1.image1.Picture.Bitmap.Canvas.Rectangle(0,0,largeur,hauteur); form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; function TMonBitmap.LimitesEtAxes(_xmin,_xmax,_ymin1,_ymax1,_ymin2,_ymax2:extended; _Largeur,_Hauteur:integer; _titre:string; _fontetitre:tfont; _Fond:boolean; _CouleurFondsim:tcolor; _Cadre:boolean; _EpaisseurCadre:integer; _CouleurCadre:tcolor; _Gradue:boolean; _EpaisseurGraduation,_LongueurGraduation:integer; _couleurgraduation:tcolor; _fontegraduation:tfont; _Grille1,_Grille2:boolean; _EpaisseurGrille:integer; _CouleurGrille1,_CouleurGrille2:tcolor; _labelx,_labely1,_labely2,_unitex,_unitey1,_unitey2:string; _borduresverticalessymetriques, _echelle_g,_echelle_d:boolean):boolean; var xi,xa,yi1,yi2,ya1,ya2,gi,ga:extended; t1,t2,i:integer; dixx,dixy1,dixy2,tt,aff:string; nbgx,nbgy1,nbgy2:integer; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; old_font:tfont; begin old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; old_font:=form1.image1.Picture.Bitmap.Canvas.Font; fond:=_fond; echelle_g:=_echelle_g; echelle_d:=_echelle_d; borduresverticalessymetriques:=_borduresverticalessymetriques; labelx:=_labelx; labely1:=_labely1; labely2:=_labely2; unitex:=_unitex; unitey1:=_unitey1; unitey2:=_unitey2; fontetitre:=_fontetitre; largeur:=_largeur; hauteur:=_hauteur; // self.Width:=largeur; //self.Height:=hauteur; titre:=_titre; couleurfondsim:=_couleurfondsim; cadre:=_cadre; epaisseurcadre:=_epaisseurcadre; couleurcadre:=_couleurcadre; gradue:=_gradue; epaisseurgraduation:=_epaisseurgraduation; fontegraduation:=_fontegraduation; couleurgraduation:=_couleurgraduation; grille1:=_grille1; grille2:=_grille2; epaisseurgrille:=_epaisseurgrille; couleurgrille1:=_couleurgrille1; couleurgrille2:=_couleurgrille2; if (echelle_g and ( (_ymin1=_ymax1) or (_xmax=_xmin))) then begin LimitesEtAxes:=false; exit; end; if (echelle_d and ( (_ymin2=_ymax2) or (_xmax=_xmin))) then begin LimitesEtAxes:=false; exit; end; LimitesEtAxes:=true; if (_xmin>_xmax ) then begin xmin:=_xmax; xmax:=_xmin; end else begin xmin:=_xmin; xmax:=_xmax; end; if (_ymin1>_ymax1 ) then begin ymin1:=_ymax1; ymax1:=_ymin1; end else begin ymin1:=_ymin1; ymax1:=_ymax1; end; if (_ymin2>_ymax2 ) then begin ymin2:=_ymax2; ymax2:=_ymin2; end else begin ymin2:=_ymin2; ymax2:=_ymax2; end; if fond then background(couleurfondsim); xi:=xmin; yi1:=ymin1; yi2:=ymin2; xa:=xmax; ya1:=ymax1; ya2:=ymax2; form1.image1.Picture.Bitmap.Canvas.font:=fontetitre; if (titre<>'') then begin t1:=trunc(form1.image1.Picture.Bitmap.Canvas.textheight(titre))+10; end else t1:=10; if gradue then begin form1.image1.Picture.Bitmap.Canvas.font:=fontegraduation; if ((dixy1='0') and (dixy2='0')) then t2:=trunc(form1.image1.Picture.Bitmap.Canvas.textheight('10'+unitex+labelx)*1.5) else t2:=trunc(form1.image1.Picture.Bitmap.Canvas.textheight('10'+unitex+labelx)*2.2); end else t2:=10; if (t1>t2) then bordurehaute:=t1 else bordurehaute:=t2; {version pour optgeo: pas de bordure} bordurehaute:=0; {taille bordure basse} if gradue then begin form1.image1.Picture.Bitmap.Canvas.font:=fontegraduation; t1:=trunc(form1.image1.Picture.Bitmap.Canvas.textheight('x10'))+10; end else t1:=10; bordurebasse:=t1; {version pour optgeo: pas de bordure} bordurebasse:=0; {taille bordure droite} if (gradue and echelle_d) then begin form1.image1.Picture.Bitmap.Canvas.font:=fontegraduation; str( trunc((ymin2)/dix_pp(puissancededixy2-1)),tt); t1:=trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(tt))+10; str( trunc((ymin2+nbgy2*graduationy2)/dix_pp(puissancededixy2-1)),tt); t2:=trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(tt))+10; end else begin t1:=10; t2:=10; end; if t1t2 then borduredroite:=t1 else borduredroite:=t2; {version pour optgeo: pas de bordure} borduredroite:=0; {taille bordure gauche} if (gradue and echelle_g) then begin form1.image1.Picture.Bitmap.Canvas.font:=fontegraduation; str( trunc((ymin1)/dix_pp(puissancededixy1-1)),tt); t1:=trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(tt))+10; str( trunc((ymin1+nbgy1*graduationy1)/dix_pp(puissancededixy1-1)),tt); t2:=trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(tt))+10; end else begin t1:=10; t2:=10; end; if t1t2 then borduregauche:=t1 else borduregauche:=t2; {version pour optgeo: pas de bordure} borduregauche:=0; if borduresverticalessymetriques then begin borduregauche:=max(borduregauche,borduredroite); borduredroite:=borduregauche; end; {longueurgraduation} longueurgraduationX:=_longueurgraduation/largeur*(xmax-xmin); if echelle_g then longueurgraduationy1:=_longueurgraduation/hauteur*(ymax1-ymin1); if echelle_d then longueurgraduationy2:=_longueurgraduation/hauteur*(ymax2-ymin2); if grille1 then begin form1.image1.Picture.Bitmap.Canvas.pen.style:=psdot; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleurgrille1; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseurgrille; for i:=0 to nbgx do trait(xmin+i*graduationx,ymin1,xmin+i*graduationx,ymax1, epaisseurgrille,couleurgrille1,psdot,pmcopy,true); for i:=0 to nbgy1 do trait(xmin,ymin1+i*graduationy1,xmax,ymin1+i*graduationy1, epaisseurgrille,couleurgrille1,psdot,pmcopy,true); end; if grille2 then begin form1.image1.Picture.Bitmap.Canvas.pen.style:=psdot; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleurgrille2; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseurgrille; for i:=0 to nbgx do trait(xmin+i*graduationx,ymin2,xmin+i*graduationx,ymax2, epaisseurgrille,couleurgrille2,psdot,pmcopy,false); for i:=0 to nbgy2 do trait(xmin,ymin2+i*graduationy2,xmax,ymin2+i*graduationy2, epaisseurgrille,couleurgrille2,psdot,pmcopy,false); end; {cadre} if cadre then begin form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseurcadre; form1.image1.Picture.Bitmap.Canvas.pen.mode:=pmcopy; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleurcadre; form1.image1.Picture.Bitmap.Canvas.moveto(BordureGauche,BordureHaute); form1.image1.Picture.Bitmap.Canvas.lineto(largeur-BordureDroite,BordureHaute); form1.image1.Picture.Bitmap.Canvas.lineto(largeur-BordureDroite,hauteur-BordureBasse); form1.image1.Picture.Bitmap.Canvas.lineto(BordureGauche,hauteur-BordureBasse); form1.image1.Picture.Bitmap.Canvas.lineto(BordureGauche,BordureHaute); end; {affichage du titre} form1.image1.Picture.Bitmap.Canvas.font:=fontetitre; while ((form1.image1.Picture.Bitmap.Canvas.textwidth(titre)>largeur) and (form1.image1.Picture.Bitmap.Canvas.Font.Size>1)) do form1.image1.Picture.Bitmap.Canvas.Font.Size:=form1.image1.Picture.Bitmap.Canvas.Font.Size-1; if form1.image1.Picture.Bitmap.Canvas.Font.Size<6 then form1.image1.Picture.Bitmap.Canvas.Font.Size:=6; form1.image1.Picture.Bitmap.Canvas.textout(largeur div 2 -(form1.image1.Picture.Bitmap.Canvas.textwidth(titre) div 2), 2,titre); {graduation} if gradue then begin if dixx='0' then aff:='' else begin aff:='10'; if dixx<>'1' then for i:=1 to length(dixx) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labelx; if ((unitex<>'1') and (unitex<>'')) then aff:=aff+' en '+unitex; form1.image1.Picture.Bitmap.Canvas.font:=fontegraduation; form1.image1.Picture.Bitmap.Canvas.textout(largeur-borduredroite-trunc(form1.image1.Picture.Bitmap.Canvas.textwidth (aff)*1.3),hauteur-bordurebasse- trunc(form1.image1.Picture.Bitmap.Canvas.textheight('x10')*1.3),aff); if ((dixx<>'0') and (dixx<>'1')) then form1.image1.Picture.Bitmap.Canvas.textout(largeur-borduredroite-trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(aff)*1.3)+ trunc(form1.image1.Picture.Bitmap.Canvas.textwidth('10')),hauteur-bordurebasse -trunc(1.9*form1.image1.Picture.Bitmap.Canvas.textheight('x10')), dixx); for i:=0 to nbgx do begin str(round((xmin+i*graduationx)/dix_pp(puissancededixx-1)),tt); form1.image1.Picture.Bitmap.Canvas.textout( trunc(i*graduationx/(xmax-xmin)*(largeur-borduredroite-borduregauche)+ borduregauche)-form1.image1.Picture.Bitmap.Canvas.textwidth(tt) div 2, hauteur-trunc(form1.image1.Picture.Bitmap.Canvas.textheight(dixx)+10),tt); end; if echelle_g then begin if dixy1='0' then aff:='' else begin aff:='10'; if dixy1<>'1' then for i:=1 to length(dixy1) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labely1; if ((unitey1<>'1') and (unitey1<>'')) then aff:=aff+' en '+unitey1; form1.image1.Picture.Bitmap.Canvas.font:=fontegraduation; form1.image1.Picture.Bitmap.Canvas.textout(borduregauche,bordurehaute-trunc(form1.image1.Picture.Bitmap.Canvas.textheight(aff)*1.2),aff); if ((dixy1<>'0') and (dixy1<>'1')) then form1.image1.Picture.Bitmap.Canvas.textout(borduregauche+form1.image1.Picture.Bitmap.Canvas.textwidth('10'),bordurehaute -trunc(form1.image1.Picture.Bitmap.Canvas.textheight(aff)*1.8), dixy1); end; if echelle_d then begin if dixy2='0' then aff:='' else begin aff:='10'; if dixy2<>'1' then for i:=1 to length(dixy2) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labely2; if ((unitey2<>'1') and (unitey2<>'')) then aff:=aff+' en '+unitey2; form1.image1.Picture.Bitmap.Canvas.font:=fontegraduation; form1.image1.Picture.Bitmap.Canvas.textout(largeur-borduredroite-trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(aff)*1.2), bordurehaute-trunc(form1.image1.Picture.Bitmap.Canvas.textheight(aff)*1.2),aff); if ((dixy2<>'0') and (dixy2<>'1')) then form1.image1.Picture.Bitmap.Canvas.textout(largeur-borduredroite-trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(aff)*1.2)+form1.image1.Picture.Bitmap.Canvas.textwidth('10'), bordurehaute -trunc(form1.image1.Picture.Bitmap.Canvas.textheight(aff)*1.8), dixy2); end; if echelle_g then for i:=0 to nbgy1 do begin str( round((ymin1+i*graduationy1)/dix_pp(puissancededixy1-1)),tt); if i=0 then form1.image1.Picture.Bitmap.Canvas.textout( borduregauche-trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(tt)*1.1), trunc(- bordurebasse+hauteur)-form1.image1.Picture.Bitmap.Canvas.textheight(tt) , tt) else form1.image1.Picture.Bitmap.Canvas.textout( borduregauche-trunc(form1.image1.Picture.Bitmap.Canvas.textwidth(tt)*1.1), trunc(-i*graduationy1/(ymax1-ymin1)*(hauteur-bordurehaute-bordurebasse)- bordurebasse+hauteur)-form1.image1.Picture.Bitmap.Canvas.textheight(tt) div 2, tt); end; if echelle_d then for i:=0 to nbgy2 do begin str( round((ymin2+i*graduationy2)/dix_pp(puissancededixy2-1)),tt); if i=0 then form1.image1.Picture.Bitmap.Canvas.textout( largeur-borduredroite+5, trunc(- bordurebasse+hauteur)-form1.image1.Picture.Bitmap.Canvas.textheight(tt) , tt) else form1.image1.Picture.Bitmap.Canvas.textout( largeur-borduredroite+5, trunc(-i*graduationy2/(ymax2-ymin2)*(hauteur-bordurehaute-bordurebasse)- bordurebasse+hauteur)-form1.image1.Picture.Bitmap.Canvas.textheight(tt) div 2, tt); end; if echelle_g then begin for i:=0 to nbgx do trait(xmin+i*graduationx,ymin1,xmin+i*graduationx, ymin1+longueurgraduationy1,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgx do trait(xmin+i*graduationx,ymax1,xmin+i*graduationx, ymax1-longueurgraduationy1,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgy1 do trait(xmin,ymin1+i*graduationy1,xmin+longueurgraduationx,ymin1+i*graduationy1, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgy1 do trait(xmax,ymin1+i*graduationy1,xmax-longueurgraduationx,ymin1+i*graduationy1, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); end; if echelle_d then begin for i:=0 to nbgx do trait(xmin+i*graduationx,ymin2,xmin+i*graduationx, ymin2+longueurgraduationy2,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgx do trait(xmin+i*graduationx,ymax2,xmin+i*graduationx, ymax2-longueurgraduationy2,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgy2 do trait(xmin,ymin2+i*graduationy2,xmin+longueurgraduationx,ymin2+i*graduationy2, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgy2 do trait(xmax,ymin2+i*graduationy2,xmax-longueurgraduationx,ymin2+i*graduationy2, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); end; end; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; form1.image1.Picture.Bitmap.Canvas.font:=old_font; end; function TMonBitmap.Convert(xi,yi:integer; var x,y:extended;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x:=(xi-BordureGauche)*(xmax-xmin)/ (largeur-BordureGauche-BordureDroite) +xmin; y:=-(yi-BordureHaute)*(ymax-ymin)/(hauteur-BordureHaute-BordureBasse) +ymax; convert:=true; end; function TMonBitmap.invconvert(var xi,yi:integer; x,y:extended;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; xi:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; yi:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; invconvert:=true; end; function TMonBitmap.CroixX(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin croixx:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; old_pencolor:=form1.image1.Picture.Bitmap.Canvas.Pen.Color; old_penmode:=form1.image1.Picture.Bitmap.Canvas.Pen.Mode; old_penstyle:=form1.image1.Picture.Bitmap.Canvas.Pen.Style; old_penwidth:=form1.image1.Picture.Bitmap.Canvas.Pen.Width; old_brushcolor:=form1.image1.Picture.Bitmap.Canvas.Brush.Color; old_brushstyle:=form1.image1.Picture.Bitmap.Canvas.Brush.Style; form1.image1.Picture.Bitmap.Canvas.pen.width:=epaisseur; form1.image1.Picture.Bitmap.Canvas.pen.mode:=penmod; form1.image1.Picture.Bitmap.Canvas.pen.style:=pssolid; form1.image1.Picture.Bitmap.Canvas.pen.color:=couleur; form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1+demi_diagonale,y1+demi_diagonale); form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1-demi_diagonale,y1+demi_diagonale); form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1+demi_diagonale,y1-demi_diagonale); form1.image1.Picture.Bitmap.Canvas.moveto(x1,y1); form1.image1.Picture.Bitmap.Canvas.lineto(x1-demi_diagonale,y1-demi_diagonale); croixx:=true; form1.image1.Picture.Bitmap.Canvas.Pen.Color:=old_pencolor; form1.image1.Picture.Bitmap.Canvas.Pen.Mode:=old_penmode; form1.image1.Picture.Bitmap.Canvas.Pen.Style:=old_penstyle; form1.image1.Picture.Bitmap.Canvas.Pen.Width:=old_penwidth; form1.image1.Picture.Bitmap.Canvas.Brush.Color:=old_brushcolor; form1.image1.Picture.Bitmap.Canvas.Brush.Style:=old_brushstyle; end; end. optgeo-2.21/unit11.pas0000750000175000017500000001444512247333133014766 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit11; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,ray1, ExtCtrls,unit222, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisieespacetravail } Tsaisieespacetravail = class(TForm) BitBtn1: TBitBtn; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; cocherespect: TCheckBox; StaticText1: TLabel; StaticText2: TLabel; editxxmax: TEdit; edityymax: TEdit; rapporthl: TGroupBox; StaticText5: TLabel; statrapportactuel: TLabel; StaticText6: TLabel; StaticText7: TLabel; statrapportideal: TLabel; radiounite: TRadioGroup; saisiexxmin: TGroupBox; editxxmin: TEdit; saisieyymin: TGroupBox; edityymin: TEdit; procedure BitBtn1Click(Sender: TObject); procedure editxxmaxChange(Sender: TObject); procedure edityymaxChange(Sender: TObject); procedure editxxminChange(Sender: TObject); procedure edityyminChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisieespacetravail: Tsaisieespacetravail; sa_largeur,sa_hauteur:extended; sa_respect:boolean; sa_yymin,sa_xxmin,sa_xxmax,sa_yymax:extended; implementation procedure Tsaisieespacetravail.BitBtn1Click(Sender: TObject); begin sa_respect:=cocherespect.checked; try sa_xxmin:=strtofloat(editxxmin.text); except application.messagebox(pchar(rsExpressionIl5), pchar(rsattention), mb_ok); exit; end; try sa_yymin:=strtofloat(edityymin.text); except application.messagebox(pchar(rsExpressionIl6), pchar(rsattention), mb_ok); exit; end; try sa_xxmax:=strtofloat(editxxmax.text); except application.messagebox(pchar(rsExpressionIl7), pchar(rsattention), mb_ok); exit; end; try sa_yymax:=strtofloat(edityymax.text); except application.messagebox(pchar(rsExpressionIl8), pchar(rsattention), mb_ok); exit; end; sa_largeur:=sa_xxmax-sa_xxmin; sa_hauteur:=sa_yymax-sa_yymin; if ((sa_hauteur<=0) or (sa_largeur<=0)) then begin application.messagebox(pchar(rsValeurNulleO), pchar(rsattention), mb_ok); exit; end; unitelongueur:=radiounite.items[radiounite.itemindex]; end; procedure Tsaisieespacetravail.editxxmaxChange(Sender: TObject); begin try sa_largeur:=strtofloat(editxxmax.text)-strtofloat(editxxmin.text); except exit; end; try sa_hauteur:=strtofloat(edityymax.text)-strtofloat(edityymin.text); except exit; end; if sa_largeur=0 then exit; statrapportactuel.Caption:=floattostr(sa_hauteur/sa_largeur); end; procedure Tsaisieespacetravail.edityymaxChange(Sender: TObject); begin try sa_largeur:=strtofloat(editxxmax.text)-strtofloat(editxxmin.text); except exit; end; try sa_hauteur:=strtofloat(edityymax.text)-strtofloat(edityymin.text); except exit; end; if sa_largeur=0 then exit; statrapportactuel.Caption:=floattostr(sa_hauteur/sa_largeur); end; procedure Tsaisieespacetravail.editxxminChange(Sender: TObject); begin try sa_largeur:=strtofloat(editxxmax.text)-strtofloat(editxxmin.text); except exit; end; try sa_hauteur:=strtofloat(edityymax.text)-strtofloat(edityymin.text); except exit; end; if sa_largeur=0 then exit; statrapportactuel.Caption:=floattostr(sa_hauteur/sa_largeur); end; procedure Tsaisieespacetravail.edityyminChange(Sender: TObject); begin try sa_largeur:=strtofloat(editxxmax.text)-strtofloat(editxxmin.text); except exit; end; try sa_hauteur:=strtofloat(edityymax.text)-strtofloat(edityymin.text); except exit; end; if sa_largeur=0 then exit; statrapportactuel.Caption:=floattostr(sa_hauteur/sa_largeur); end; procedure Tsaisieespacetravail.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEESPACETRAVAIL.BITBTN1.CAPTION'; :=rsOK; CAPTION :=rsDimensionsDe; COCHERESPECT.CAPTION :=rsRespecterLeR2; EDITXXMIN.TEXT // msgctxt ';TSAISIEESPACETRAVAIL.EDITXXMIN.TEXT'; :=rs0; EDITYYMIN.TEXT // msgctxt ';TSAISIEESPACETRAVAIL.EDITYYMIN.TEXT'; :=rs0; GROUPBOX1.CAPTION :=rsAbscisseMaxi; GROUPBOX2.CAPTION :=rsOrdonnEsMaxi; GROUPBOX3.CAPTION :=rsRepReOrthono; RADIOUNITE.CAPTION :=rsUnitDeLongue; RAPPORTHL.CAPTION // msgctxt ';TSAISIEESPACETRAVAIL.RAPPORTHL.CAPTION'; :=rsRapportHaute; SAISIEXXMIN.CAPTION :=rsAbscisseMini; SAISIEYYMIN.CAPTION :=rsOrdonnEMinim; STATICTEXT1.CAPTION :=rsRemarqueLeNo; STATICTEXT2.CAPTION :=rsLesAnglesLCr; STATICTEXT5.CAPTION :=rsRapport; STATICTEXT6.CAPTION :=rsRapportIdAlP; STATICTEXT7.CAPTION :=rsDeSurfaceDCr; STATRAPPORTACTUEL.CAPTION :=rs2; STATRAPPORTIDEAL.CAPTION :=rs3; radiounite.Items[0]:=rsKm; radiounite.Items[1]:=rsHm; radiounite.Items[2]:=rsDam; radiounite.Items[3]:=rsM; radiounite.Items[4]:=rsDm; radiounite.Items[5]:=rsCm; radiounite.Items[6]:=rsMm; radiounite.Items[7]:=rsM2; end; procedure Tsaisieespacetravail.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit11.lrs} end. optgeo-2.21/listen.sau0000750000175000017500000000131712247333133015142 0ustar georgeskgeorgeskVerre "BK7" 1.52238 1.51680 1.51432 Verre "SF10" 1.746 1.728 1.721 Verre "SF8" 1.705 1.689 1.683 Verre "FK51" 1.49056 1.48656 1.48480 Verre "F2" 1.63208 1.62004 1.61503 Verre "SFL6" 1.82780 1.80518 1.79690 Silice fondue 1.4630 1.4584 1.4565 Verre au fluorure de calcium 1.437 1.434 1.432 Verre "Zerodur" 1.549 1.542 1.539 Eau liquide 1.34009 1.33580 1.32986 Glace d'eau 1.31505 1.31100 1.30712 Diamant 2.44256 2.42600 2.41336 Plexiglass (ou Lucite) 1.498 1.492 1.489 Lustrex (ou Dylebe ou Tyron) 1.604 1.590 1.585 NAS(R) (copolymere) 1.575 1.567 1.558 Lustran (ou Tyril) 1.578 1.571 1.563 Lexan (ou Merlon) 1.599 1.585 1.580 TPX 1.473 1.467 1.464 optgeo-2.21/saisiemconique.lfm0000750000175000017500000004703512247333133016657 0ustar georgeskgeorgeskobject saisiemiroirconique: Tsaisiemiroirconique Left = 200 Height = 456 Top = 108 Width = 543 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un miroir parabolique, elliptique ou hyperbolique' ClientHeight = 456 ClientWidth = 543 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000000000 000000000000000080000080000000808000800000008000800080800000C0C0 C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0F00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF 00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF00000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF00FF0FFFF000FFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF0FFFFFF0FFF0FFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0F FF0FFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF0FFF0FFFFFF0000FFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000FFFFF0FFF0FFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F00FFFF000F0FFFFF FFF000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0FF0FF00FFF0FF00FFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF0F FF0FFF0FFF0FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF0FFF00FFFFFFFFFFFFFFFFF000 0FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF FFFFFFFFF0FFFFFFFFF0FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFF0FFF FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF000FFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFF0 FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFFFFFFFF0000000000000000000000000000000FFFF000FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FFFFFF F0FFFFFFF00FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFFFF00FFFFFFFF0FFFFFFFFFFFFF FF00FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF0F00000FFF0FFFFFFFFF0FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF00000FF0FFFFFFF FF0FFFF00F00FFFFFF00FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF0FFFF0000F0FFFFFFFFF0FFFF0F0FF0FFFFF000FFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF FFFF00000FFF0FFFF00FFFF0F0FF0FFFFF000FFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF0000FFF00FFF0FF0FF0 F0FF0FFFFFF00FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF0FFFFFFFF00000FF0FF00F00FF0F0FF0FFFFFF00FFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFF00 0000F0000000FFF000FF0FFFFFF00FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF0FFF0000F0000FFFFF0F0FF0FFF FFF00FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0FFFFF000FFFF0000000FFFFFF0FF00FFFFFFF00FFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFF00FFFFFFF0000F FFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF000F000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFF00FFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 0FFFFFFFFFFFF00000FFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00000FFFFF FFFFFFFFFF000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF000FFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF00FFFFFF FFFFFFFFF0000FFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF FF00FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF FFFF00000FFFFFFFFF00FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFF00FFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF00FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFF000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0FF000000FFFFFFFFFFFFFFFFFFFFFF0000FFFF000FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF0F0FFFFFFFF FFFFFFFFFFFFFFFFFF00000F000FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF0FF0FF0FFFFFFFFFFFFFFFFFFFFFFFFFF00000 000FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FF0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF0FFFF0FFFFFFFFFFFFF FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FF00FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFF000FFF000F FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF0F0 FF0FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFF0FFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF0FF00FFFFFFFFFFFFFFFFFFFFFF FFFF0000FFF0FFF0FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0FFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF FFFFFFFFFFFFFF00000000FFFFFF000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF000000000000FFF FFF0FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0FFFFFFFFFFFFFFFFFFF00000000000FFFFFFFFFFF0FFF0FFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF0000000 000FFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF00 00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 121 Top = 0 Width = 161 Caption = 'Foyer F' ClientHeight = 103 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editfx: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object editfy: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 0 Height = 81 Top = 128 Width = 129 Caption = 'Couleur du miroir' ClientHeight = 63 ClientWidth = 125 TabOrder = 1 object Colorgrid1: TColorBox Left = 13 Height = 22 Top = 14 Width = 94 ItemHeight = 16 TabOrder = 0 end end object GroupBox6: TGroupBox Left = 272 Height = 65 Top = 0 Width = 153 Caption = 'Paramétre' ClientHeight = 47 ClientWidth = 149 TabOrder = 2 object StaticText5: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'P=' ParentColor = False end object log3: TLabel Left = 120 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object editp: TEdit Left = 24 Height = 21 Top = 16 Width = 89 TabOrder = 0 end end object GroupBox7: TGroupBox Left = 0 Height = 89 Top = 216 Width = 129 Caption = 'Couleur de l''axe' ClientHeight = 71 ClientWidth = 125 TabOrder = 3 object gridaxe: TColorBox Left = 13 Height = 22 Top = 20 Width = 94 ItemHeight = 16 TabOrder = 0 end end object boutonsup: TBitBtn Left = 8 Height = 41 Top = 408 Width = 265 Caption = 'Supprimer ce miroir' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 4 end object GroupBox2: TGroupBox Left = 272 Height = 49 Top = 72 Width = 153 Caption = 'Excentricité' ClientHeight = 31 ClientWidth = 149 TabOrder = 5 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'e=' ParentColor = False end object edite: TEdit Left = 27 Height = 21 Top = 8 Width = 113 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 136 Height = 65 Top = 128 Width = 225 Caption = 'Angle polaire de l''axe focal' ClientHeight = 47 ClientWidth = 221 TabOrder = 6 object StaticText4: TLabel Left = 8 Height = 14 Top = 24 Width = 19 Caption = 't0=' ParentColor = False end object StaticText10: TLabel Left = 144 Height = 14 Top = 24 Width = 17 Caption = 'rad' ParentColor = False end object editt0: TEdit Left = 30 Height = 21 Top = 15 Width = 105 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 136 Height = 105 Top = 200 Width = 224 Caption = 'Angles polaires FMi (extrémités)' ClientHeight = 87 ClientWidth = 220 TabOrder = 7 object StaticText6: TLabel Left = 16 Height = 14 Top = 25 Width = 19 Caption = 't1=' ParentColor = False end object StaticText7: TLabel Left = 16 Height = 14 Top = 56 Width = 19 Caption = 't2=' ParentColor = False end object StaticText8: TLabel Left = 144 Height = 14 Top = 24 Width = 17 Caption = 'rad' ParentColor = False end object StaticText9: TLabel Left = 144 Height = 14 Top = 56 Width = 17 Caption = 'rad' ParentColor = False end object editt1: TEdit Left = 40 Height = 21 Top = 24 Width = 97 TabOrder = 0 end object editt2: TEdit Left = 40 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object GroupBox8: TGroupBox Left = 216 Height = 89 Top = 312 Width = 144 Caption = 'Aspect à l''écran' ClientHeight = 71 ClientWidth = 140 TabOrder = 8 object checkhachures: TCheckBox Left = 16 Height = 17 Top = 16 Width = 65 Caption = 'Hachures' Checked = True State = cbChecked TabOrder = 0 end object checkaxefocal: TCheckBox Left = 16 Height = 17 Top = 48 Width = 65 Caption = 'Axe focal' Checked = True State = cbChecked TabOrder = 1 end end object GroupBox9: TGroupBox Left = 0 Height = 88 Top = 312 Width = 200 Caption = 'Concave ou convexe ?' ClientHeight = 70 ClientWidth = 196 TabOrder = 9 object checkconcave: TCheckBox Left = 16 Height = 17 Top = 16 Width = 62 Caption = 'Concave' Checked = True State = cbChecked TabOrder = 0 end end object BitBtn1: TBitBtn Left = 368 Height = 240 Top = 136 Width = 166 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 10 end object BitBtn2: TBitBtn Left = 368 Height = 65 Top = 384 Width = 163 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 11 end end optgeo-2.21/optgeo.lpr0000750000175000017500000001731212247333133015150 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} program OptGeo; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Forms, LResources,Interfaces, Unit222, UnitScaleFont, MonImprimante, ray1 in 'ray1.pas' {Form1}, Unit_imp in 'Unit_imp.pas' {configimpression}, Unit3 in 'Unit3.pas' {proprietespoints}, Unit4 in 'Unit4.pas' {Form4}, saisiemp in 'saisiemp.pas' {saisiemiroirplan}, saisieray in 'saisieray.pas' {saisierayon}, saisiemscopa in 'saisiemscopa.pas' {saisiemiroirscopa}, saisiemscepa in 'saisiemscepa.pas' {saisiemiroirscepa}, saisielmc in 'saisielmc.pas' {saisielentillemc}, saisielmd in 'saisielmd.pas' {saisielentillemd}, saisiemscore in 'saisiemscore.pas' {saisiemiroirscore}, saisiemscere in 'saisiemscere.pas' {saisiemiroirscere}, Unit5 in 'Unit5.pas' {saisienombrerayons}, saisiesp1 in 'saisiesp1.pas' {saisiespp}, saisieop1 in 'saisieop1.pas' {saisieopp}, saisieec in 'saisieec.pas' {saisieecran}, saisielamesr in 'saisielamesr.pas' {saisielsr}, Unit6 in 'Unit6.pas' {saisiepolyhedre}, Unit8 in 'Unit8.pas' {saisienombresommet}, saisiesphere in 'saisiesphere.pas' {saisiesph}, saisiemconique in 'saisiemconique.pas' {saisiemiroirconique}, Unit9 in 'Unit9.pas' {saisietexte}, Unit10 in 'Unit10.pas' {saisietexte2}, saisiedia in 'saisiedia.pas' {saisiediaphragme}, Unit11 in 'Unit11.pas' {saisieespacetravail}, saisiech in 'saisiech.pas' {saisiechoix}, saisiegr in 'saisiegr.pas' {saisiegrille}, saisielec in 'saisielec.pas' {saisielentille}, unit12 in 'unit12.pas' {saisiediametre}, Unit13 in 'Unit13.pas' {saisiemetre}, saisienor in 'saisienor.pas' {saisienormale}, Unit14 in 'Unit14.pas' {saisieangle}, Unit15 in 'Unit15.pas' {saisiejoindre}, saisiefant in 'saisiefant.pas' {saisiefantomes}, saisiecercle in 'saisiecercle.pas' {saisiepolycercle}, saisieptssurfaceonde in 'saisieptssurfaceonde.pas' {saisiepointssurfaceonde}, saisiefle in 'saisiefle.pas' {saisiefleche}, saisief1 in 'saisief1.pas' {saisiefle1}, saisieoe in 'saisieoe.pas' {saisieoeil}, modif_espace_travail in 'modif_espace_travail.pas' {saisieretailleespace}, Unit16 in 'Unit16.pas' {Form16}, Unit17 in 'Unit17.pas' {saisiepreferences}, Unit18 in 'Unit18.pas' {saisiecouleurrayondefaut}, Unit19 in 'Unit19.pas' {saisieempennage}, Unitgpl in 'Unitgpl.pas' {Formgpl}, Unit32 in 'UNIT32.PAS' {FormEditeur}, saisiere in 'saisiereseau.pas', Monbitmap in 'monbitmap.pas', RTFtoPlainText in 'RTFTOPLAINTEXT.PAS', Printer4Lazarus, fiche_affiche_coordonees in 'fiche_affiche_coordonees.pas', saisiepri, unit_quelobjet, Unit1_palette, UChaines, Unit_indices_milieu_ambiant, MonPostScript, UnitConfigPostScript, MonPostScriptCanvas, Definitions, Unit17b,crt; {$IFDEF WINDOWS}{$R OptGeo.rc}{$ENDIF} begin {$I OptGeo.lrs} {$i curseurs.lrs} Application.Initialize; SplashScreen := TSplashScreen.Create(Application); with SplashScreen do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; SplashScreen.Show; SplashScreen.Update; application.ProcessMessages; Application.Title:='Optgeo'; Application.CreateForm(TForm1, Form1); Application.CreateForm(TFormediteur, Formediteur); Application.CreateForm(Tproprietespoints, proprietespoints); Application.CreateForm(TForm4, Form4); Application.CreateForm(Tsaisiemiroirplan, saisiemiroirplan); Application.CreateForm(Tsaisierayon, saisierayon); Application.CreateForm(Tsaisiemiroirscopa, saisiemiroirscopa); Application.CreateForm(Tsaisiemiroirscepa, saisiemiroirscepa); Application.CreateForm(Tsaisielentillemc, saisielentillemc); Application.CreateForm(Tsaisielentillemd, saisielentillemd); Application.CreateForm(Tsaisiemiroirscore, saisiemiroirscore); Application.CreateForm(Tsaisiemiroirscere, saisiemiroirscere); Application.CreateForm(Tsaisienombrerayons, saisienombrerayons); Application.CreateForm(Tsaisieecran, saisieecran); Application.CreateForm(Tsaisielsr, saisielsr); Application.CreateForm(Tsaisiepolyhedre, saisiepolyhedre); Application.CreateForm(Tsaisienombresommet, saisienombresommet); Application.CreateForm(Tsaisiesph, saisiesph); Application.CreateForm(Tsaisiemiroirconique, saisiemiroirconique); Application.CreateForm(Tsaisietexte, saisietexte); Application.CreateForm(Tsaisietexte2, saisietexte2); Application.CreateForm(Tsaisiediaphragme, saisiediaphragme); Application.CreateForm(Tsaisieespacetravail, saisieespacetravail); Application.CreateForm(Tsaisiechoix, saisiechoix); Application.CreateForm(Tsaisiegrille, saisiegrille); Application.CreateForm(Tsaisielentille, saisielentille); Application.CreateForm(Tsaisiediametre, saisiediametre); Application.CreateForm(Tsaisiemetre, saisiemetre); Application.CreateForm(Tsaisienormale, saisienormale); Application.CreateForm(Tsaisieangle, saisieangle); Application.CreateForm(Tsaisiejoindre, saisiejoindre); Application.CreateForm(Tsaisiefantomes, saisiefantomes); Application.CreateForm(Tsaisiepolycercle, saisiepolycercle); Application.CreateForm(Tsaisiepointssurfaceonde, saisiepointssurfaceonde); Application.CreateForm(Tsaisiefleche, saisiefleche); Application.CreateForm(Tsaisiefle1, saisiefle1); Application.CreateForm(Tsaisieoeil, saisieoeil); Application.CreateForm(Tsaisieretailleespace, saisieretailleespace); Application.CreateForm(TForm16, Form16); Application.CreateForm(Tsaisiepreferences, saisiepreferences); Application.CreateForm(Tsaisiecouleurrayondefaut, saisiecouleurrayondefaut ); Application.CreateForm(Tsaisieempennage, saisieempennage); Application.CreateForm(Tfiche_coordonnees_segments, fiche_coordonnees_segments); Application.CreateForm(Tconfigimpression, configimpression); Application.CreateForm(Tsaisieprisme, saisieprisme); Application.CreateForm(TForm_quelobjet, Form_quelobjet); Application.CreateForm(Tform_palette, form_palette); Application.CreateForm(TFormgpl, Formgpl); Application.CreateForm(Tsaisie_indices_milieu_ambiant, saisie_indices_milieu_ambiant); Application.CreateForm(TFormConfigPostScript, FormConfigPostScript); Application.CreateForm(Tsaisieop, saisieopp); Application.CreateForm(Tsaisiesp,saisiespp); Application.CreateForm(Tsaisiereseau, fsaisiereseau); formediteur.caption:=rsCommentaires; Application.Run; if (SplashScreen<>nil) then begin SplashScreen.Free; SplashScreen:=nil; end; end. optgeo-2.21/unit17.pas0000750000175000017500000010715412247333133014774 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit17; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin,unit222, ExtCtrls,Unit18,filectrl, ComCtrls, LResources, LCLType,UnitScaleFont,UChaines,FileUtil; type { Tsaisiepreferences } Tsaisiepreferences = class(TForm) BitBtn1: TBitBtn; PageControl1: TPageControl; TabSheet1: TTabSheet; ComboBox1: TComboBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; SpinEdit1: TSpinEdit; SpinEdit2: TSpinEdit; Label4: TLabel; boutoncouleur: TButton; boutoncouleuraxe: TButton; boutoncouleu1: TButton; boutoncouleuraxe1: TButton; Labelcouleur: TLabel; Labelcouleuraxe: TLabel; Labelcouleur1: TLabel; Labelcouleuraxe1: TLabel; FontDialog1: TFontDialog; Label5: TLabel; boutonpolice: TButton; BitBtn2: TBitBtn; ColorDialog1: TColorDialog; BitBtn3: TBitBtn; TabSheet2: TTabSheet; Label6: TLabel; Label7: TLabel; Button1: TButton; Labecouleurrayon: TLabel; Memo1: TMemo; Memo2: TMemo; procedure BitBtn1Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure boutonpoliceClick(Sender: TObject); procedure boutoncouleurClick(Sender: TObject); procedure boutoncouleuraxeClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure SpinEdit1Change(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure boutoncouleu1Click(Sender: TObject); procedure boutoncouleuraxe1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure SpinEdit2Change(Sender: TObject); procedure boutonpolice1Click(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiepreferences: Tsaisiepreferences; implementation procedure Tsaisiepreferences.ComboBox1Change(Sender: TObject); begin if pos(rsMiroirPlan, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmiroirplan; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmiroirplan; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsRSeau, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurreseau; spinedit1.enabled:=true; spinedit1.Value:=epaisseurreseau; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsMiroirSphRiq3, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmscopa; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmscopa; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxemscopa; boutonpolice.Enabled:=false; exit; end; if pos(rsMiroirSphRiq4, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmscepa; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmscepa; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxemscepa; boutonpolice.Enabled:=false; exit; end; if pos(rsMiroirSphRiq5, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmscore; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmscore; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxemscore; boutonpolice.Enabled:=false; exit; end; if pos(rsMiroirSphRiq6, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmscere; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmscere; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxemscere; boutonpolice.Enabled:=false; exit; end; if pos(rsMiroirCNique, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmiroirconique; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmiroirconique; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxemiroirconique; boutonpolice.Enabled:=false; exit; end; if pos(rsLentilleMinc3, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurlmc; spinedit1.enabled:=true; spinedit1.Value:=epaisseurlmc; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxelmc; boutonpolice.Enabled:=false; exit; end; if pos(rsLentilleMinc4, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurlmd; spinedit1.enabled:=true; spinedit1.Value:=epaisseurlmd; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxelmd; boutonpolice.Enabled:=false; exit; end; if pos(rsLentillePais, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurlec; spinedit1.enabled:=false; spinedit1.Value:=epaisseurlec; boutoncouleuraxe.enabled:=true; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=couleuraxelec; boutonpolice.Enabled:=false; exit; end; if pos(rsPolyhDreRFra, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurpolyhedre; spinedit1.enabled:=false; spinedit1.Value:=epaisseurpolyhedre; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsPrisme, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurPrisme; spinedit1.enabled:=false; spinedit1.Value:=epaisseurPrisme; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsPolycercleRF, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurpolycercle; spinedit1.enabled:=false; spinedit1.Value:=epaisseurpolycercle; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsSphReRFracta, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleursphere; spinedit1.enabled:=false; spinedit1.Value:=epaisseursphere; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsRayonUnique, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurrayon; spinedit1.enabled:=true; spinedit1.Value:=epaisseurrayon; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsOndePlane, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurondeplane; spinedit1.enabled:=true; spinedit1.Value:=epaisseurondeplane; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsSourcePonctu, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleursourceponctuelle; spinedit1.enabled:=true; spinedit1.Value:=epaisseursourceponctuelle; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsEcran, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurecran; spinedit1.enabled:=true; spinedit1.Value:=epaisseurecran; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsLameSemiRFlC2, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurlsr; spinedit1.enabled:=true; spinedit1.Value:=epaisseurlsr; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsDiaphragme, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurdiaphragme; spinedit1.enabled:=true; spinedit1.Value:=epaisseurdiaphragme; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsOeil, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleuroeil; spinedit1.enabled:=true; spinedit1.Value:=epaisseuroeil; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsFlChe, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurfleche; spinedit1.enabled:=true; spinedit1.Value:=epaisseurfleche; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=false; exit; end; if pos(rsTexte, combobox1.items[combobox1.itemindex])<>0 then begin boutoncouleur.enabled:=false; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=saisiepreferences.Color; spinedit1.enabled:=false; boutoncouleuraxe.enabled:=false; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; boutonpolice.Enabled:=true; exit; end; end; procedure Tsaisiepreferences.BitBtn1Click(Sender: TObject); begin end; procedure Tsaisiepreferences.boutonpoliceClick(Sender: TObject); begin fontdialog1.font:=policedefaut; if fontdialog1.execute then policedefaut:=fontdialog1.Font; memo2.Lines.Clear; memo2.lines.Add(Format(rsNom, [policedefaut.name])); memo2.lines.Add(Format(rsTaille, [inttostr(policedefaut.size)])); if (fsunderline in policedefaut.style) then memo2.lines.add(rsSoulign); if (fsbold in policedefaut.style) then memo2.lines.add(rsGras); if (fsitalic in policedefaut.style) then memo2.lines.add(rsItalique); if (fsstrikeout in policedefaut.style) then memo2.lines.add(rsBarr); end; procedure Tsaisiepreferences.boutoncouleurClick(Sender: TObject); begin if pos(rsMiroirPlan, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurmiroirplan; if colordialog1.Execute then couleurmiroirplan:=colordialog1.color; labelcouleur.Color:=couleurmiroirplan; exit; end; if pos(rsRSeau, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurreseau; if colordialog1.Execute then couleurreseau:=colordialog1.color; labelcouleur.Color:=couleurreseau; exit; end; if pos(rsMiroirSphRiq3, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurmscopa; if colordialog1.Execute then couleurmscopa:=colordialog1.color; labelcouleur.Color:=couleurmscopa; exit; end; if pos(rsMiroirSphRiq4, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurmscepa; if colordialog1.Execute then couleurmscepa:=colordialog1.color; labelcouleur.Color:=couleurmscepa; exit; end; if pos(rsMiroirSphRiq5, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurmscore; if colordialog1.Execute then couleurmscore:=colordialog1.color; labelcouleur.Color:= couleurmscore; exit; end; if pos(rsMiroirSphRiq6, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurmscere; if colordialog1.Execute then couleurmscere:=colordialog1.color; labelcouleur.Color:=couleurmscere; exit; end; if pos(rsMiroirCNique, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurmiroirconique; if colordialog1.Execute then couleurmiroirconique:=colordialog1.color; labelcouleur.Color:= couleurmiroirconique; exit; end; if pos(rsLentilleMinc3, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurlmc; if colordialog1.Execute then couleurlmc:=colordialog1.color; labelcouleur.Color:= couleurlmc; exit; end; if pos(rsLentilleMinc4, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurlmd; if colordialog1.Execute then couleurlmd:=colordialog1.color; labelcouleur.Color:= couleurlmd; exit; end; if pos(rsLentillePais, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurlec; if colordialog1.Execute then couleurlec:=colordialog1.color; labelcouleur.Color:= couleurlec; exit; end; if pos(rsPolyhDreRFra, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurpolyhedre; if colordialog1.Execute then couleurpolyhedre:=colordialog1.color; labelcouleur.Color:= couleurpolyhedre; exit; end; if pos(rsPrisme, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurPrisme; if colordialog1.Execute then couleurPrisme:=colordialog1.color; labelcouleur.Color:= couleurPrisme; exit; end; if pos(rsPolycercleRF, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurpolycercle; if colordialog1.Execute then couleurpolycercle:=colordialog1.color; labelcouleur.Color:= couleurpolycercle; exit; end; if pos(rsSphReRFracta, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleursphere; if colordialog1.Execute then couleursphere:=colordialog1.color; labelcouleur.Color:= couleursphere; exit; end; if pos(rsRayonUnique, combobox1.items[combobox1.itemindex])<>0 then begin saisiecouleurrayondefaut:=Tsaisiecouleurrayondefaut.create(self); saisiecouleurrayondefaut.showmodal; case saisiecouleurrayondefaut.RadioGroup1.ItemIndex of 0: couleurrayon:=clred; 1: couleurrayon:=clgreen; 2: couleurrayon:=clblue; 3: couleurrayon:=clblack; end; saisiecouleurrayondefaut.Free; labelcouleur.Color:= couleurrayon; exit; end; if pos(rsOndePlane, combobox1.items[combobox1.itemindex])<>0 then begin saisiecouleurrayondefaut:=Tsaisiecouleurrayondefaut.create(self); saisiecouleurrayondefaut.showmodal; case saisiecouleurrayondefaut.RadioGroup1.ItemIndex of 0: couleurondeplane:=clred; 1: couleurondeplane:=clgreen; 2: couleurondeplane:=clblue; 3: couleurondeplane:=clblack; end; saisiecouleurrayondefaut.Free; labelcouleur.Color:= couleurondeplane; exit; end; if pos(rsSourcePonctu, combobox1.items[combobox1.itemindex])<>0 then begin saisiecouleurrayondefaut:=Tsaisiecouleurrayondefaut.create(self); saisiecouleurrayondefaut.showmodal; case saisiecouleurrayondefaut.RadioGroup1.ItemIndex of 0: couleursourceponctuelle:=clred; 1: couleursourceponctuelle:=clgreen; 2: couleursourceponctuelle:=clblue; 3: couleursourceponctuelle:=clblack; end; saisiecouleurrayondefaut.Free; labelcouleur.Color:= couleursourceponctuelle; exit; end; if pos(rsEcran, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurecran; if colordialog1.Execute then couleurecran:=colordialog1.color; labelcouleur.Color:= couleurecran; exit; end; if pos(rsLameSemiRFlC2, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurlsr; if colordialog1.Execute then couleurlsr:=colordialog1.color; labelcouleur.Color:=couleurlsr; exit; end; if pos(rsDiaphragme, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurdiaphragme; if colordialog1.Execute then couleurdiaphragme:=colordialog1.color; labelcouleur.Color:=couleurdiaphragme; exit; end; if pos(rsOeil, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuroeil; if colordialog1.Execute then couleuroeil:=colordialog1.color; labelcouleur.Color:=couleuroeil; exit; end; if pos(rsFlChe, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleurfleche; if colordialog1.Execute then couleurfleche:=colordialog1.color; labelcouleur.Color:=couleurfleche; exit; end; end; procedure Tsaisiepreferences.boutoncouleuraxeClick(Sender: TObject); begin if pos(rsMiroirSphRiq3, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxemscopa; if colordialog1.Execute then couleuraxemscopa:=colordialog1.color; labelcouleuraxe.Color:=couleuraxemscopa; exit; end; if pos(rsMiroirSphRiq4, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxemscepa; if colordialog1.Execute then couleuraxemscepa:=colordialog1.color; labelcouleuraxe.Color:=couleuraxemscepa; exit; end; if pos(rsMiroirSphRiq5, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxemscore; if colordialog1.Execute then couleuraxemscore:=colordialog1.color; labelcouleuraxe.Color:= couleuraxemscore; exit; end; if pos(rsMiroirSphRiq6, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxemscere; if colordialog1.Execute then couleuraxemscere:=colordialog1.color; labelcouleuraxe.Color:=couleuraxemscere; exit; end; if pos(rsMiroirCNique, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxemiroirconique; if colordialog1.Execute then couleuraxemiroirconique:=colordialog1.color; labelcouleuraxe.Color:= couleuraxemiroirconique; exit; end; if pos(rsLentilleMinc3, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxelmc; if colordialog1.Execute then couleuraxelmc:=colordialog1.color; labelcouleuraxe.Color:= couleuraxelmc; exit; end; if pos(rsLentilleMinc4, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxelmd; if colordialog1.Execute then couleuraxelmd:=colordialog1.color; labelcouleuraxe.Color:= couleuraxelmd; exit; end; if pos(rsLentillePais, combobox1.items[combobox1.itemindex])<>0 then begin colordialog1.color:=couleuraxelec; if colordialog1.Execute then couleuraxelec:=colordialog1.color; labelcouleuraxe.Color:= couleuraxelec; exit; end; end; procedure Tsaisiepreferences.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEPREFERENCES.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION :=rsOkEtEnregist; BITBTN3.CAPTION :=rsRTablirLesVa; BOUTONCOULEU1.CAPTION // msgctxt ';TSAISIEPREFERENCES.BOUTONCOULEU1.CAPTION'; :=rsModifier; BOUTONCOULEUR.CAPTION // msgctxt ';TSAISIEPREFERENCES.BOUTONCOULEUR.CAPTION'; :=rsModifier; BOUTONCOULEURAXE.CAPTION // msgctxt ';TSAISIEPREFERENCES.BOUTONCOULEURAXE.CAPTION'; :=rsModifier; BOUTONCOULEURAXE1.CAPTION // msgctxt ';TSAISIEPREFERENCES.BOUTONCOULEURAXE1.CAPTION'; :=rsModifier; BOUTONPOLICE.CAPTION // msgctxt ';TSAISIEPREFERENCES.BOUTONPOLICE.CAPTION'; :=rsModifier; BUTTON1.CAPTION // msgctxt ';TSAISIEPREFERENCES.BUTTON1.CAPTION'; :=rsModifier; CAPTION :=rsPrFRencesPro; LABEL1.CAPTION :=rsTypeDLMent; LABEL2.CAPTION :=rsCouleurParDF; LABEL3.CAPTION :=rsEpaisseurPar; LABEL4.CAPTION :=rsCouleurAxePa; LABEL5.CAPTION :=rsPoliceParDFa; LABEL6.CAPTION :=rsIndiquerIciL; LABEL7.CAPTION :=rsCouleurRayon; TABSHEET1.CAPTION :=rsElementParLM; TABSHEET2.CAPTION :=rsPourTousLesL; combobox1.Items.Clear; combobox1.Items.add(rsMiroirPlan); combobox1.Items.add(rsMiroirSphRiq3); combobox1.Items.add(rsMiroirSphRiq4); combobox1.Items.add(rsMiroirSphRiq5); combobox1.Items.add(rsMiroirSphRiq6); combobox1.Items.add(rsMiroirCNique); combobox1.Items.add(rsLentilleMinc3); combobox1.Items.add(rsLentilleMinc4); combobox1.Items.add(rsLentillePais); combobox1.Items.add(rsPolyhDreRFra); combobox1.Items.add(rsPolycercleRF); combobox1.Items.add(rsSphReRFracta); combobox1.Items.add(rsRayonUnique); combobox1.Items.add(rsOndePlane); combobox1.Items.add(rsSourcePonctu); combobox1.Items.add(rsEcran); combobox1.Items.add(rsLameSemiRFlC2); combobox1.Items.add(rsDiaphragme); combobox1.Items.add(rsOeil); combobox1.Items.add(rsFlChe); combobox1.Items.add(rsTexte); combobox1.Items.add(rsPrisme); combobox1.Items.add(rsRSeau); end; procedure Tsaisiepreferences.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure Tsaisiepreferences.SpinEdit1Change(Sender: TObject); begin if pos(rsMiroirPlan, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurmiroirplan:=spinedit1.value; exit; end; if pos(rsRSeau, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurreseau:=spinedit1.value; exit; end; if pos(rsMiroirSphRiq3, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurmscopa:=spinedit1.value; exit; end; if pos(rsMiroirSphRiq4, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurmscepa:=spinedit1.value; exit; end; if pos(rsMiroirSphRiq5, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurmscore:=spinedit1.value; exit; end; if pos(rsMiroirSphRiq6, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurmscere:=spinedit1.value; exit; end; if pos(rsMiroirCNique, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurmiroirconique:=spinedit1.value; exit; end; if pos(rsLentilleMinc3, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurlmc:=spinedit1.value; end; if pos(rsLentilleMinc4, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurlmd:=spinedit1.value; exit; end; if pos(rsRayonUnique, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurrayon:=spinedit1.value; exit; end; if pos(rsOndePlane, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurondeplane:=spinedit1.value; exit; end; if pos(rsSourcePonctu, combobox1.items[combobox1.itemindex])<>0 then begin epaisseursourceponctuelle:=spinedit1.value; exit; end; if pos(rsEcran, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurecran:=spinedit1.value; exit; end; if pos(rsLameSemiRFlC2, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurlsr:=spinedit1.value; exit; end; if pos(rsDiaphragme, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurdiaphragme:=spinedit1.value; exit; end; if pos(rsOeil, combobox1.items[combobox1.itemindex])<>0 then begin epaisseuroeil:=spinedit1.value; exit; end; if pos(rsFlChe, combobox1.items[combobox1.itemindex])<>0 then begin epaisseurfleche:=spinedit1.value; exit; end; end; procedure Tsaisiepreferences.BitBtn3Click(Sender: TObject); begin couleurmiroirplan:=clblack; epaisseurmiroirplan:=1; couleurreseau:=clblue; epaisseurreseau:=1; couleurmscopa:=clblack; epaisseurmscopa:=1; couleuraxemscopa:=clblue; couleurmscepa:=clblack; epaisseurmscepa:=1; couleuraxemscepa:=clblue; couleurmscore:=clblack; epaisseurmscore:=1; couleuraxemscore:=clblue; couleurmscere:=clblack; epaisseurmscere:=1; couleuraxemscere:=clblue; couleurlmc:=clblue; epaisseurlmc:=1; couleuraxelmc:=clFuchsia; couleurlmd:=clblue; epaisseurlmd:=1; couleuraxelmd:=clFuchsia; couleurlec:=claqua; couleuraxelec:=clred; epaisseurlec:=1; couleurrayon:=clred; epaisseurrayon:=1; couleurondeplane:=clred; epaisseurondeplane:=1; couleursourceponctuelle:=clred; epaisseursourceponctuelle:=1; couleurecran:=clblack; epaisseurecran:=2; couleurlsr:=clblack; epaisseurlsr:=1; couleurpolyhedre:=claqua; epaisseurpolyhedre:=1; couleurprisme:=claqua; epaisseurprisme:=1; couleurpolycercle:=claqua; epaisseurpolycercle:=1; couleursphere:=claqua; epaisseursphere:=1; couleurmiroirconique:=clblack; couleuraxemiroirconique:=clblue; couleurtexte:=clblack; taillefontetexte:=10; couleurdiaphragme:=clblack; epaisseurdiaphragme:=1; couleurfleche:=clblack; epaisseurfleche:=1; couleuroeil:=clgreen; epaisseuroeil:=1; couleurangle:=clblack; epaisseurangle:=1; couleurmetre:=clblack; epaisseurmetre:=1; combobox1.itemindex:=0; boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmiroirplan; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmiroirplan; boutoncouleuraxe.enabled:=false; boutonpolice.Enabled:=false; modalresult:=0; end; procedure Tsaisiepreferences.BitBtn2Click(Sender: TObject); var fc:textfile; begin if nom_fichier_config_perso='' then exit; try if not(directoryexistsUTF8(repertoire_config_perso)) then forcedirectories(UTF8ToSys(repertoire_config_perso)); assignfile(fc,UTF8ToSys(nom_fichier_config_perso)); rewrite(fc); except application.messagebox(pchar(Format(rsImpossibleDC, [nom_fichier_config_perso]) ), pchar(rsHLas), mb_ok); exit; end; writeln(fc,'Repertoire perso'); writeln(fc,repertoire_simul_perso); writeln(fc,'Repertoire courant'); writeln(fc,repertoire_actuel); writeln(fc,'Miroir plan'); writeln(fc,couleurmiroirplan); writeln(fc,epaisseurmiroirplan); writeln(fc,'Miroir sphérique concave paraxial'); writeln(fc,couleurmscopa); writeln(fc,epaisseurmscopa); writeln(fc,couleuraxemscopa); writeln(fc,'Miroir sphérique convexe paraxial'); writeln(fc,couleurmscepa); writeln(fc,epaisseurmscepa); writeln(fc,couleuraxemscepa); writeln(fc,'Miroir sphérique concave réel'); writeln(fc,couleurmscore); writeln(fc,epaisseurmscore); writeln(fc,couleuraxemscore); writeln(fc,'Miroir sphérique convexe réel'); writeln(fc,couleurmscere); writeln(fc,epaisseurmscere); writeln(fc,couleuraxemscere); writeln(fc,'Miroir cônique'); writeln(fc,couleurmiroirconique); writeln(fc,epaisseurmiroirconique); writeln(fc,couleuraxemiroirconique); writeln(fc,'Lentille mince convergente idéale'); writeln(fc,couleurlmc); writeln(fc,epaisseurlmc); writeln(fc,couleuraxelmc); writeln(fc,'Lentille mince divergente idéale'); writeln(fc,couleurlmd); writeln(fc,epaisseurlmd); writeln(fc,couleuraxelmd); writeln(fc,'Lentille épaisse'); writeln(fc,couleurlec); writeln(fc,couleuraxelec); writeln(fc,'Polyhèdre réfractant'); writeln(fc,couleurpolyhedre); writeln(fc,'Polycercle réfractant'); writeln(fc,couleurpolycercle); writeln(fc,'Sphère réfractante'); writeln(fc,couleursphere); writeln(fc,'Rayon unique'); writeln(fc,couleurrayon); writeln(fc,epaisseurrayon); writeln(fc,'Onde plane'); writeln(fc,couleurondeplane); writeln(fc,epaisseurondeplane); writeln(fc,'Source ponctuelle'); writeln(fc,couleursourceponctuelle); writeln(fc,epaisseursourceponctuelle); writeln(fc,'Ecran'); writeln(fc,couleurecran); writeln(fc,epaisseurecran); writeln(fc,'Lame semi-réfléchissante'); writeln(fc,couleurlsr); writeln(fc,epaisseurlsr); writeln(fc,'Diaphragme'); writeln(fc,couleurDiaphragme); writeln(fc,epaisseurDiaphragme); writeln(fc,'Oeil'); writeln(fc,couleurOeil); writeln(fc,epaisseurOeil); writeln(fc,'Fléche'); writeln(fc,couleurFleche); writeln(fc,epaisseurFleche); writeln(fc,'Texte'); writeln(fc,policedefaut.charset); writeln(fc,policedefaut.color); writeln(fc,policedefaut.name); writeln(fc,policedefaut.size); if (fsbold in policedefaut.style) then writeln(fc,'fsbold') else writeln(fc,'no'); if (fsitalic in policedefaut.style)then writeln(fc,'fsitalic') else writeln(fc,'no'); if (fsunderline in policedefaut.style) then writeln(fc,'fsunderline') else writeln(fc,'no'); if (fsstrikeout in policedefaut.style) then writeln(fc,'fsstrikeout') else writeln(fc,'no'); if policedefaut.pitch=fpDefault then writeln(fc,'fpDefault'); if policedefaut.pitch=fpVariable then writeln(fc,'fpVariable'); if policedefaut.pitch=fpFixed then writeln(fc,'fpFixed'); writeln(fc,'Prisme'); writeln(fc,couleurprisme); writeln(fc,'Reseau'); writeln(fc,couleurreseau); writeln(fc,epaisseurreseau); closefile(fc); modalresult:=mrok; end; procedure Tsaisiepreferences.boutoncouleu1Click(Sender: TObject); begin if colordialog1.Execute then begin labelcouleur1.width:=89; labelcouleur1.height:=25; couleurglobale:=colordialog1.color; labelcouleur1.Color:=couleurglobale; couleurmiroirplan:=couleurglobale; couleurreseau:=couleurglobale; couleurmscopa:=couleurglobale; couleurmscepa:=couleurglobale; couleurmscore:=couleurglobale; couleurmscere:=couleurglobale; couleurmiroirconique:=couleurglobale; couleurlmc:=couleurglobale; couleurlmd:=couleurglobale; couleurlec:=couleurglobale; couleurpolyhedre:=couleurglobale; couleurpolycercle:=couleurglobale; couleurprisme:=couleurglobale; couleursphere:=couleurglobale; couleurecran:=couleurglobale; couleurlsr:=couleurglobale; couleurdiaphragme:=couleurglobale; couleurfleche:=couleurglobale; combobox1.itemindex:=0; combobox1change(sender); end; end; procedure Tsaisiepreferences.boutoncouleuraxe1Click(Sender: TObject); begin if colordialog1.Execute then begin labelcouleuraxe1.width:=89; labelcouleuraxe1.height:=25; couleurglobaleaxe:=colordialog1.color; labelcouleuraxe1.Color:=couleurglobaleaxe; couleuraxemscopa:=colordialog1.color; couleuraxemscepa:=colordialog1.color; couleuraxemscore:=colordialog1.color; couleuraxemscere:=colordialog1.color; couleuraxemiroirconique:=colordialog1.color; couleuraxelmc:=colordialog1.color; couleuraxelmd:=colordialog1.color; couleuraxelec:=colordialog1.color; combobox1.itemindex:=0; combobox1change(sender); end; end; procedure Tsaisiepreferences.Button1Click(Sender: TObject); begin saisiecouleurrayondefaut:=Tsaisiecouleurrayondefaut.create(self); saisiecouleurrayondefaut.showmodal; case saisiecouleurrayondefaut.RadioGroup1.ItemIndex of 0: begin couleurrayon:=clred; couleurondeplane:=clred; couleursourceponctuelle:=clred; couleurglobalerayon:=clred; end; 1: begin couleurrayon:=clgreen; couleurondeplane:=clgreen; couleursourceponctuelle:=clgreen; couleurglobalerayon:=clgreen; end; 2: begin couleurrayon:=clblue; couleurondeplane:=clblue; couleursourceponctuelle:=clblue; couleurglobalerayon:=clblue; end; 3: begin couleurrayon:=clblack; couleurondeplane:=clblack; couleursourceponctuelle:=clblack; couleurglobalerayon:=clblack; end; end; saisiecouleurrayondefaut.Free; labecouleurrayon.Color:= couleurglobalerayon ; combobox1.itemindex:=0; combobox1change(sender); end; procedure Tsaisiepreferences.SpinEdit2Change(Sender: TObject); begin epaisseurglobale:=spinedit2.value; epaisseurmiroirplan:=spinedit2.value; epaisseurreseau:=spinedit2.value; epaisseurmscopa:=spinedit2.value; epaisseurmscepa:=spinedit2.value; epaisseurmscore:=spinedit2.value; epaisseurmscere:=spinedit2.value; epaisseurmiroirconique:=spinedit2.value; epaisseurlmc:=spinedit2.value; epaisseurlmd:=spinedit2.value; epaisseurrayon:=spinedit2.value; epaisseurondeplane:=spinedit2.value; epaisseursourceponctuelle:=spinedit2.value; epaisseurecran:=spinedit2.value; epaisseurlsr:=spinedit2.value; epaisseurdiaphragme:=spinedit2.value; epaisseuroeil:=spinedit2.value; epaisseurfleche:=spinedit2.value; combobox1.itemindex:=0; combobox1change(sender); end; procedure Tsaisiepreferences.boutonpolice1Click(Sender: TObject); begin fontdialog1.font:=policedefaut; if fontdialog1.execute then policedefaut:=fontdialog1.Font; memo1.Lines.Clear; memo1.lines.Add(Format(rsNom, [policedefaut.name])); memo1.lines.Add(Format(rsTaille, [inttostr(policedefaut.size)])); if (fsunderline in policedefaut.style) then memo1.lines.add(rsSoulign); if (fsbold in policedefaut.style) then memo1.lines.add(rsGras); if (fsitalic in policedefaut.style) then memo1.lines.add(rsItalique); if (fsstrikeout in policedefaut.style) then memo1.lines.add(rsBarr); memo2.Lines.Clear; memo2.lines.Add(Format(rsNom, [policedefaut.name])); memo2.lines.Add(Format(rsTaille, [inttostr(policedefaut.size)])); if (fsunderline in policedefaut.style) then memo2.lines.add(rsSoulign); if (fsbold in policedefaut.style) then memo2.lines.add(rsGras); if (fsitalic in policedefaut.style) then memo2.lines.add(rsItalique); if (fsstrikeout in policedefaut.style) then memo2.lines.add(rsBarr); end; initialization {$i Unit17.lrs} end. optgeo-2.21/saisiepri.lfm0000750000175000017500000002076012247333133015625 0ustar georgeskgeorgeskobject saisieprisme: Tsaisieprisme Left = 528 Height = 445 Top = 147 Width = 667 ActiveControl = Edit_gx BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'Ajout d''un prisme' ClientHeight = 445 ClientWidth = 667 Color = clAqua OnCreate = FormCreate OnShow = FormShow ParentFont = True LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 1754506F727461626C654E6574776F726B477261706869631602000089504E47 0D0A1A0A0000000D49484452000000640000006401030000004A2C0717000000 017352474200AECE1CE900000006504C5445000000FFFFFFA5D99FDD00000009 7048597300000B1300000B1301009A9C180000000774494D4507DA011111102B 512EAEF5000001964944415438CB55D3316EE330100550035BA474B1C5962A73 001F4047D8C3A408B6098B142A75041E618F904285BAF5110CC141545A5A1796 609A3F43911CCEB0111E288D385FA31D785D31ED8A3AA577A52729FF2CB5FC96 9A8E5267A5DE4AEDA57C550B392335416AF046A8576A1C8ADC2FA5C3BA142DAB D4ECD6FF86D5F98350834EA8C238B15C8DB1EC2D06E35867CD06C7A233D096B3 34802DDA4BF91AD46C96335213A406BAD9B07A252AE990E52BDC8AA8E4A56801 4E2B6B50EA808F2B8B8E6F8A2A78B028068F318B62789C583370B7C72C2A796B 5914C3CDDAAC0AB8B0420C27169584B5755288E12F8B92C5EB3F931462B8FB2C 8AE1F1C8A218480E5121D9BBCF0A256F7E4D1AC82DFE24F5F8324F78496AF1F5 F6238B4A8E7EB72D12C5F0497B63DCA364C3734973508B63541784AC26B69454 C5A1B0517BA526AA8E3A2BCD4A21B13811882713C2F60A07EE48AA0BD7159C84 D4A2B415BD6685748BB6A223AB571A94B8F54DCE488529B0ACF4A388E9A98BCE 4A93D26262EB51BE9642E520D428754AF32AB528B98394FF2985F4D9A66F42F6 A86D8437660D0000000049454E44AE426082 } end object GroupBox1: TGroupBox Left = 104 Height = 99 Top = 1 Width = 184 Caption = 'Centre d''inertie' ClientHeight = 81 ClientWidth = 180 TabOrder = 0 object Label1: TLabel Left = 8 Height = 14 Top = 5 Width = 15 Caption = 'x=' ParentColor = False end object Label2: TLabel Left = 8 Height = 14 Top = 41 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 145 Height = 14 Top = 5 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 144 Height = 14 Top = 46 Width = 21 Caption = 'log2' ParentColor = False end object Edit_gx: TEdit Left = 32 Height = 21 Top = 0 Width = 101 TabOrder = 0 end object Edit_gy: TEdit Left = 31 Height = 21 Top = 39 Width = 102 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 8 Height = 61 Top = 107 Width = 274 Caption = 'Angle au sommet' ClientHeight = 43 ClientWidth = 270 TabOrder = 1 object Label4: TLabel Left = 14 Height = 14 Top = 11 Width = 16 Caption = 'A=' ParentColor = False end object Label7: TLabel Left = 152 Height = 14 Top = 11 Width = 17 Caption = 'rad' ParentColor = False end object Edit_angleausommet: TEdit Left = 32 Height = 21 Top = 4 Width = 114 TabOrder = 0 end end object GroupBox3: TGroupBox Left = 9 Height = 56 Top = 184 Width = 272 Caption = 'Angle polaire de la hauteur principale' ClientHeight = 38 ClientWidth = 268 TabOrder = 2 object Label5: TLabel Left = 14 Height = 14 Top = 7 Width = 13 Caption = 't=' ParentColor = False end object Label8: TLabel Left = 151 Height = 14 Top = 7 Width = 17 Caption = 'rad' ParentColor = False end object Edit_anglepolaire: TEdit Left = 33 Height = 21 Top = 1 Width = 109 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 8 Height = 58 Top = 248 Width = 275 Caption = 'Hauteur' ClientHeight = 40 ClientWidth = 271 TabOrder = 3 object Label6: TLabel Left = 5 Height = 14 Top = 14 Width = 48 Caption = 'Hauteur=' ParentColor = False end object log3: TLabel Left = 174 Height = 14 Top = 14 Width = 21 Caption = 'log3' ParentColor = False end object Edit_hauteur: TEdit Left = 57 Height = 21 Top = 7 Width = 109 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 576 Height = 374 Top = 8 Width = 82 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 4 end object BitBtn2: TBitBtn Left = 424 Height = 40 Top = 392 Width = 232 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 TabOrder = 5 end object boutonsup: TBitBtn Left = 8 Height = 40 Top = 392 Width = 408 Caption = 'Supprimer ce prisme' TabOrder = 6 end object GroupBox5: TGroupBox Left = 9 Height = 63 Top = 320 Width = 271 Caption = 'Couleur du prisme' ClientHeight = 45 ClientWidth = 267 TabOrder = 7 object Label9: TLabel Left = 7 Height = 14 Top = 13 Width = 42 Caption = 'Couleur:' ParentColor = False end object colorgrid1: TColorBox Left = 64 Height = 22 Top = 3 Width = 129 ItemHeight = 16 TabOrder = 0 end end object GroupBox6: TGroupBox Left = 296 Height = 175 Top = 207 Width = 272 Caption = 'Indice de réfraction du milieu' ClientHeight = 157 ClientWidth = 268 TabOrder = 8 object StaticText2: TLabel Left = 8 Height = 14 Top = 15 Width = 69 Caption = 'Pour le rouge:' ParentColor = False end object StaticText3: TLabel Left = 16 Height = 14 Top = 41 Width = 61 Caption = 'Pour le vert:' ParentColor = False end object StaticText4: TLabel Left = 16 Height = 14 Top = 63 Width = 61 Caption = 'Pour le bleu:' ParentColor = False end object StaticText7: TLabel Left = 14 Height = 14 Top = 120 Width = 47 Caption = 'Matériau:' ParentColor = False end object editnrouge: TEdit Left = 94 Height = 21 Top = 8 Width = 49 TabOrder = 0 Text = '1,5' end object editnvert: TEdit Left = 94 Height = 21 Top = 34 Width = 49 TabOrder = 1 Text = '1,6' end object editnbleu: TEdit Left = 94 Height = 21 Top = 63 Width = 49 TabOrder = 2 Text = '1,7' end object combomateriaux: TComboBox Left = 70 Height = 21 Top = 113 Width = 185 ItemHeight = 13 OnChange = combomateriauxChange Style = csDropDownList TabOrder = 3 end end object radioentrant: TRadioGroup Left = 296 Height = 97 Top = 107 Width = 264 AutoFill = True Caption = 'Rayon réfléchi (sens entrant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 79 ClientWidth = 260 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 9 end object radiosortant: TRadioGroup Left = 296 Height = 97 Top = 3 Width = 265 AutoFill = True Caption = 'Rayon réfléchi (sens sortant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 79 ClientWidth = 261 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 10 end end optgeo-2.21/monpostscript.pas0000750000175000017500000016011212247333133016562 0ustar georgeskgeorgeskunit MonPostScript; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,LCLProc,Math,LCLType {$ifdef windows},Windows{$endif},MonPostScriptCanvas,Printers,Definitions; type page_ps=(A4,A3,A2,A1,A0,A5,Letter,Legal,Ledger); orientation_ps=(portrait,paysage); ppscanvas=^TMonPostscriptCanvas; TMonPostScript =Object canvas_pointe:ppscanvas; res_x,res_y:integer; type_page_ps:page_ps; type_orientation_ps:orientation_ps; Xmin,Xmax,Ymin1,Ymax1,Ymin2,Ymax2,GraduationX, GraduationY1,GraduationY2:extended; Largeur,Hauteur,BordureBasse,BordureHaute, BordureGauche,BordureDroite,EpaisseurGrille,PuissanceDeDixX, PuissancedeDixY1,PuissancedeDixY2,epaisseurcadre,epaisseurgraduation:integer; longueurgraduationX,longueurgraduationY1,longueurgraduationY2:extended; PasGrillex,PasGrilley1,PasGrilley2:extended; couleurfondsim,couleurcadre,couleurgraduation, couleurgrille1,couleurgrille2:tcolor; cadre,gradue,grille1,grille2,fond,borduresverticalessymetriques,echelle_g,echelle_d:boolean; titre,labelx,labely1,labely2,unitex,unitey1,unitey2:string; fontegraduation:tfont; fontetitre:tfont; procedure background(couleur:tcolor); function LimitesEtAxes(pointeur_sur_canvas:ppscanvas; _res_x,_res_y:integer;_type_page_ps:page_ps; _type_orientation_ps:orientation_ps; _xmin,_xmax,_ymin1,_ymax1,_ymin2,_ymax2:extended; _police:tfont; _titre:string; _fontetitre:tfont; _Fond:boolean; _CouleurFondsim:tcolor; _Cadre:boolean; _EpaisseurCadre:integer; _CouleurCadre:tcolor; _Gradue:boolean; _EpaisseurGraduation,_LongueurGraduation:integer; _couleurgraduation:tcolor; _fontegraduation:tfont; _Grille1,_Grille2:boolean; _EpaisseurGrille:integer; _CouleurGrille1,_CouleurGrille2:tcolor; _labelx,_labely1,_labely2,_unitex,_unitey1,_unitey2:string; _borduresverticalessymetriques, _echelle_g,_echelle_d:boolean; b_g,b_d,b_b,b_h:integer):boolean; procedure dessinergrille(pas_grillex,pas_grilley:extended); procedure arronditalagrille(var x1,y1:extended;pas_grillex,pas_grilley:extended); function invconvert(var xi,yi:integer; x,y:extended;gauche:boolean):boolean; function Convert(xi,yi:integer; var x,y:extended;gauche:boolean):boolean; function CroixX(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function CroixP(x,y:extended; demi_longueur,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function Carreau(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function Trait(x1,y1,x2,y2:extended; epaisseur:integer; couleur:tcolor; sty:tpenstyle; _penmod:tpenmode;gauche:boolean):boolean; function Point(x,y:extended; rayon:integer; couleur:tcolor; _penmod:tpenmode;gauche:boolean):boolean; function cercle(x,y:extended; rayon,epaisseur:integer; couleur:tcolor; _penmod:tpenmode;gauche:boolean):boolean; function disque(x,y:extended; rayon:extended; couleurbord,couleurf:tcolor;_transparent:boolean;gauche:boolean): boolean; function disque2(x,y:extended; rayon:integer; couleurbord,couleurf:tcolor;gauche:boolean): boolean; function arcdecercle(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean):boolean; function arcdecercleoriente(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche,trigod:boolean): boolean; function tracepolygone(nombrepoint:integer;listex,listey:array of extended; couleurbord,couleurf:tcolor; _transparent:boolean;_mode:tpenmode; gauche:boolean):boolean; procedure traceconique(theta0,theta1,theta2,fx,fy,excentricite,parametre:extended; couleur:tcolor;gauche:boolean); procedure arronditalagrille(var x1,y1:extended;gauche:boolean); procedure ecrire(x,y:extended; s:string;gauche:boolean; police:tfont); procedure ecrireI(x,y:integer; s:string; police:tfont); procedure tracelec(c1x,c1y,r1,c2x,c2y,r2:extended;couleurfond:tcolor); procedure tracepolycercle(MesSommets: TableauPointPolyhedre; NumPts: Integer; MesCentres: TableauPointPolyhedre; rectiligne,rentrant:tableaurectiligne; theta1,theta2:sommetsreels; couleur_f,couleur_b:tcolor; listetrigodirect:tableaurectiligne); procedure graduation(xi,xa:extended; var xci,xca:extended; var graduation:extended; var PuissanceDeDix:integer; var nombregraduation:integer); end; procedure echange(var a,b:extended); procedure echange_entiers(var a,b:integer); function partieentiere(x:extended):extended; function dix_pp(p:longint):extended; function DonneAnglePolaireDansPiPi(x,y:extended):extended; function DonneAnglePolaireDans02Pi(x,y:extended):extended; procedure Donne_Hauteur_Largeur(type_page_ps:page_ps;type_orientation_ps:orientation_ps; res_x,res_y:integer; var hauteur,largeur:integer); implementation function DonneAnglePolaireDansPiPi(x,y:extended):extended; var toto:extended; begin if ((x=0) and (y=0)) then begin DonneAnglePolaireDansPiPi:=0; exit; end; if (x=0) then if (y>0) then begin DonneAnglePolaireDansPiPi:=Pi/2; exit; end else begin DonneAnglePolaireDansPiPi:=-Pi/2; exit; end; if (y=0) then if (x>0) then begin DonneAnglePolaireDansPiPi:=0; exit; end else begin DonneAnglePolaireDansPiPi:=Pi; exit; end; try toto:=arctan(y/x); except if (((x>0) and (y>0)) or ((x<0) and (y<0))) then toto:=pi/2 else toto:=-pi/2; end; if (x<0) then toto:=toto+Pi; if toto>Pi then toto:=toto-2*Pi; if toto<-Pi then toto:=toto+2*pi; DonneAnglePolaireDansPiPi:=toto; end; function DonneAnglePolaireDans02Pi(x,y:extended):extended; var toto:extended; begin toto:=DonneAnglePolaireDansPiPi(x,y); if toto<0 then toto:=toto+2*Pi; DonneAnglePolaireDans02Pi:=toto; end; procedure TMonPostScript.tracelec(c1x,c1y,r1,c2x,c2y,r2:extended;couleurfond:tcolor); var x1,y1,rx,ry,res:integer; rgn1,rgn2,rgn:hrgn; begin invconvert(x1,y1,c1x,c1y,true); rx:= trunc(abs(r1)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); ry:=trunc(abs(r1)/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse)); {$ifdef windows} rgn1:=windows.CreateEllipticRgn(x1-rx,y1-ry,x1+rx,y1+ry); if rgn1=NULLREGION then begin windows.deleteobject(rgn1); exit; end; invconvert(x1,y1,c2x,c2y,true); rx:= trunc((abs(r2))/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); ry:=trunc((abs(r2))/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse)); rgn2:=windows.CreateEllipticRgn(x1-rx,y1-ry,x1+rx,y1+ry); if rgn2=NULLREGION then begin windows.deleteobject(rgn2); exit; end; rgn:=windows.CreateEllipticRgn(x1-rx,y1-ry,x1+rx,y1+ry); if r1*r2<0 then res:=windows.combinergn(rgn,rgn1,rgn2,RGN_AND) else if abs(r1)>abs(r2) then res:=windows.combinergn(rgn,rgn2,rgn1,RGN_DIFF) else res:=windows.combinergn(rgn,rgn1,rgn2,RGN_DIFF); if res=ERROR then begin windows.deleteobject(res); exit; end; canvas_pointe^.brush.color:=couleurfond; canvas_pointe^.brush.style:=bsSolid; windows.FillRgn(canvas_pointe^.handle,rgn,canvas_pointe^.brush.handle); windows.DeleteObject(rgn); windows.deleteobject(rgn1); windows.deleteobject(rgn2); canvas_pointe^.brush.color:=clwhite; {$endif} end; procedure TMonPostScript.arronditalagrille(var x1,y1:extended;pas_grillex,pas_grilley:extended); var newx,newy,divx,divy,fracx,fracy:extended; begin divx:=partieentiere((x1-xmin)/pas_grillex); divy:=partieentiere((y1-ymin1)/pas_grilley); fracx:=x1-xmin-divx*pas_grillex; fracy:=y1-ymin1-divy*pas_grilley; if fracx>0.5*pas_grillex then newx:=xmin+(divx+1)*pas_grillex else newx:=xmin+divx*pas_grillex; if fracy>0.5*pas_grilley then newy:=ymin1+(divy+1)*pas_grilley else newy:=ymin1+divy*pas_grilley; x1:=newx; y1:=newy; end; procedure TMonPostScript.dessinergrille(pas_grillex,pas_grilley:extended); var i,j,x1,y1:integer; x,y:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.pen.color:=couleurgrille1; canvas_pointe^.pen.style:=pssolid; canvas_pointe^.pen.width:=1; canvas_pointe^.pen.mode:=pmcopy; canvas_pointe^.brush.style:=bssolid; canvas_pointe^.brush.color:=couleurgrille1; for i:=1 to trunc((xmax-xmin)/pas_grillex) do for j:=1 to trunc((ymax1-ymin1)/pas_grilley) do begin x:=xmin+i*pas_grillex; y:=ymin1+j*pas_grilley; invconvert(x1,y1,x,y,true); // canvas_pointe^.pixels[x1,y1]:=couleurgrille1; // canvas_pointe^.Ellipse(x1,y1,x1,y1); canvas_pointe^.DoOnePoint(x1,y1); end; canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; procedure TMonPostScript.graduation(xi,xa:extended; var xci,xca:extended; var graduation:extended; var PuissanceDeDix:integer; var nombregraduation:integer); var n,gm,g,d,logd,tht:extended; p,i,xpa,xpi:longint; res:array[1..12] of extended; nb:longint; begin if xa=0) then p :=longint(trunc(logd)) else p:=longint(trunc(logd)-1); PuissanceDeDix:=p; if xa>=0 then begin gm:=trunc(xa/dix_pp(p-1))*dix_pp(p-1); if (gm>=xa) then xpa:=trunc(xa/dix_pp(p-1)) else xpa:=trunc(xa/dix_pp(p-1))+1; end; if xa<0 then begin gm:=trunc(xa/dix_pp(p-1))*dix_pp(p-1); if (gm>=xa) then xpa:=trunc(xa/dix_pp(p-1)) else xpa:=trunc(xa/dix_pp(p-1)); end; if xi>=0 then begin gm:=trunc(xi/dix_pp(p-1))*dix_pp(p-1); if (gm<=xi) then xpi:=trunc(xi/dix_pp(p-1)) else xpi:=trunc(xi/dix_pp(p-1))-1; end; if xi<0 then begin gm:=trunc(xi/dix_pp(p-1))*dix_pp(p-1); if (gm<=xi) then xpi:=trunc(xi/dix_pp(p-1)) else xpi:=trunc(xi/dix_pp(p-1))-1; end; case (xpa-xpi ) of 1: g:=0.1; 2: g:=0.2; 3,4,5: g:=0.5; 6,7,8,9,10: g:=1; else g:=trunc((xpa-xpi-1)/10+0.001)+1; end; graduation:=g*dix_pp(p-1); {xca:=xpa*dix_pp(p-1); nombregraduation:=trunc((xpa-xpi)/g); xci:=xca-graduation*nombregraduation; if xci>xi then begin xci:=xci-graduation; inc(nombregraduation); end; } xci:=xpi*dix_pp(p-1); nombregraduation:=trunc((xpa-xpi)/g); xca:=xci+graduation*nombregraduation; if xca1) then begin inter:=10; for i:=1 to p-1 do inter:=inter*10; result:=inter; end else if (p=-1) then begin result:=1/10; end; end; function partieentiere(x:extended):extended; begin if x>=0 then begin partieentiere:=int(x); exit; end; if frac(x)=0 then begin partieentiere:=x; exit; end; {cas ou x est <0 et non entier} partieentiere:=int(x)-1; end; procedure TMonPostScript.tracepolycercle(MesSommets: TableauPointPolyhedre; NumPts: Integer; MesCentres: TableauPointPolyhedre; rectiligne,rentrant:tableaurectiligne; theta1,theta2:sommetsreels; couleur_f,couleur_b:tcolor; listetrigodirect:tableaurectiligne); var i:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; MesSOmmetsPoints,MesCentresPoints: arraypoints; recti,rentr,trig:arrayboolean;theta1b,theta2b:arrayextended ; begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; setlength(MesSOmmetsPoints,numpts+1); setlength(MesCentresPoints,numpts+1); setlength(recti,numpts+1); setlength(rentr,numpts+1); setlength(theta1b,numpts+1); setlength(theta2b,numpts+1); setlength(trig,numpts+1); for i:=1 to NumPts+1 do begin invconvert(MesSOmmetsPoints[i-1].x,MesSOmmetsPoints[i-1].y, MesSommets[i].ax,MesSommets[i].ay,true); invconvert(MesCentresPoints[i-1].x,MesCentresPoints[i-1].y, MesCentres[i].ax,MesCentres[i].ay,true); recti[i-1]:=rectiligne[i]; rentr[i-1]:=rentrant[i]; theta1b[i-1]:=theta1[i]; theta2b[i-1]:=theta2[i]; trig[i-1]:=listetrigodirect[i]; end; canvas_pointe^.Pen.Color:=couleur_f; canvas_pointe^.Pen.Mode:=pmcopy; canvas_pointe^.Pen.Style:=pssolid; canvas_pointe^.Pen.Width:=1; canvas_pointe^.Brush.Color:=couleur_f; canvas_pointe^.Brush.Style:=bssolid; canvas_pointe^.PolyCercle(MesSOmmetsPoints,NumPts,MesCentresPoints, recti,rentr,theta1b,theta2b,trig); canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; function TMonPostScript.disque2(x,y:extended; rayon:integer; couleurbord,couleurf:tcolor;gauche:boolean): boolean; var x1,y1,r1x,r1y,i:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; if ((xxmax) or (y>ymax) or (yxmax) or (y>ymax) or (y0) and (ract>0)) then trait(fx+ract*cos(thetaact),fy+ract*sin(thetaact),fx+r*cos(theta),fy+r*sin(theta), 1,couleur,pssolid,pmcopy,gauche); thetaact:=theta; ract:=r; end; end; function TMonPostScript.tracepolygone(nombrepoint:integer;listex,listey:array of extended; couleurbord,couleurf:tcolor;_transparent:boolean;_mode:tpenmode;gauche:boolean):boolean; var i,x1,y1:longint; titi:arraypoints; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; setlength(titi,nombrepoint); for i:=1 to nombrepoint do begin invconvert(x1,y1,listex[i-1],listey[i-1],gauche); titi[i-1].x:=x1; titi[i-1].y:=y1; end; old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.Pen.Color:=couleurbord; canvas_pointe^.brush.color:=couleurf; canvas_pointe^.brush.style:=bsSolid; canvas_pointe^.pen.Color:=couleurbord; canvas_pointe^.Pen.Style:=pssolid; canvas_pointe^.pen.Width:=1; canvas_pointe^.pen.Mode:=pmcopy; if not(_transparent) then canvas_pointe^.brush.style:=bsSolid else canvas_pointe^.brush.style:=bsclear; canvas_pointe^.Polygon(titi,nombrepoint,false); canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; function TMonPostScript.arcdecercle(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean): boolean; var x1,y1,rax,ray:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; t1,t2:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; { if ((xxmax) or (y>ymax) or (yt2 then t1:=t1-2*Pi; old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.pen.style:=pssolid; canvas_pointe^.pen.width:=epaisseur; canvas_pointe^.pen.Style:=_style; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin canvas_pointe^.pen.mode:=pmxor; canvas_pointe^.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin canvas_pointe^.pen.color:=couleur; canvas_pointe^.pen.mode:=_penmod; end; arcdecercle:=true; canvas_pointe^.brush.style:=bsclear; canvas_pointe^.arc(x1-rax,y1+ray,x1+rax,y1-ray,trunc(t1/Pi*180*16),trunc((t2)/Pi*180*16)); arcdecercle:=true; canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; function TMonPostScript.arcdecercleoriente(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche,trigod:boolean): boolean; var x1,y1,rax,ray:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; t1,t2:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; { if ((xxmax) or (y>ymax) or (yt2 then t1:=t1-2*Pi; if trigod and (t2t1) then t2:=t2-2*Pi; old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.pen.style:=pssolid; canvas_pointe^.pen.width:=epaisseur; canvas_pointe^.pen.Style:=_style; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin canvas_pointe^.pen.mode:=pmxor; canvas_pointe^.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin canvas_pointe^.pen.color:=couleur; canvas_pointe^.pen.mode:=_penmod; end; arcdecercleoriente:=true; canvas_pointe^.brush.style:=bsclear; canvas_pointe^.arc(x1-rax,y1+ray,x1+rax,y1-ray,trunc(t1/Pi*180*16),trunc((t2)/Pi*180*16)); arcdecercleoriente:=true; canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; function TMonPostScript.Point(x,y:extended; rayon:integer; couleur:tcolor ; _penmod:tpenmode;gauche:boolean): boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; invconvert(x1,y1,x,y,gauche); if ((xxmax) or (y>ymax) or (y=xmax) or (yymax) or (rayon=0)) then begin cercle:=false; exit; end; old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.pen.style:=pssolid; canvas_pointe^.pen.width:=epaisseur; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin canvas_pointe^.pen.mode:=pmxor; canvas_pointe^.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin canvas_pointe^.pen.color:=couleur; canvas_pointe^.pen.mode:=_penmod; end; cercle:=true; canvas_pointe^.brush.style:=bsclear; canvas_pointe^.arc(xx1-rayon,yy1+rayon,xx1+rayon,yy1-rayon,0, 360*16); canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; function TMonPostScript.disque(x,y:extended; rayon:extended; couleurbord,couleurf:tcolor;_transparent:boolean;gauche:boolean): boolean; var x1,y1,r1x,r1y:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; invconvert(x1,y1,x,y,gauche); if ((xxmax) or (y>ymax) or (yxmax) or (x1ymax) or (y1xmax) or (x2ymax) or (y2xmax) or (y>ymax) or (y0.5*pasgrillex then newx:=(divx+1)*pasgrillex else newx:=divx*pasgrillex; if fracy>0.5*pasgrilley then newy:=(divy+1)*pasgrilley else newy:=divy*pasgrilley; x1:=newx; y1:=newy; end; procedure TMonPostScript.ecrireI(x,y:integer; s:string; police:tfont); var xi,yi:integer; old_font:tfont; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.Brush.Color:=couleurfondsim; canvas_pointe^.Brush.Style:=bsclear; canvas_pointe^.Pen.Color:=couleurfondsim; old_font:=canvas_pointe^.Font; canvas_pointe^.Font:=police; canvas_pointe^.textout(x,y,s); canvas_pointe^.Font:=old_font; canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; procedure TMonPostScript.ecrire(x,y:extended; s:string;gauche:boolean; police:tfont); var xi,yi:integer; old_font:tfont; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.Brush.Color:=couleurfondsim; canvas_pointe^.Brush.Style:=bsclear; canvas_pointe^.Pen.Color:=couleurfondsim; invconvert(xi,yi,x,y,gauche); old_font:=canvas_pointe^.Font; canvas_pointe^.Font:=police; canvas_pointe^.textout(xi,yi,s); canvas_pointe^.Font:=old_font; canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; procedure TMonPostScript.background(couleur:tcolor); var old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; canvas_pointe^.Brush.Color:=couleur; canvas_pointe^.Brush.Style:=bssolid; canvas_pointe^.Pen.Color:=couleur; canvas_pointe^.Pen.Mode:=pmcopy; canvas_pointe^.Rectangle(borduregauche,bordurehaute,largeur-borduredroite,hauteur-bordurebasse); canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; end; procedure Donne_Hauteur_Largeur(type_page_ps:page_ps;type_orientation_ps:orientation_ps; res_x,res_y:integer; var hauteur,largeur:integer); function Sx(AX: Integer): Integer; begin result := round(res_x/72*Ax); end; function Sy(AY: Integer): Integer; begin result := round(res_y/72*Ay); end; begin if ((type_page_ps=Ledger) and (type_orientation_ps=portrait)) then begin hauteur:=Sx(1224); largeur:=Sy(792); end; if ((type_page_ps=Ledger) and (type_orientation_ps=paysage)) then begin hauteur:=Sx(792); largeur:=Sy(1224); end; if ((type_page_ps=Legal) and (type_orientation_ps=portrait)) then begin hauteur:=Sx(1008); largeur:=Sy(612); end; if ((type_page_ps=Legal) and (type_orientation_ps=paysage)) then begin hauteur:=Sx(612); largeur:=Sy(1008); end; if ((type_page_ps=Letter) and (type_orientation_ps=portrait)) then begin hauteur:=Sx(792); largeur:=Sy(612); end; if ((type_page_ps=Letter) and (type_orientation_ps=paysage)) then begin hauteur:=Sx(612); largeur:=Sy(792); end; if ((type_page_ps=A4) and (type_orientation_ps=portrait)) then begin hauteur:=Sy(842); largeur:=Sx(595); end; if ((type_page_ps=A4) and (type_orientation_ps=paysage)) then begin hauteur:=Sy(595); largeur:=Sx(842); end; if ((type_page_ps=A3) and (type_orientation_ps=portrait)) then begin hauteur:=Sy(1190); largeur:=Sx(842); end; if ((type_page_ps=A3) and (type_orientation_ps=paysage)) then begin hauteur:=Sy(842); largeur:=Sx(1190); end; if ((type_page_ps=A2) and (type_orientation_ps=portrait)) then begin hauteur:=Sy(1684); largeur:=Sx(1190); end; if ((type_page_ps=A2) and (type_orientation_ps=paysage)) then begin hauteur:=Sy(1190); largeur:=Sx(1684); end; if ((type_page_ps=A1) and (type_orientation_ps=portrait)) then begin hauteur:=Sy(2380); largeur:=Sx(1684); end; if ((type_page_ps=A1) and (type_orientation_ps=paysage)) then begin hauteur:=Sy(1684); largeur:=Sx(2380); end; if ((type_page_ps=A0) and (type_orientation_ps=portrait)) then begin hauteur:=Sy(3368); largeur:=Sx(2380); end; if ((type_page_ps=A0) and (type_orientation_ps=paysage)) then begin hauteur:=Sy(2380); largeur:=Sx(3368); end; if ((type_page_ps=A5) and (type_orientation_ps=portrait)) then begin hauteur:=Sy(595); largeur:=Sx(421); end; if ((type_page_ps=A5) and (type_orientation_ps=paysage)) then begin hauteur:=Sy(421); largeur:=Sx(595); end; end; function TMonPostScript.LimitesEtAxes(pointeur_sur_canvas:ppscanvas; _res_x,_res_y:integer;_type_page_ps:page_ps; _type_orientation_ps:orientation_ps; _xmin,_xmax,_ymin1,_ymax1,_ymin2,_ymax2:extended; _police:tfont; _titre:string; _fontetitre:tfont; _Fond:boolean; _CouleurFondsim:tcolor; _Cadre:boolean; _EpaisseurCadre:integer; _CouleurCadre:tcolor; _Gradue:boolean; _EpaisseurGraduation,_LongueurGraduation:integer; _couleurgraduation:tcolor; _fontegraduation:tfont; _Grille1,_Grille2:boolean; _EpaisseurGrille:integer; _CouleurGrille1,_CouleurGrille2:tcolor; _labelx,_labely1,_labely2,_unitex,_unitey1,_unitey2:string; _borduresverticalessymetriques, _echelle_g,_echelle_d:boolean; b_g,b_d,b_b,b_h:integer):boolean; var xi,xa,yi1,yi2,ya1,ya2,gi,ga:extended; t1,t2,i:integer; dixx,dixy1,dixy2,tt,aff:string; nbgx,nbgy1,nbgy2:integer; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; old_font:tfont; hhh,lll:integer; begin canvas_pointe:=pointeur_sur_canvas; res_x:=_res_x; res_y:=_res_y; type_page_ps:=_type_page_ps; type_orientation_ps:=_type_orientation_ps; canvas_pointe^.XDPI := res_x; canvas_pointe^.YDPI := res_y; Donne_Hauteur_Largeur(type_page_ps,type_orientation_ps,res_x,res_y,hhh,lll); canvas_pointe^.PaperHeight:=hhh; canvas_pointe^.PaperWidth:=lll; if type_orientation_ps=portrait then canvas_pointe^.Orientation:=poportrait else canvas_pointe^.Orientation:=polandscape; canvas_pointe^.BeginDoc; canvas_pointe^.Font.Assign(_police); old_pencolor:=canvas_pointe^.Pen.Color; old_penmode:=canvas_pointe^.Pen.Mode; old_penstyle:=canvas_pointe^.Pen.Style; old_penwidth:=canvas_pointe^.Pen.Width; old_brushcolor:=canvas_pointe^.Brush.Color; old_brushstyle:=canvas_pointe^.Brush.Style; old_font:=canvas_pointe^.Font; fond:=_fond; echelle_g:=_echelle_g; echelle_d:=_echelle_d; borduresverticalessymetriques:=_borduresverticalessymetriques; labelx:=_labelx; labely1:=_labely1; labely2:=_labely2; unitex:=_unitex; unitey1:=_unitey1; unitey2:=_unitey2; fontetitre:=_fontetitre; largeur:=canvas_pointe^.Paperwidth; hauteur:=canvas_pointe^.PaperHeight; titre:=_titre; couleurfondsim:=_couleurfondsim; cadre:=_cadre; epaisseurcadre:=_epaisseurcadre; couleurcadre:=_couleurcadre; gradue:=_gradue; epaisseurgraduation:=_epaisseurgraduation; fontegraduation:=_fontegraduation; couleurgraduation:=_couleurgraduation; grille1:=_grille1; grille2:=_grille2; epaisseurgrille:=_epaisseurgrille; couleurgrille1:=_couleurgrille1; couleurgrille2:=_couleurgrille2; if (echelle_g and ( (_ymin1=_ymax1) or (_xmax=_xmin))) then begin LimitesEtAxes:=false; exit; end; if (echelle_d and ( (_ymin2=_ymax2) or (_xmax=_xmin))) then begin LimitesEtAxes:=false; exit; end; LimitesEtAxes:=true; if (_xmin>_xmax ) then begin xmin:=_xmax; xmax:=_xmin; end else begin xmin:=_xmin; xmax:=_xmax; end; if (_ymin1>_ymax1 ) then begin ymin1:=_ymax1; ymax1:=_ymin1; end else begin ymin1:=_ymin1; ymax1:=_ymax1; end; if (_ymin2>_ymax2 ) then begin ymin2:=_ymax2; ymax2:=_ymin2; end else begin ymin2:=_ymin2; ymax2:=_ymax2; end; borduregauche:=b_g; borduredroite:=b_d; bordurebasse:=b_b; bordurehaute:=b_h; if fond then background(couleurfondsim); xi:=xmin; yi1:=ymin1; yi2:=ymin2; xa:=xmax; ya1:=ymax1; ya2:=ymax2; canvas_pointe^.font:=fontetitre; if (titre<>'') then begin t1:=trunc(canvas_pointe^.textheight(titre))+10; end else t1:=10; if gradue then begin canvas_pointe^.font:=fontegraduation; if ((dixy1='0') and (dixy2='0')) then t2:=trunc(canvas_pointe^.textheight('10'+unitex+labelx)*1.5) else t2:=trunc(canvas_pointe^.textheight('10'+unitex+labelx)*2.2); end else t2:=10; if (t1>t2) then bordurehaute:=t1 else bordurehaute:=t2; {version pour optgeo: pas de bordure} bordurehaute:=0; {taille bordure basse} if gradue then begin canvas_pointe^.font:=fontegraduation; t1:=trunc(canvas_pointe^.textheight('x10'))+10; end else t1:=10; bordurebasse:=t1; {version pour optgeo: pas de bordure} bordurebasse:=0; {taille bordure droite} if (gradue and echelle_d) then begin canvas_pointe^.font:=fontegraduation; str( trunc((ymin2)/dix_pp(puissancededixy2-1)),tt); t1:=trunc(canvas_pointe^.textwidth(tt))+10; str( trunc((ymin2+nbgy2*graduationy2)/dix_pp(puissancededixy2-1)),tt); t2:=trunc(canvas_pointe^.textwidth(tt))+10; end else begin t1:=10; t2:=10; end; if t1t2 then borduredroite:=t1 else borduredroite:=t2; {version pour optgeo: pas de bordure} borduredroite:=0; {taille bordure gauche} if (gradue and echelle_g) then begin canvas_pointe^.font:=fontegraduation; str( trunc((ymin1)/dix_pp(puissancededixy1-1)),tt); t1:=trunc(canvas_pointe^.textwidth(tt))+10; str( trunc((ymin1+nbgy1*graduationy1)/dix_pp(puissancededixy1-1)),tt); t2:=trunc(canvas_pointe^.textwidth(tt))+10; end else begin t1:=10; t2:=10; end; if t1t2 then borduregauche:=t1 else borduregauche:=t2; {version pour optgeo: pas de bordure} borduregauche:=0; if borduresverticalessymetriques then begin borduregauche:=max(borduregauche,borduredroite); borduredroite:=borduregauche; end; borduregauche:=b_g; borduredroite:=b_d; bordurebasse:=b_b; bordurehaute:=b_h; {longueurgraduation} longueurgraduationX:=_longueurgraduation/largeur*(xmax-xmin); if echelle_g then longueurgraduationy1:=_longueurgraduation/hauteur*(ymax1-ymin1); if echelle_d then longueurgraduationy2:=_longueurgraduation/hauteur*(ymax2-ymin2); if grille1 then begin canvas_pointe^.pen.style:=psdot; canvas_pointe^.pen.color:=couleurgrille1; canvas_pointe^.pen.width:=epaisseurgrille; for i:=0 to nbgx do trait(xmin+i*graduationx,ymin1,xmin+i*graduationx,ymax1, epaisseurgrille,couleurgrille1,psdot,pmcopy,true); for i:=0 to nbgy1 do trait(xmin,ymin1+i*graduationy1,xmax,ymin1+i*graduationy1, epaisseurgrille,couleurgrille1,psdot,pmcopy,true); end; if grille2 then begin canvas_pointe^.pen.style:=psdot; canvas_pointe^.pen.color:=couleurgrille2; canvas_pointe^.pen.width:=epaisseurgrille; for i:=0 to nbgx do trait(xmin+i*graduationx,ymin2,xmin+i*graduationx,ymax2, epaisseurgrille,couleurgrille2,psdot,pmcopy,false); for i:=0 to nbgy2 do trait(xmin,ymin2+i*graduationy2,xmax,ymin2+i*graduationy2, epaisseurgrille,couleurgrille2,psdot,pmcopy,false); end; {cadre} if cadre then begin canvas_pointe^.pen.width:=epaisseurcadre; canvas_pointe^.pen.mode:=pmcopy; canvas_pointe^.pen.style:=pssolid; canvas_pointe^.pen.color:=couleurcadre; canvas_pointe^.DoLineFromTo(BordureGauche,BordureHaute,largeur-BordureDroite,BordureHaute); canvas_pointe^.DoLineFromTo(largeur-BordureDroite,BordureHaute,largeur-BordureDroite,hauteur-BordureBasse); canvas_pointe^.DoLineFromTo(largeur-BordureDroite,hauteur-BordureBasse,BordureGauche,hauteur-BordureBasse); canvas_pointe^.DoLineFromTo(BordureGauche,hauteur-BordureBasse,BordureGauche,BordureHaute); end; {affichage du titre} canvas_pointe^.font:=fontetitre; while ((canvas_pointe^.textwidth(titre)>largeur) and (canvas_pointe^.Font.Size>1)) do canvas_pointe^.Font.Size:=canvas_pointe^.Font.Size-1; if canvas_pointe^.Font.Size<6 then canvas_pointe^.Font.Size:=6; canvas_pointe^.textout(largeur div 2 -(canvas_pointe^.textwidth(titre) div 2), 2,titre); {graduation} if gradue then begin if dixx='0' then aff:='' else begin aff:='10'; if dixx<>'1' then for i:=1 to length(dixx) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labelx; if ((unitex<>'1') and (unitex<>'')) then aff:=aff+' en '+unitex; canvas_pointe^.font:=fontegraduation; canvas_pointe^.textout(largeur-borduredroite-trunc(canvas_pointe^.textwidth (aff)*1.3),hauteur-bordurebasse- trunc(canvas_pointe^.textheight('x10')*1.3),aff); if ((dixx<>'0') and (dixx<>'1')) then canvas_pointe^.textout(largeur-borduredroite-trunc(canvas_pointe^.textwidth(aff)*1.3)+ trunc(canvas_pointe^.textwidth('10')),hauteur-bordurebasse -trunc(1.9*canvas_pointe^.textheight('x10')), dixx); for i:=0 to nbgx do begin str(round((xmin+i*graduationx)/dix_pp(puissancededixx-1)),tt); canvas_pointe^.textout( trunc(i*graduationx/(xmax-xmin)*(largeur-borduredroite-borduregauche)+ borduregauche)-canvas_pointe^.textwidth(tt) div 2, hauteur-trunc(canvas_pointe^.textheight(dixx)+10),tt); end; if echelle_g then begin if dixy1='0' then aff:='' else begin aff:='10'; if dixy1<>'1' then for i:=1 to length(dixy1) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labely1; if ((unitey1<>'1') and (unitey1<>'')) then aff:=aff+' en '+unitey1; canvas_pointe^.font:=fontegraduation; canvas_pointe^.textout(borduregauche,bordurehaute-trunc(canvas_pointe^.textheight(aff)*1.2),aff); if ((dixy1<>'0') and (dixy1<>'1')) then canvas_pointe^.textout(borduregauche+canvas_pointe^.textwidth('10'),bordurehaute -trunc(canvas_pointe^.textheight(aff)*1.8), dixy1); end; if echelle_d then begin if dixy2='0' then aff:='' else begin aff:='10'; if dixy2<>'1' then for i:=1 to length(dixy2) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labely2; if ((unitey2<>'1') and (unitey2<>'')) then aff:=aff+' en '+unitey2; canvas_pointe^.font:=fontegraduation; canvas_pointe^.textout(largeur-borduredroite-trunc(canvas_pointe^.textwidth(aff)*1.2), bordurehaute-trunc(canvas_pointe^.textheight(aff)*1.2),aff); if ((dixy2<>'0') and (dixy2<>'1')) then canvas_pointe^.textout(largeur-borduredroite-trunc(canvas_pointe^.textwidth(aff)*1.2)+canvas_pointe^.textwidth('10'), bordurehaute -trunc(canvas_pointe^.textheight(aff)*1.8), dixy2); end; if echelle_g then for i:=0 to nbgy1 do begin str( round((ymin1+i*graduationy1)/dix_pp(puissancededixy1-1)),tt); if i=0 then canvas_pointe^.textout( borduregauche-trunc(canvas_pointe^.textwidth(tt)*1.1), trunc(- bordurebasse+hauteur)-canvas_pointe^.textheight(tt) , tt) else canvas_pointe^.textout( borduregauche-trunc(canvas_pointe^.textwidth(tt)*1.1), trunc(-i*graduationy1/(ymax1-ymin1)*(hauteur-bordurehaute-bordurebasse)- bordurebasse+hauteur)-canvas_pointe^.textheight(tt) div 2, tt); end; if echelle_d then for i:=0 to nbgy2 do begin str( round((ymin2+i*graduationy2)/dix_pp(puissancededixy2-1)),tt); if i=0 then canvas_pointe^.textout( largeur-borduredroite+5, trunc(- bordurebasse+hauteur)-canvas_pointe^.textheight(tt) , tt) else canvas_pointe^.textout( largeur-borduredroite+5, trunc(-i*graduationy2/(ymax2-ymin2)*(hauteur-bordurehaute-bordurebasse)- bordurebasse+hauteur)-canvas_pointe^.textheight(tt) div 2, tt); end; if echelle_g then begin for i:=0 to nbgx do trait(xmin+i*graduationx,ymin1,xmin+i*graduationx, ymin1+longueurgraduationy1,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgx do trait(xmin+i*graduationx,ymax1,xmin+i*graduationx, ymax1-longueurgraduationy1,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgy1 do trait(xmin,ymin1+i*graduationy1,xmin+longueurgraduationx,ymin1+i*graduationy1, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgy1 do trait(xmax,ymin1+i*graduationy1,xmax-longueurgraduationx,ymin1+i*graduationy1, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); end; if echelle_d then begin for i:=0 to nbgx do trait(xmin+i*graduationx,ymin2,xmin+i*graduationx, ymin2+longueurgraduationy2,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgx do trait(xmin+i*graduationx,ymax2,xmin+i*graduationx, ymax2-longueurgraduationy2,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgy2 do trait(xmin,ymin2+i*graduationy2,xmin+longueurgraduationx,ymin2+i*graduationy2, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgy2 do trait(xmax,ymin2+i*graduationy2,xmax-longueurgraduationx,ymin2+i*graduationy2, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); end; end; canvas_pointe^.Pen.Color:=old_pencolor; canvas_pointe^.Pen.Mode:=old_penmode; canvas_pointe^.Pen.Style:=old_penstyle; canvas_pointe^.Pen.Width:=old_penwidth; canvas_pointe^.Brush.Color:=old_brushcolor; canvas_pointe^.Brush.Style:=old_brushstyle; canvas_pointe^.font:=old_font; end; function TMonPostScript.Convert(xi,yi:integer; var x,y:extended;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x:=(xi-BordureGauche)*(xmax-xmin)/ (largeur-BordureGauche-BordureDroite) +xmin; y:=-(yi-BordureHaute)*(ymax-ymin)/(hauteur-BordureHaute-BordureBasse) +ymax; convert:=true; end; function TMonPostScript.invconvert(var xi,yi:integer; x,y:extended;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; xi:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; yi:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; invconvert:=true; end; function TMonPostScript.CroixX(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; invconvert(x1,y1,x,y,gauche); if ((xxmax) or (y>ymax) or (yF": on a donc O2F"=2f'2 et O2F'=-2f'2. - Enfin, F" est confondu avec le foyer objet de l'oculaire, qui donne une image finale à l'infini.optgeo-2.21/exemples/Exemples_Classiques/coronographe.opt0000750000175000017500000001171711446465056024163 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 200 0.0000000000000000E+0000 1.4000000000000000E+0003 0.0000000000000000E+0000 8.7200000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE TRUE TRUE 2.0000000000000000E+0001 2.0000000000000000E+0001 OPTIONS NORMALES FALSE FALSE 5.0000000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 0 Nombre de miroirs concaves paraxiaux: 0 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 4 Numero 1 2.5000000000000000E+0002 3.5000000000000000E+0002 2.5000000000000000E+0002 6.5000000000000000E+0002 2.0000000000000000E+0002 1 16711680 16711935 TRUE Numero 2 6.5000000000000000E+0002 2.0000000000000000E+0002 6.5000000000000000E+0002 8.0000000000000000E+0002 1.0885462555066000E+0002 1 16711680 16711935 TRUE Numero 3 9.8700000000000000E+0002 2.5000000000000000E+0002 9.8700000000000000E+0002 7.5000000000000000E+0002 5.0000000000000000E+0001 1 16711680 16711935 TRUE Numero 4 1.1370000000000000E+0003 2.0000000000000000E+0002 1.1370000000000000E+0003 8.0000000000000000E+0002 5.0000000000000000E+0001 1 16711680 16711935 TRUE Nombre de lentiles minces divergentes: 0 Nombre de rayons: 8 Numero 1 5.0000000000000000E+0001 6.8500000000000000E+0002 2.0000000000000000E+0002 -5.0000000000000000E+0001 255 1 10 Nombre maximal de segments: 500 Numero 2 5.0000000000000000E+0001 3.1500000000000000E+0002 2.0000000000000000E+0002 5.0000000000000000E+0001 255 1 10 Nombre maximal de segments: 500 Numero 3 5.0000000000000000E+0001 6.4000000000000000E+0002 2.0000000000000000E+0002 0.0000000000000000E+0000 255 1 10 Nombre maximal de segments: 500 Numero 4 5.0000000000000000E+0001 3.6000000000000000E+0002 2.0000000000000000E+0002 0.0000000000000000E+0000 255 1 10 Nombre maximal de segments: 500 Numero 5 5.0000000000000000E+0001 7.0000000000000000E+0002 2.0000000000000000E+0002 -6.0000000000000000E+0001 32768 1 10 Nombre maximal de segments: 500 Numero 6 5.0000000000000000E+0001 3.0000000000000000E+0002 2.0000000000000000E+0002 6.0000000000000000E+0001 16711680 1 10 Nombre maximal de segments: 500 Numero 7 5.0000000000000000E+0001 4.2000000000000000E+0002 2.0000000000000000E+0002 -6.0000000000000000E+0001 32768 1 10 Nombre maximal de segments: 500 Numero 8 5.0000000000000000E+0001 5.8000000000000000E+0002 2.0000000000000000E+0002 6.0000000000000000E+0001 16711680 1 10 Nombre maximal de segments: 500 Nombre de sources ponctuelles: 0 Nombre d'ondes planes: 0 Nombre d'ecrans: 1 Numero 1 4.5000000000000000E+0002 4.5000000000000000E+0002 4.5000000000000000E+0002 5.5000000000000000E+0002 2 0 Nombre de diaphragmes: 1 Numero 1 8.0000000000000000E+0002 5.0000000000000000E+0002 1.5707963267948898E+0000 5.3888486059171697E+0001 2.9000000000000000E+0002 2 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 1 Numero 1 4 8.2000000000000000E+0002 7.8000000000000011E+0002 8.4000000000000000E+0002 7.8000000000000011E+0002 8.4000000000000000E+0002 2.1999999999999977E+0002 8.2000000000000000E+0002 2.1999999999999977E+0002 1.0000000000000000E+0000 1.0000000000000000E+0000 1.0000000000000000E+0000 0 16776960 2 2 Nombre de prismes: 0 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 10 Numero 1 Coronographe 5.5000000000000000E+0002 5.0000000000000000E+0001 1 0 22 no no fsunderline no fpDefault Numero 2 Objectif 2.5000000000000000E+0002 3.4000000000000000E+0002 1 0 14 fsbold no no no fpDefault Numero 3 Oculaire 1.1000000000000000E+0003 1.7000000000000000E+0002 1 0 14 fsbold no no no fpDefault Numero 4 Diaphragme de Lyot 7.2000000000000000E+0002 2.2000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 5 Disque occulteur 4.0000000000000000E+0002 3.4000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 6 (L1) 2.5000000000000000E+0002 6.9000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 7 (Lc) 6.5000000000000000E+0002 8.3000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 8 (L2) 9.5000000000000000E+0002 7.8000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 9 (L3) 1.1500000000000000E+0003 8.3000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 10 Filtre H alpha 8.2000000000000000E+0002 8.2000000000000000E+0002 1 0 12 fsbold no no no fpDefault Nombre de lentilles epaisses: 0 Nombre d'angles: 0 Nombre de traits: 0 Nombre d'oeils: 1 Numero 1 1.3500000000000002E+0003 4.9000000000000011E+0002 1.2526907630522089E+0003 4.9330927835051546E+0002 1 32768 Nombre de mesures de distances 0 Nombre de groupes: 0 couleur fond simulation 16777215 empennage position 500 taille 5 optgeo-2.21/exemples/Exemples_Classiques/filbre_saut_indice.opt0000750000175000017500000000453411446465056025306 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 1 0.00000000000000E+0000 1.02000000000000E+0003 0.00000000000000E+0000 6.09000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE TRUE FALSE 5.00000000000000E+0001 5.00000000000000E+0001 OPTIONS NORMALES TRUE TRUE 5.00000000000000E-0002 0 1 1 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 0 Nombre de miroirs concaves paraxiaux: 0 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 0 Nombre de lentiles minces divergentes: 0 Nombre de rayons: 1 Numero 1 5.00000000000000E+0001 2.60000000000000E+0002 5.40000000000000E+0001 1.11000000000000E+0002 255 1 10 Nombre de sources ponctuelles: 0 Nombre d'ondes planes: 0 Nombre d'ecrans: 0 Nombre de diaphragmes: 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 3 Numero 1 4 1.00000000000000E+0002 5.00000000000000E+0002 9.00000000000000E+0002 5.00000000000000E+0002 9.00000000000000E+0002 4.50000000000000E+0002 1.00000000000000E+0002 4.50000000000000E+0002 1.40000000000000E+0000 1.40000000000000E+0000 1.40000000000000E+0000 0 65535 4 4 Numero 2 4 1.00000000000000E+0002 4.50000000000000E+0002 9.00000000000000E+0002 4.50000000000000E+0002 9.00000000000000E+0002 3.00000000000000E+0002 1.00000000000000E+0002 3.00000000000000E+0002 1.80000000000000E+0000 1.80000000000000E+0000 1.80000000000000E+0000 0 16776960 4 4 Numero 3 4 1.00000000000000E+0002 3.00000000000000E+0002 1.00000000000000E+0002 2.50000000000000E+0002 9.00000000000000E+0002 2.50000000000000E+0002 9.00000000000000E+0002 3.00000000000000E+0002 1.40000000000000E+0000 1.40000000000000E+0000 1.40000000000000E+0000 0 65535 4 4 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 3 Numero 1 n=1,4 4.19000000000000E+0002 4.82000000000000E+0002 1 -2147483640 MS Sans Serif 8 no no no no fpDefault Numero 2 n=1,8 2.46000000000000E+0002 3.34000000000000E+0002 1 -2147483640 MS Sans Serif 8 no no no no fpDefault Numero 3 n=1,4 3.43000000000000E+0002 2.76000000000000E+0002 1 -2147483640 MS Sans Serif 8 no no no no fpDefault Nombre de lentilles epaisses: 0 Nombre d'angles: 0 optgeo-2.21/exemples/Exemples_Classiques/cardioide.txt0000750000175000017500000000000011446465055023413 0ustar georgeskgeorgeskoptgeo-2.21/exemples/Exemples_Classiques/cardioide.opt0000750000175000017500000000320311446465055023406 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 200 0.0000000000000000E+0000 1.4360000000000000E+0003 0.0000000000000000E+0000 7.4700000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE FALSE FALSE 7.0000000000000000E+0001 3.0000000000000000E+0001 OPTIONS NORMALES FALSE FALSE 5.0000000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 0 Nombre de miroirs concaves paraxiaux: 0 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 1 Numero 1 5.4700000000000000E+0002 3.8200000000000000E+0002 5.4700000000000000E+0002 3.8400000000000000E+0002 2.9664161879277800E+0002 1 0 16711680 TRUE TRUE FALSE FALSE 0.0000000000000000E+0000 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 0 Nombre de lentiles minces divergentes: 0 Nombre de rayons: 0 Nombre de sources ponctuelles: 1 Numero 1 100 5.4800000000000000E+0002 3.8400000000000000E+0002 5.9800000000000000E+0002 2.7900000000000000E+0002 5.9500000000000000E+0002 5.0300000000000000E+0002 255 1 10 FALSE FALSE Nombre maximal de segments par rayon: 2 Nombre d'ondes planes: 0 Nombre d'ecrans: 0 Nombre de diaphragmes: 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 0 Nombre de prismes: 0 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 0 Nombre de lentilles epaisses: 0 Nombre d'angles: 0 Nombre de traits: 0 Nombre d'oeils: 0 Nombre de mesures de distances 0 Nombre de groupes: 0 couleur fond simulation 16777215 empennage position 500 taille 0 optgeo-2.21/exemples/Exemples_Classiques/coronographe_lumiere_parasite.opt0000750000175000017500000001101611446465056027565 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 200 0.0000000000000000E+0000 1.4000000000000000E+0003 0.0000000000000000E+0000 8.7200000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE TRUE FALSE 2.0000000000000000E+0001 2.0000000000000000E+0001 OPTIONS NORMALES FALSE FALSE 5.0000000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 0 Nombre de miroirs concaves paraxiaux: 0 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 4 Numero 1 2.5000000000000000E+0002 3.5000000000000000E+0002 2.5000000000000000E+0002 6.5000000000000000E+0002 2.0000000000000000E+0002 1 16711680 16711935 TRUE Numero 2 6.5000000000000000E+0002 2.0000000000000000E+0002 6.5000000000000000E+0002 8.0000000000000000E+0002 1.0885462555065899E+0002 1 16711680 16711935 TRUE Numero 3 9.8699999999999898E+0002 2.5000000000000000E+0002 9.8699999999999898E+0002 7.5000000000000000E+0002 5.0000000000000000E+0001 1 16711680 16711935 TRUE Numero 4 1.1370000000000000E+0003 2.0000000000000000E+0002 1.1370000000000000E+0003 8.0000000000000000E+0002 5.0000000000000000E+0001 1 16711680 16711935 TRUE Nombre de lentiles minces divergentes: 0 Nombre de rayons: 6 Numero 1 5.0000000000000000E+0001 5.8000000000000000E+0002 2.0000000000000000E+0002 6.0000000000000000E+0001 16711680 1 10 Nombre maximal de segments: 500 Numero 2 5.0000000000000000E+0001 7.0000000000000000E+0002 2.0000000000000000E+0002 -6.0000000000000000E+0001 32768 1 10 Nombre maximal de segments: 500 Numero 3 5.0000000000000000E+0001 4.200000000000000E+0002 2.0000000000000000E+0002 -6.0000000000000000E+0001 32768 1 10 Nombre maximal de segments: 500 Numero 4 5.0000000000000000E+0001 3.0000000000000000E+0002 2.0000000000000000E+0002 6.0000000000000000E+0001 16711680 1 10 Nombre maximal de segments: 500 Numero 5 2.5301204819277100E+0002 6.4950515463917498E+0002 3.6698795180722800E+0002 1.1049484536082400E+0002 255 1 10 Nombre maximal de segments: 500 Numero 6 2.5301204819277109E+0002 3.5396907216494844E+0002 3.8345381526104416E+0002 8.4278350515463956E+0001 255 1 10 Nombre maximal de segments: 500 Nombre de sources ponctuelles: 0 Nombre d'ondes planes: 0 Nombre d'ecrans: 1 Numero 1 4.5000000000000000E+0002 4.5000000000000000E+0002 4.5000000000000000E+0002 5.5000000000000000E+0002 2 0 Nombre de diaphragmes: 1 Numero 1 8.0000000000000000E+0002 5.0000000000000000E+0002 1.5707963267948898E+0000 5.3888486059171598E+0001 2.9000000000000000E+0002 2 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 1 Numero 1 4 8.1999999999999898E+0002 7.8000000000000000E+0002 8.400000000000000E+0002 7.8000000000000000E+0002 8.400000000000000E+0002 2.1999999999999901E+0002 8.1999999999999898E+0002 2.1999999999999901E+0002 1.0000000000000000E+0000 1.0000000000000000E+0000 1.0000000000000000E+0000 0 16776960 2 2 Nombre de prismes: 0 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 9 Numero 1 Filtre H alpha 8.1999999999999898E+0002 8.1999999999999898E+0002 1 0 12 fsbold no no no fpDefault Numero 2 Objectif 2.5000000000000000E+0002 3.4000000000000000E+0002 1 0 14 fsbold no no no fpDefault Numero 3 Oculaire 1.1000000000000000E+0003 1.7000000000000000E+0002 1 0 14 fsbold no no no fpDefault Numero 4 Diaphragme de Lyot 7.2000000000000000E+0002 2.2000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 5 Disque occulteur 4.0000000000000000E+0002 3.4000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 6 (L1) 2.5000000000000000E+0002 6.9000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 7 (Lc) 6.5000000000000000E+0002 8.3000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 8 (L2) 9.5000000000000000E+0002 7.8000000000000000E+0002 1 0 12 fsbold no no no fpDefault Numero 9 (L3) 1.1500000000000000E+0003 8.3000000000000000E+0002 1 0 12 fsbold no no no fpDefault Nombre de lentilles epaisses: 0 Nombre d'angles: 0 Nombre de traits: 0 Nombre d'oeils: 1 Numero 1 1.3500000000000000E+0003 4.9000000000000000E+0002 1.2526907630522001E+0003 4.9330927835051500E+0002 1 32768 Nombre de mesures de distances 0 Nombre de groupes: 0 couleur fond simulation 16777215 empennage position 500 taille 5 optgeo-2.21/exemples/Exemples_Classiques/coronographe_lumiere_parasite.txt0000750000175000017500000000131311446465056027601 0ustar georgeskgeorgesk- Disque occulteur: dans le plan focal image de (L1); intercepte les rayons issus du disque solaire (en rouge); les rayons issus de la couronne solaire (en vert et bleu) ne sont pas interceptés. - Diaphragme de Lyot: son centre est conjugué de (O1) (centre optique de (L1)) par (Lc); il intercepte la lumière parasite qui serait diffractée par la monture de l'objectif (L1). - Si on note F'1 le foyer image de (L1), F' son image par (Lc) et F'' l'image de F' par (L2), (L2) est placée et sa focale choisie de telle façon que le grandissement soit de -1 pour F'->F": on a donc O2F"=2f'2 et O2F'=-2f'2. - Enfin, F" est confondu avec le foyer objet de l'oculaire, qui donne une image finale à l'infini.optgeo-2.21/exemples/Exemples_Classiques/cercle_oculaire.txt0000750000175000017500000000070611446465056024626 0ustar georgeskgeorgeskLunette astronomique On visualise ici le "cercle oculaire", zone perpendiculaire à l'axe optique et de plus petite dimension contenant tous les rayons qui sont passés par l'oculaire. C'est aussi l'image par l'oculaire de l'objectif. L'oeil doit être placé au niveau du cercle oculaire. Le diamètre du cercle oculaire (qui est égal à celui de l'objectif divisé par le grossissement) doit être inférieur à celui de la pupille (environ 6mm). optgeo-2.21/exemples/Exemples_Classiques/Telescopes/0000750000175000017500000000000012247340361023034 5ustar georgeskgeorgeskoptgeo-2.21/exemples/Exemples_Classiques/Telescopes/telescope_cassegrain.txt0000750000175000017500000000067411446465056030002 0ustar georgeskgeorgeskTélescope de type Cassegrain Les dimensions selon l'axe sont celles du télescope du Pic de Midi (d'après pbe de concours TPE 1995): - miroir primaire sphérique de rayon de courbure 19,972m, et troué - miroir secondaire sphérique de rayon de courbure 4,465m - distance entre sommets: 8,184m les dimensions perpendiculaires à l'axe ne sont pas respectées. On envoie une onde plane incidente de direction parallèle à l'axe. optgeo-2.21/exemples/Exemples_Classiques/Telescopes/telescope_newton.opt0000750000175000017500000000412711446465056027155 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 1 0.00000000000000E+0000 1.02000000000000E+0003 0.00000000000000E+0000 6.09000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE TRUE FALSE 5.00000000000000E+0001 5.00000000000000E+0001 OPTIONS NORMALES TRUE FALSE 5.00000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 1 Numero 1 4.75000000000000E+0002 4.25000000000000E+0002 4.25000000000000E+0002 3.75000000000000E+0002 1 0 TRUE Nombre de miroirs concaves paraxiaux: 1 Numero 1 7.00000000000000E+0002 2.50000000000000E+0002 7.00000000000000E+0002 5.50000000000000E+0002 4.00000000000000E+0002 1 0 16711680 TRUE TRUE FALSE 0.00000000000000E+0000 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 1 Numero 1 4.00000000000000E+0002 2.30000000000000E+0002 5.00000000000000E+0002 2.30000000000000E+0002 2.00000000000000E+0001 1 16711680 16711935 TRUE Nombre de lentiles minces divergentes: 0 Nombre de rayons: 0 Nombre de sources ponctuelles: 0 Nombre d'ondes planes: 1 Numero 1 5 6.12000000000000E+0002 4.21000000000000E+0002 1.52000000000000E+0002 4.45000000000000E+0002 1.55141774787012E+0002 5.05217350084404E+0002 255 1 10 FALSE Nombre d'ecrans: 3 Numero 1 7.00000000000000E+0002 5.50000000000000E+0002 1.50000000000000E+0002 5.50000000000000E+0002 2 0 Numero 2 7.00000000000000E+0002 2.50000000000000E+0002 5.00000000000000E+0002 2.50000000000000E+0002 2 0 Numero 3 4.00000000000000E+0002 2.50000000000000E+0002 1.50000000000000E+0002 2.50000000000000E+0002 2 0 Nombre de diaphragmes: 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 0 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 1 Numero 1 Télescope de type Newton 7.11000000000000E+0002 2.01000000000000E+0002 1 -2147483640 MS Sans Serif 14 no no fsunderline no fpDefault Nombre de lentilles epaisses: 0 Nombre d'angles: 0 optgeo-2.21/exemples/Exemples_Classiques/Telescopes/telescope_cassegrain.opt0000750000175000017500000000376611446465056027772 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 5 0.00000000000000E+0000 3.00000000000000E+0001 0.00000000000000E+0000 1.80000000000000E+0001 TRUE UNITE m OPTIONS GRILLE TRUE FALSE 1.00000000000000E+0000 1.00000000000000E+0000 OPTIONS NORMALES TRUE FALSE 5.00000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 0 Nombre de miroirs concaves paraxiaux: 1 Numero 1 1.70000000000000E+0001 6.00000000000000E+0000 1.70000000000000E+0001 1.60000000000000E+0001 9.98600000000000E+0000 1 0 16711680 TRUE TRUE TRUE 1.00000000000000E+0000 Nombre de miroirs convexes paraxiaux: 1 Numero 1 8.81600000000000E+0000 1.20000000000000E+0001 8.81600000000000E+0000 1.00000000000000E+0001 2.23250000000000E+0000 1 0 16711680 TRUE TRUE FALSE 0.00000000000000E+0000 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 1 Numero 1 1.86846689895470E+0001 1.05000000000000E+0001 1.86846689895470E+0001 1.15000000000000E+0001 4.85005983815810E-0001 1 16711680 16711935 TRUE Nombre de lentiles minces divergentes: 0 Nombre de rayons: 0 Nombre de sources ponctuelles: 0 Nombre d'ondes planes: 1 Numero 1 10 9.04433497536946E+0000 6.00000000000000E+0000 4.99507389162562E+0000 6.00000000000000E+0000 4.99507389162562E+0000 1.59018748541827E+0001 255 1 10 FALSE Nombre d'ecrans: 2 Numero 1 1.70000000000000E+0001 1.60000000000000E+0001 5.00000000000000E+0000 1.60000000000000E+0001 2 0 Numero 2 1.70000000000000E+0001 6.00000000000000E+0000 5.00000000000000E+0000 6.00000000000000E+0000 2 0 Nombre de diaphragmes: 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 0 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 0 Nombre de lentilles epaisses: 0 Nombre d'angles: 0 Nombre de traits: 0 Nombre d'oeils: 0 Nombre de mesures de distances 0 Nombre de groupes: 0 optgeo-2.21/exemples/Exemples_Classiques/Telescopes/telescope_newton.txt0000750000175000017500000000106511446465056027170 0ustar georgeskgeorgeskTélescope de type Newton Le miroir primaire est sphérique, de focale 400mm Le miroir secondaire est plan est à 45° de l'axe du télescope. L'oculaire a son plan focal objet tangent au tube du télescope. La distance entre le foyer du miroir primaire et le centre du miroir secondaire est égale au rayon du tube du télescope. On envoie un faisceau de lumière parallèle faisant un angle petit avec l'axe du télescope. En passant en zoom x10, on vérifie que les rayons émergents sont parallèles entre eux: l'oeil peut observer sans accomoder. optgeo-2.21/exemples/Exemples_Classiques/dispersion_prisme.opt0000750000175000017500000000354211446465056025230 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 200 0.0000000000000000E+0000 1.4360000000000000E+0003 0.0000000000000000E+0000 7.7600000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE FALSE FALSE 7.0000000000000000E+0001 3.0000000000000000E+0001 OPTIONS NORMALES TRUE FALSE 5.0000000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 0 Nombre de miroirs concaves paraxiaux: 0 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 1 Numero 1 2.3000000000000000E+0002 3.0000000000000000E+0002 2.3000000000000000E+0002 5.0000000000000000E+0002 1.5000000000000000E+0002 1 16711680 16711935 TRUE Nombre de lentiles minces divergentes: 0 Nombre de rayons: 0 Nombre de sources ponctuelles: 1 Numero 1 5 8.0000000000000000E+0001 4.0000000000000000E+0002 2.1400000000000000E+0002 3.2000000000000000E+0002 2.2500000000000000E+0002 4.7900000000000000E+0002 0 1 10 FALSE FALSE Nombre maximal de segments par rayon: 500 Nombre d'ondes planes: 0 Nombre d'ecrans: 0 Nombre de diaphragmes: 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 0 Nombre de prismes: 1 Numero 1 5.5450873203456729E+0002 3.0781966960124415E+0002 5.5413777114013592E+0002 6.1202223202790079E+0002 4.1765287359444574E+0002 1.5555127284082055E+0002 1.4000000000000000E+0000 1.8000000000000000E+0000 1.6000000000000000E+0000 0 16776960 2 2 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 0 Nombre de lentilles epaisses: 0 Nombre d'angles: 0 Nombre de traits: 0 Nombre d'oeils: 0 Nombre de mesures de distances 0 Nombre de groupes: 0 couleur fond simulation 16777215 empennage position 500 taille 5 optgeo-2.21/exemples/Exemples_Classiques/cassegrain.opt0000750000175000017500000000455511446465056023616 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 200 0.0000000000000000E+0000 1.0200000000000000E+0003 0.0000000000000000E+0000 6.0900000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE FALSE FALSE 5.0000000000000000E+0001 5.0000000000000000E+0001 OPTIONS NORMALES FALSE FALSE 5.0000000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 0 Nombre de miroirs concaves paraxiaux: 0 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 1 Numero 1 7.0000000000000000E+0002 3.3000000000000000E+0002 7.0000000000000000E+0002 3.7000000000000000E+0002 1.6399999999999999E+0001 1 16711680 16711935 TRUE Nombre de lentiles minces divergentes: 0 Nombre de rayons: 0 Nombre de sources ponctuelles: 0 Nombre d'ondes planes: 1 Numero 1 6 1.5000000000000000E+0002 2.0000000000000000E+0002 5.0000000000000000E+0001 2.0000000000000000E+0002 5.0000000000000000E+0001 5.0000000000000000E+0002 255 1 10 FALSE Nombre maximal de segments par rayon: 500 Nombre d'ecrans: 0 Nombre de diaphragmes: 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 0 Nombre de prismes: 0 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 3 Numero 1 5.5000000000000000E+0002 3.5000000000000000E+0002 1.0000000000000000E+0000 2.5000000000000000E+0002 0.0000000000000000E+0000 2.0000000000000000E-0001 1.5000000000000000E+0000 0 16711680 TRUE TRUE TRUE Numero 2 5.5000000000000000E+0002 3.5000000000000000E+0002 1.0000000000000000E+0000 2.5000000000000000E+0002 0.0000000000000000E+0000 4.7999999999999998E+0000 6.0999999999999996E+0000 0 16711680 TRUE TRUE TRUE Numero 3 5.5000000000000000E+0002 3.5000000000000000E+0002 1.2000000000000000E+0000 2.4519566173310100E+0001 0.0000000000000000E+0000 4.9831853071795864E+0000 7.5831853071795860E+0000 0 16711680 TRUE TRUE FALSE Nombre de textes: 0 Nombre de lentilles epaisses: 0 Nombre d'angles: 0 Nombre de traits: 0 Nombre d'oeils: 1 Numero 1 7.4957043879907621E+0002 3.5001804123711338E+0002 7.2004618937644341E+0002 3.4923324742268039E+0002 1 32768 Nombre de mesures de distances 0 Nombre de groupes: 0 couleur fond simulation 16777215 empennage position 500 taille 5 optgeo-2.21/exemples/Exemples_Classiques/autocollimation.opt0000750000175000017500000000332511446465055024673 0ustar georgeskgeorgeskNE PAS MODIFIER CE FICHIER VERSION 1 0.00000000000000E+0000 1.02000000000000E+0003 0.00000000000000E+0000 6.09000000000000E+0002 TRUE UNITE mm OPTIONS GRILLE FALSE FALSE 5.00000000000000E+0001 5.00000000000000E+0001 OPTIONS NORMALES TRUE FALSE 5.00000000000000E-0002 0 1 0 OPTIONS SEGMENTS FANTOMES FALSE NOMBRE POINTS TRACE SURFACE ONDE 20 Nombre de miroirs plans: 1 Numero 1 6.26500000000000E+0002 1.99500000000000E+0002 6.68943089430894E+0002 4.95761904761905E+0002 1 0 TRUE Nombre de miroirs concaves paraxiaux: 0 Nombre de miroirs convexes paraxiaux: 0 Nombre de miroirs concaves reels: 0 Nombre de miroirs convexes reels: 0 Nombre de lentiles minces convergentes: 1 Numero 1 3.50000000000000E+0002 6.00000000000000E+0002 3.50000000000000E+0002 1.00000000000000E+0002 2.00000000000000E+0002 1 16711680 16711935 TRUE Nombre de lentiles minces divergentes: 0 Nombre de rayons: 0 Nombre de sources ponctuelles: 1 Numero 1 5 1.50000000000000E+0002 3.50000000000000E+0002 3.00000000000000E+0002 3.00000000000000E+0002 3.00000000000000E+0002 4.00000000000000E+0002 255 1 10 FALSE FALSE Nombre d'ondes planes: 0 Nombre d'ecrans: 0 Nombre de diaphragmes: 1 Numero 1 1.50000000000000E+0002 3.50000000000000E+0002 1.57079632679490E+0000 2.43300945451374E+0001 1.50000000000000E+0002 1 0 Nombre de lames semi reflechissantes: 0 Nombre de polyhedres: 0 Nombre de polycercles: 0 Nombre de spheres: 0 Nombre de miroirs coniques: 0 Nombre de textes: 1 Numero 1 Autocollimation 3.50000000000000E+0002 5.00000000000000E+0001 0 -2147483640 Arial Narrow 14 fsbold no fsunderline no fpDefault Nombre de lentilles epaisses: 0 Nombre d'angles: 0 optgeo-2.21/exemples/Exemples_Classiques/dispersion_prisme.txt0000750000175000017500000000000011446465056025227 0ustar georgeskgeorgeskoptgeo-2.21/exemples/Exemples_Classiques/autocollimation.txt0000750000175000017500000000213111446465055024702 0ustar georgeskgeorgesk Mesure de distance focale par autocollimation Théorie Le point source (centre du diaphragme) est placé au foyer objet de la lentille. Dans ces conditions, l'image finale (par, successivement: traversée de la lentille; réflexion sur le miroir; traversée de la lentille) est située dans le plan du diaphragme. Et ce, quelles que soient l'inclinaison et la position du miroir. Si la distance entre le point source et la lentille est différente de la focale, alors l'image finale n'est pas, en général, dans le plan du diaphragme (si elle l'est par hasard, elle ne l'est plus quand on translate le miroir). Manipulations Cliquer sur le bouton "Déplacer", puis observer ce qui se passe en translatant le miroir (curseur au dessus du centre du miroir, clic simple pour le sélectionner, déplacement pour effectuer la translation, clic simple final pour re poser le miroir, clic sur le bouton "Fin dép" pour sortir du mode déplacement). Puis en modifiant l'inclinaison du miroir (même méthode que pour la translation, mais en utilisant l'une ou l'autre des extrémités du miroir). optgeo-2.21/unit6.pas0000750000175000017500000001645312247333133014713 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit6; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin, ExtCtrls,unit222,Unit8,ColorBox, LResources,LCLType, UnitScaleFont,UChaines; type { Tsaisiepolyhedre } Tsaisiepolyhedre = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Colorgrid1: TColorBox; radiosortant: TRadioGroup; radioentrant: TRadioGroup; GroupBox2: TGroupBox; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; editnrouge: TEdit; editnvert: TEdit; editnbleu: TEdit; ComboBox1: TComboBox; GroupBox3: TGroupBox; StaticText5: TLabel; StaticText6: TLabel; editx: TEdit; edity: TEdit; boutonsup: TBitBtn; GroupBox1: TGroupBox; log1: TLabel; log2: TLabel; StaticText1: TLabel; combomateriaux: TComboBox; procedure BitBtn1Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure combomateriauxChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiepolyhedre: Tsaisiepolyhedre; oldindex:integer; nrouge,nvert,nbleu:extended; tentr,tsort:treflechipolyhedre; implementation procedure Tsaisiepolyhedre.BitBtn1Click(Sender: TObject); begin try strtofloat(editx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce2), pchar(rsattention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[combobox1.ItemIndex+1].ax:=strtofloat(editx.text); try strtofloat(edity.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce3), pchar(rsattention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[combobox1.ItemIndex+1].ay:=strtofloat(edity.text); case radioentrant.ItemIndex of 0: tentr:=toujoursreflechi; 1: tentr:=jamaisreflechi; 2: tentr:=reflechisirefracte; 3: tentr:=reflechisipasrefracte; end; case radiosortant.ItemIndex of 0: tsort:=toujoursreflechi; 1: tsort:=jamaisreflechi; 2: tsort:=reflechisirefracte; 3: tsort:=reflechisipasrefracte; end; try nrouge:=strtofloat(editnrouge.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce4), pchar(rsattention),mb_ok); exit; end; end; try nvert:=strtofloat(editnvert.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce5), pchar(rsattention),mb_ok); exit; end; end; try nbleu:=strtofloat(editnbleu.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce6), pchar(rsattention),mb_ok); exit; end; end; ReTaillePpolyhedre(Listepolyhedre,nombrepolyhedre,nombrepolyhedre+1); inc(nombrepolyhedre); if not (Listepolyhedre[-1+nombrepolyhedre].create(nbpoly,ttpoly,nrouge,nbleu,nvert,clblack,colorgrid1.selected, tentr,tsort)) then begin ReTaillePpolyhedre(Listepolyhedre,nombrepolyhedre,nombrepolyhedre-1); dec(nombrepolyhedre); application.messagebox(pchar(rsPointsAberra), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisiepolyhedre.ComboBox1Change(Sender: TObject); begin try strtofloat(editx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce2), pchar(rsattention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[oldindex+1].ax:=strtofloat(editx.text); try strtofloat(edity.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce3), pchar(rsattention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[oldindex+1].ay:=strtofloat(edity.text); editx.text:=floattostr(ttpoly[ComboBox1.itemindex+1].ax); edity.text:=floattostr(ttpoly[ComboBox1.itemindex+1].ay); oldindex:=ComboBox1.itemindex; end; procedure Tsaisiepolyhedre.combomateriauxChange(Sender: TObject); begin if combomateriaux.itemindex=0 then exit; editnrouge.text:=listenrouge.strings[combomateriaux.itemindex]; editnvert.text:=listenvert.strings[combomateriaux.itemindex]; editnbleu.text:=listenbleu.strings[combomateriaux.itemindex]; end; procedure Tsaisiepolyhedre.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeP3; CAPTION :=rsPropriTSDeCe3; GROUPBOX1.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.GROUPBOX1.CAPTION'; :=rsCouleurLCran7; GROUPBOX2.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.GROUPBOX2.CAPTION'; :=rsIndiceDeRFra; GROUPBOX3.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.GROUPBOX3.CAPTION'; :=rsCoordonnEsDe2; LOG1.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.LOG2.CAPTION'; :=rsLog2; RADIOENTRANT.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.RADIOENTRANT.CAPTION'; :=rsRayonRFlChiS; RADIOSORTANT.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.RADIOSORTANT.CAPTION'; :=rsRayonRFlChiS2; STATICTEXT1.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.STATICTEXT1.CAPTION'; :=rsMatRiau; STATICTEXT2.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.STATICTEXT2.CAPTION'; :=rsPourLeRouge; STATICTEXT3.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.STATICTEXT3.CAPTION'; :=rsPourLeVert; STATICTEXT4.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.STATICTEXT4.CAPTION'; :=rsPourLeBleu; STATICTEXT5.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.STATICTEXT5.CAPTION'; :=rsX; STATICTEXT6.CAPTION // msgctxt ';TSAISIEPOLYHEDRE.STATICTEXT6.CAPTION'; :=rsY; radiosortant.Items[0]:=rsToujours; radiosortant.Items[1]:=rsJamais; radiosortant.Items[2]:=rsSeulementSiL; radiosortant.Items[3]:=rsSeulementSiL8; radioentrant.Items[0]:=rsToujours; radioentrant.Items[1]:=rsJamais; radioentrant.Items[2]:=rsSeulementSiL; radioentrant.Items[3]:=rsSeulementSiL9; end; procedure Tsaisiepolyhedre.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit6.lrs} end. optgeo-2.21/unitgpl.pas0000750000175000017500000000350212247333133015317 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unitgpl; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, LResources,UnitScaleFont; type { TFormgpl } TFormgpl = class(TForm) Memogpl: TMemo; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var Formgpl: TFormgpl; implementation { TFormgpl } procedure TFormgpl.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure TFormgpl.FormCreate(Sender: TObject); begin encreation:=true; caption:='License GPL'; end; initialization {$i Unitgpl.lrs} end. optgeo-2.21/ray1.lfm0000750000175000017500000025575512247333133014527 0ustar georgeskgeorgeskobject Form1: TForm1 Left = 776 Height = 452 Top = 207 Width = 1021 ActiveControl = cochenormale Caption = 'OptGeo' ClientHeight = 423 ClientWidth = 1021 Font.Name = 'Default' Menu = MainMenu1 OnActivate = FormActivate OnCloseQuery = FormCloseQuery OnCreate = FormCreate OnDeactivate = FormDeactivate OnDestroy = FormDestroy OnKeyPress = FormKeyPress OnResize = FormResize OnShow = FormShow LCLVersion = '1.0.10.0' object StatusBar1: TStatusBar Left = 0 Height = 28 Top = 395 Width = 1021 Panels = < item Text = 'X=' Width = 120 end item Text = 'Y=' Width = 120 end item Width = 350 end item Width = 50 end> SimplePanel = False end object ToolBar1: TToolBar Left = 0 Height = 33 Top = 0 Width = 1021 ButtonHeight = 25 ButtonWidth = 25 ParentFont = False TabOrder = 1 object StaticText2: TLabel Left = 1 Height = 21 Top = 2 Width = 55 Caption = 'Miroirs:' Color = clBtnFace Font.Color = clBlue Font.Style = [fsBold] ParentColor = False ParentFont = False Transparent = False end object boutonmiroirplan: TSpeedButton Left = 56 Height = 25 Hint = 'Ajouter un miroir plan' Top = 2 Width = 27 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF0FFFFFFFFF FFFFFFFF0000FF0FFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFFF00000F0F FFFFFFFFFFFFFFFF0000F00FFFFFFFFFFFFFFFFF0000FF0FF0FFFFFFFFFFFFFF 000000FFF0FFFFFFFFFFFFFF0000000FF0F0FFFFFFFFFFFF0000000000F0FFFF FFFF00000000F00000F0F0FFFFFF0FFF0000FFF00000F0FFFFFFF0FF0000FFFF 0000F0F0FFFFFF0F0000FFFFF00000F0FFFFFFF00000FFFFFF000000F0FFFFF0 0000FFFFFFFF0000F0FF0FF00000FFFFFFFFF00000F0F00F0000FFFFFFFFFF00 00F0FFFF0000FFFFFFFFFFF00000FFFF0000FFFFFFFFFFFF00000FFF0000FFFF FFFFFFFFFF000FFF0000 } NumGlyphs = 0 OnClick = boutonmiroirplanClick ShowHint = True ParentShowHint = False end object boutonlsr: TSpeedButton Left = 83 Height = 25 Hint = 'Ajouter une lame semi-réfléchissante' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFF0FFF FFFFFFFF0000FF00FFFF0FFFFFFFFFFF0000FF000FFF0FFFFFFFFFFF0000FFF0 00F00FFFFFFFFFFF0000FFFF000F0FFFFFFFFFFF0000FFFFF000FFFFFFFFFFFF 0000FFFFFF000FFFFFFFFFFF0000FFFFFFF000FFFFFFFFFF0000FFFFFFFF000F FFFFFFFF0000FFFFFFFFF000FFFFFFFF000000F00F00F0000F00F00F0000FFFF FFFFFFF000FFFFFF0000FFFFFFFFF0FF000FFFFF0000FFFFFFFFF0FFF000FFFF 0000FFFFFFFFFFFFFF000FFF0000FFFFFFFFF0FFFFF000FF0000FFFFFFFFF0FF FF00000F0000FFFFFFFFFFFFFF0FF00F0000FFFFFFFFF0FFFFF0FFFF0000FFFF FFFFF0FFFF00FFFF0000 } NumGlyphs = 0 OnClick = boutonlsrClick ShowHint = True ParentShowHint = False end object boutonmscopa: TSpeedButton Left = 108 Height = 25 Hint = 'Ajouter un miroir sphérique concave paraxial' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFF0F00F FFFFFFFF0000FFFFFFF0F000FFFFFF0F0000FFFFFFF0FF0000FFF0FF0000FFFF FF00FFF0000F0FFF0000FFFFFFF0FFFFF000FF0F0000FFFFFFFFFFFFF00FF0FF 0000FFFFFFFFFFFFF00F0FFF0000F0FFFFFFFFFFF000FF0F0000F0FFFFFFFFFF F00FF0FF0000F0FF00F00F00F00F0FFF0000F000FFFFFFFFF000FF0F0000F0FF FFFFFFFFF00FF0FF0000F000FFFFFFFFF00F0FFF0000FFFFFFFFFFFFF000FF0F 0000FFFFFFFFFFFFF00FF0FF0000FFFFF00FFFFFF00F0FFF0000FFFFF0FFFFF0 0000FFFF0000FFFFFF0FFF0000FFFFFF0000FFFFF00FF000FFFFFFFF0000FFFF F0FFF00FFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonmscopaClick ShowHint = True ParentShowHint = False end object boutonmscepa: TSpeedButton Left = 133 Height = 25 Hint = 'Ajouter un miroir sphérique convexe paraxial' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFF00FFF0FFF FFFFFFFF0000FF000FFF0FFFFFFFFFFF0000F000FFFF0FFFFFFFFFFF0000000F FFF00FFFFFFFFFFF000000FF0FFF0FFFFFFFFFFF000000F0FFFFFFFFFFFFFFFF 0000000FFFFFFFFFFFFFFFFF000000FF0FFFFFFFFFFFFFFF000000F0FFFFFFFF FFFFFFFF00000000000F00F0000F00FF000000FF0FFFFFFFFFF0FFFF000000F0 FFFFFFFFFFF0FFFF0000000FFFFFFFFFFFF000FF000000FF0FFFFFFFFFF0FFFF 000000F0FFFFFFFFFFF000FF0000000FFF00FFFFFFFFFFFF0000000FFF0FFFFF FFFFFFFF0000F000FFF0FFFFFFFFFFFF0000FF000F00FFFFFFFFFFFF0000FFF0 0F0FFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonmscepaClick ShowHint = True ParentShowHint = False end object boutonmscore: TSpeedButton Left = 158 Height = 25 Hint = 'Ajouter un miroir sphérique concave réel' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFF0F F00FF0F00000FFFFFFFFFF0F00FF0F0F0000FFFFFFFFFF0F0000F0FF0000FFFF FFFFF00FFF000FFF0000FFFFFFFFFF0FFFFF0FFF0000FFFFFFFFFFFFFFFF00F0 0000FFFFFFFFFFFFFFFFF00F0000FFFFFFFFFFFFFFFFF00F0000FFFFFFFFFFFF FFFFFF0F0000F00F0000F00F0000FF000000FF00FFFFFFFFFFFFFF000000F0FF FFFFFFFFFFFFFF000000F0FFFFFFFFFFFFFFF00F0000FF00FFFFFFFFFFFFF00F 0000FFFFFFFFFFFFFFFF000F0000FFFFFFFFF00FFFFF00F00000FFFFFFFFF0FF FF0000FF0000FFFFFFFFFF0F0000FF0F0000FFFFFFFFF00F00FF0FF00000FFFF FFFFF0FFFF0FF0FF0000 } NumGlyphs = 0 OnClick = boutonmscoreClick ShowHint = True ParentShowHint = False end object boutonmscere: TSpeedButton Left = 183 Height = 25 Hint = 'Ajouter un miroir sphérique convexe réel' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFF0F FFFFFFFF0000FFFFFFFFFF0F00FFFFFF0000FFFFFFFFFF0F0000FFFF0000FFFF FFFFF000FF000FFF0000FFFFFFFFFF0FF0FF0FFF0000FFFFFFFFFFFF0FFF00FF 0000FFFFFFFFFFFFFFF0F00F0000FFFFFFFFFFFFFF0FF00F0000FFFFFFFFFFFF FFFF0F0F0000F00F0000F00F0000FF000000FF00FFFFFFFFFFF0FF000000F0FF FFFFFFFFFFFF0F000000F0FFFFFFFFFFFF0FF00F0000FF00FFFFFFFFFFF0F00F 0000FFFFFFFFFFFF0FFF000F0000FFFFFFFFF00FF0FF00FF0000FFFFFFFFF0F0 FF0000FF0000FFFFFFFFFF0F0000FFFF0000FFFFFFFFF00F00FFFFFF0000FFFF FFFFF0FFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonmscereClick ShowHint = True ParentShowHint = False end object boutonconiqueconcave: TSpeedButton Left = 208 Height = 25 Hint = 'Ajouter un miroir parabolique (ou elliptique, hyperbolique) concave' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF0FFFF0FFFF FFFFFFFF0000FF0FFF0FFF0FFFFFFFFF0000FF0F00FFF0FFFFFFFFFF0000F00F 00000FFFF0FFFFFF0000FF0FFF00000F0FFFFFFF0000FFFFFFFF0000FFF0FFFF 0000FFFFFFFFF0000F0FFFFF0000FFFFFFFFFFF000FFFFFF0000FFFFFF0FFFFF 00FFF0000000FFFFFF0FFFFFF00FFFF00000FFFFFF000FFFFF0FF00F0000FFFF FF0FFFFFFF000FFF0000FFFFFF000FFFFF00F00F0000FFFFFFFFFFFFFF00FFFF 0000FFFFFFFFFFFFF00F0FFF0000F00FFFFFFFF0000FF0FF0000F0FFFFFF0000 00FFFFFF0000FF0FF0000000FF0FFFFF0000F00F0000FFF0FFF0FFFF0000F0FF FFFF0FFF0FFFFFFF0000 } NumGlyphs = 0 OnClick = boutonconiqueconcaveClick ShowHint = True ParentShowHint = False end object boutonconiqueconvexe: TSpeedButton Left = 233 Height = 25 Hint = 'Ajouter un miroir parabolique (ou elliptique, hyperbolique) convexe' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF0FFFFFFFFF FFFFFFFF0000FF0FFFFFFFFFFFFFFFFF0000FF0F00FFFFFFFFFFFFFF0000F00F 00000FFFFFFFFFFF0000FF0FFF00000FFFFFFFFF0000FFFFF0FF0000FFFFFFFF 0000FFFF0FF0F0000FFFFFFF0000FFFFFFFFFF0000FFFFFF0000FFFFFF0FF0FF 00FFF0000000FFFFFF0FFFF0F00FFFF00000FFFFFF000F0FFF0FF00F0000FFFF FF0FFFFFFF000FFF0000FFFFFF000FF0FF00F00F0000FFFFFFFFFFFF0F00FFFF 0000FFFFFFF0FF0FF00FFFFF0000F00FF0FF0FF0000FFFFF0000F0FFFF0F0000 00FFFFFF0000FF0FF000000FFFFFFFFF0000F00F0000FFFFFFFFFFFF0000F0FF FFFFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonconiqueconvexeClick ShowHint = True ParentShowHint = False end object ToolButton2: TToolButton Left = 258 Top = 2 Width = 10 Caption = 'ToolButton2' ImageIndex = 3 Style = tbsSeparator end object StaticText5: TLabel Left = 268 Height = 21 Top = 2 Width = 50 Caption = 'Ecrans:' Font.Color = clPurple Font.Style = [fsBold] ParentColor = False ParentFont = False end object boutonecran: TSpeedButton Left = 318 Height = 25 Hint = 'Ajouter un écran' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFF0FFFF FFFFFFFF0000FFFFFFF0FFFFFFFFFFFF0000FFFFFFF0FFFFFFFFFFFF0000F00F FF00FFFFFFFFFFFF0000F000FFF0FFFFFFFFFFFF0000FF000FFFFFFFFFFFFFFF 0000FFF000FFFFFFFFFFFFFF0000FFFF000FFFFFFFFFFFFF0000FFFFF000FFFF FFFFFFFF0000FFFFFF000FFFFFFFFFFF0000FFFFFFF000FFFFFFFFFF0000FFFF FFFF000FFFFF00FF0000FFFFFFFFF000FFFF0FFF0000FFFFFFFFFF000FFFF0FF 0000FFFFFFFFFFF000FF00FF0000FFFFFFFFFFFF000F0FFF0000FFFFFFFFFFFF F000FFFF0000FFFFFFFFFFFFFF000FFF0000FFFFFFFFFFFFFFF00FFF0000FFFF FFFFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonecranClick ShowHint = True ParentShowHint = False end object boutondia: TSpeedButton Left = 343 Height = 25 Hint = 'Ajouter un diaphragme à iris' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFF00000 0FFFFFFF0000FFFFF00FFFFFF00FFFFF0000FFF000FFFFFFFFF00FFF0000FF0F FF000FFFFFF0F0FF0000FF0FFFFF0FFFFFF0F0FF0000F0FFFFFFF0FFFFF0FF0F 0000F0FFFFFF0000FFFF0F0F00000FFFFFF0FFFF0FFF0FF000000FFFFF0FFFFF F0FF0FF000000FFFF00FFFFFF0F0FFF000000FFF0F0FFFFFF00FFFF000000FF0 FF0FFFFFF0FFFFF000000FF0FFF0FFFF0FFFFFF00000F0F0FFFF0000FFFFFF0F 0000F0FF0FFFF0FFFFFFFF0F0000FF0F0FFFFF0FFFFFF0FF0000FF0F0FFFFFF0 00FFF0FF0000FFF00FFFFFFFFF000FFF0000FFFFF00FFFFFF00FFFFF0000FFFF FFF000000FFFFFFF0000 } NumGlyphs = 0 OnClick = boutondiaClick ShowHint = True ParentShowHint = False end object ToolButton6: TToolButton Left = 368 Top = 2 Width = 10 Caption = 'ToolButton6' ImageIndex = 4 Style = tbsSeparator end object StaticText3: TLabel Left = 378 Height = 21 Top = 2 Width = 59 Caption = 'Sources:' Font.Color = clRed Font.Style = [fsBold] ParentColor = False ParentFont = False end object boutonrayon: TSpeedButton Left = 437 Height = 25 Hint = 'Ajouter un rayon' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF0FFFFFFFFF FFF0000F0000FF0FFFFFFFFFFFF0FFFF0000FF0FFFFFFFFFFFFF0FFF0000FF0F FFFFFFFFFFFFF0FF0000FF0FFFFFFFFFFFFFFF0F00000F0FFFFFFFFFFFFFFF0F 0000F00FFFFFFFFFFFF0FF0F0000FF0FFFFFFFFFFFFF00FF0000FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFF0FFFFFFFFFFFF0000FFFFFFFF0FFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFF 0000000000000000000000000000000000000000000000000000FFFFFFFFF0FF FFFFFFFF0000FFFFFFFF0FFFFFFFFFFF0000FFFFFFF0FFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonrayonClick ShowHint = True ParentShowHint = False end object boutonsourceponctuelle: TSpeedButton Left = 462 Height = 25 Hint = 'Ajouter un objet ponctuel réel' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF F00FFF0F0000FFFFFFFFFFFF000FFF0F0000FFFFFFFF000000FFFF0F0000FFFF FFFFFF000FFFF00F0000FFFFFFFFF0000FFFFF0F0000FFFFFFFF000F0FFFFFFF 0000FFFFFFF000FF0FFFFFFF0000FFFFFF000FFFFFFFFFFF0000F000F000FFFF 0FFFFFFF00000FF0F00FFFFFFFFFFFFF0000F00FF00FFFFFFFFFFFFF00000FF0 F00FFFFFFFFFFFFF0000000FF000FFFFFFFFFFFF0000FFFFFF000FFFFFFFFFFF 0000FFFFFFF0000FF0FFFFFF0000FFFFFFFF0000F0FF00FF0000FFFFFFFFFF00 00FF0FFF0000FFFFFFFFFFF000FFF0FF0000FFFFFFFFF000000F00FF0000FFFF FFFFFFFFF00F0FFF0000 } NumGlyphs = 0 OnClick = boutonsourceponctuelleClick ShowHint = True ParentShowHint = False end object boutonspv: TSpeedButton Left = 487 Height = 25 Hint = 'Ajouter un objet ponctuel virtuel' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFF00FFFFFF FFFFFFFF0000FFFF0FFFFFFFFFFFFF000000FFFFF0FFFFFFFFFFF00F00000FFF 00FFFFFFFFFF00FF0000000F0FFFFFFFFFF00FFF0000F0000FFFFFFF0000FFFF 0000FFF0000FFFFFF000FFFF0000FFFFF0000FFF00F0FFFF0000FFFFFFF000F0 0FF0FFFF0000FFFFFFFFF000FFFFFFFF0000FFFFFFFFF00000FFF0FF0000FF0F FFFF00FFF000F0FF0000FF0FFFF00FFFFFF000FF0000FF0FFF00FF000FFFF000 0000F00FF00FF0FF0F0000FF0000FF0F00FFFF00FFFFFFFF0000FFF00FFFF0FF 0FFFFFFF0000FF00FFFFF000FFFFFFFF0000F00FFFFFFFFFFFFFFFFF000000FF FFFFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonspvClick ShowHint = True ParentShowHint = False end object boutonondeplane: TSpeedButton Left = 512 Height = 25 Hint = 'Ajouter une onde plane' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFF00F0000FFFFFFFFFFFFFFFFF0F00000FF0FFFFFF0FFFFFFF0F00000FF0F FFFFFF0FFFFFF0F00000FF0FFFFFFFF0FFFFF00F0000F00F0000000000000000 0000FF0F00000000000000000000FFFFFFFFFFF0FFFFFFFF0000FFFFFFFFFF0F FFFFFFFF0000FFFFFFFFF0FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0FFFFFFFFFFF000000FFFFFFF0FFFFFFFFFF 00000FFFFFFFFF0FFFFFFFFF0000F0FF0000000000000000000000FF00000000 0000000000000FFFFFFFFF0FFFFFFFFF0000FFFFFFFFF0FFFFFFFFFF0000FFFF FFFF0FFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonondeplaneClick ShowHint = True ParentShowHint = False end object ToolButton4: TToolButton Left = 537 Top = 2 Width = 10 Caption = 'ToolButton4' ImageIndex = 0 Style = tbsSeparator end object StaticText4: TLabel Left = 547 Height = 21 Top = 2 Width = 65 Caption = 'Dioptres:' Font.Color = clGreen Font.Style = [fsBold] ParentColor = False ParentFont = False end object boutonlmc: TSpeedButton Left = 612 Height = 25 Hint = 'Ajouter une lentille mince convergente paraxiale' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFF00FF FFF0FFFF0000FFFFFFF0000FFFF0FFFF0000FFFFFF0F00F0FFF0FFFF0000FFFF F0FF00FF0F00FFFF0000FFFFFFFF00FFFFF0FFFF0000FFFFFFFF00FFFFFFFFFF 0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FF FFFFFFFF0000000F00FF00FF000F00F00000FFFFFFFF00FFFFFFFFFF00000FFF FFFF00FFFFFFF0FF00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF000 00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF0000000FFFFF0FF00FF 000FFFFF0000FFFFFF0F00F0F0FFFFFF0000FFFFFFF0000FFF0FFFFF0000FFFF FFFF00FFF00FFFFF0000 } NumGlyphs = 0 OnClick = boutonlmcClick ShowHint = True ParentShowHint = False end object boutonlmd: TSpeedButton Left = 637 Height = 25 Hint = 'Ajouter une lentille mince divergente paraxiale' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFF0FFFFFF 0FF0FFFF0000FFFFFF0FFFF0FFF0FFFF0000FFFFFFF0FF0FFFF0FFFF0000FFFF FFFF00FFFF00FFFF0000FFFFFFFF00FFFFF0FFFF0000FFFFFFFF00FFFFFFFFFF 0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FF FFFFFFFF0000000F00FF00FF000F00F00000FFFFFFFF00FFFFFFFFFF00000FFF FFFF00FFFFFFF0FF00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF000 00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF0000000FFFFFFFF00FF F00FFFFF0000FFFFFFF0FF0FF0FFFFFF0000FFFFFF0FFFF0FF0FFFFF0000FFFF F0FFFFFF000FFFFF0000 } NumGlyphs = 0 OnClick = boutonlmdClick ShowHint = True ParentShowHint = False end object boutonlec: TSpeedButton Left = 672 Height = 25 Hint = 'Ajouter une lentille épaisse' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFF0FFFF0000FFFFFFF0000FFFF0FFFF0000FFFFFF00FF00FFF0FFFF0000FFFF F00FFFF000F0FFFF0000FFFF00FFFFFF0F00FFFF0000FFFF00FFFFFF00F0FFFF 0000FFFF00FFFFFF00FFFFFF0000FFF00FFFFFFFF00FFFFF0000FFF00FFFFFFF F00FFFFF0000FFF00FFFFFFFF00FFFFF000000000F00F000F0000F000000FFF0 0FFFFFFFF00FFFFF0000FFF00FFFFFFFF00FFFFF0000FFF00FFFFFFFF0FFFFFF 0000FFFF00FFFFFF00000FFF0000FFFF00FFFFFF00F0FFFF0000FFFF00FFFFFF 00F0FFFF0000FFFFF00FFFF00FFF0FFF0000FFFFFF00FF00FF000FFF0000FFFF FFF0000FFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonlecClick ShowHint = True ParentShowHint = False end object boutonpoly: TSpeedButton Left = 697 Height = 25 Hint = 'Ajouter un polygône réfractant' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFF00FFFFF FFFFF0FF0000FFFFF0FFFFFFFFFFFF0F0000FFFFFF0FF0000FFFF0FF0000FFFF F00F0000000FFF0F0000FF0FF0F000FF000000FF0000FF0FFF000FFFFF000FFF 0000FF0FF000FFFFFFF00FFF0000F00FF00FFFFFFFF00FFF0000FF0F00FFFFFF FFF00FFF0000FFF000FFFFFFFFF00FFF0000FF000FFFFFFFFFF00FFF0000F000 FFFFFFFFFFF00FFF0000F00FFFFFFFFFFFF00FFF0000F000FFFFFFFFFFF00FFF 0000FF000FFFFFFFFFF00FFF0000F0F000FFFFFFFFF00FFF0000FF0F000FFFFF FFF00FF00000F0FFF0000000000000000000F0FFFF000000000000F00000F00F FFFFFFFFFFFFFF000000 } NumGlyphs = 0 OnClick = boutonpolyClick ShowHint = True ParentShowHint = False end object boutonprisme: TSpeedButton Left = 722 Height = 25 Hint = 'Ajouter un prisme isocéle' Top = 2 Width = 25 Glyph.Data = { 76060000424D7606000000000000360000002800000014000000140000000100 2000000000004006000064000000640000000000000000000000000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00000000FF000000FFFFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FF000000FF000000FFFFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 } NumGlyphs = 0 OnClick = boutonprismeClick ShowHint = True ParentShowHint = False end object boutonsphere: TSpeedButton Left = 747 Height = 25 Hint = 'Ajouter une sphère réfractante' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFF0000000 000FFFFF0000FFFF000000000000FFFF0000FFF000FFFFFFFF000FFF0000FF00 0FFFFFFFFFF000FF0000F000FFFFFF00FFFF000F0000F00FFFFFF0FFFFFFF00F 000000FFFFFFF0FFFFFFFF00000000FFFFFFFF00FFFFFF00000000FFFFFFFFFF FFFFFF00000000FFFFFFF00FFFFFFF00000000FFFFFFF00FFFFFFF00000000FF FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF00 0000F00FFFFFFFFFFFFFF00F0000F000FFFFFFFFFFFF000F0000FF000FFFFFFF FFF000FF0000FFF000FFFFFFFF000FFF0000FFFF000000000000FFFF0000FFFF F0000000000FFFFF0000 } NumGlyphs = 0 OnClick = boutonsphereClick ShowHint = True ParentShowHint = False end object boutonpolycercle: TSpeedButton Left = 772 Height = 25 Hint = 'Ajouter une polycercle réfractant' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFF000FFFFF FFFF0FFF0000FFFF0FFFFFFFFFFF0FFF0000FFFFF0FFFFFFFFFF0FFF0000FFFF FF0FFFFFFFF00FFF0000FFFF0F0F000FFFFF0FFF0000FFFF0000FFF00FFFFFFF 0000FFFF00FFFFFFF00FFFFF0000FFF0FFFFFFFFFFF0FFFF0000FF0FFFFFFFFF FFFF0FFF0000FFF0FFFFFFFFFFFF0FFF0000F0FF0FFFFFFFFFFF0FFF00000F0F F0FFFFFFFFFF0FFF0000FF0FF0FFFFFFFFFF0FFF0000F0FFF0FFFFFFFFFF0FFF 0000FF0FF0FFFFFFFFFF0FFF000000FF0FFFFFFFFFFF0FFF0000FFF0FFFFFFFF FFFF0FFF0000FF0FFFFF00FFFFF0FFFF0000FFF0FFF0FF0FFF0FFFFF0000FFFF 000FFFF000FFFFFF0000 } NumGlyphs = 0 OnClick = boutonpolycercleClick ShowHint = True ParentShowHint = False end object ToolButton5: TToolButton Left = 662 Top = 2 Width = 10 Caption = 'ToolButton5' ImageIndex = 1 Style = tbsSeparator end end object ToolBar2: TToolBar Left = 0 Height = 29 Top = 33 Width = 1021 ButtonHeight = 25 ButtonWidth = 25 TabOrder = 2 object StaticText6: TLabel Left = 1 Height = 21 Top = 2 Width = 49 Caption = 'Divers:' Font.Color = clMaroon Font.Style = [fsBold] ParentColor = False ParentFont = False end object boutondistance: TSpeedButton Left = 50 Height = 25 Hint = 'Mesurer la distance entre deux points' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FF000FFF0FF00FF00F0F0000FF0F F0FF0F0FF0F0FFFF0000FF0FFF0F0FFF0FF0FFFF0000FF0FFF0F0FF0FFF0FFFF 0000FF0FFF0F0F0FF0F0FFFF0000FF0FFF0F0F000F000FFF0000FF0FF0FFFFFF FFF0FFFF0000FF000FFF0FFFFFF0FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF00000000000000000000000000000FF0FF0FF0FF0FF0FFF0 00000FF0FF0FF0FF0FF0FFF000000FFFFF0FFFFF0FFFFFF000000FFFFFFFFFFF FFFFFFF000000FFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutondistanceClick ShowHint = True ParentShowHint = False end object boutonangle: TSpeedButton Left = 75 Height = 25 Hint = 'Mesurer un angle' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFF000F000000FFFFFFFFFFFFF00F00000000FFFF FFFFFFFFF00FF00F0000FF00FFFFFFFFF00FF00F0000FF0F00FFFFFFF00F0000 0000FF0FFF00FFFFFF000F000000FFF0FFF000FFFFFFFFFF0000FFF0FFF0FF00 0FFFFFFF0000FFF0FF0FFFFFF00FFFFF0000FFF000FFFFFFFFF00FFF0000FFF0 FFFFFFFFFFFFF00F0000FFFF0FFFFFFFFFFFFFFF0000FFFF0FFFFFFFFFFFFFFF 0000FFFF0FFFFFFFFFFFFFFF0000FFFF0FFFFFFFFFFFFFFF0000FFFF0FFFFFFF FFFFFFFF0000FFFFF0FFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFF0000FFFF F0FFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonangleClick ShowHint = True ParentShowHint = False end object boutontexte: TSpeedButton Left = 100 Height = 25 Hint = 'Ajouter un texte sur le dessin' Top = 2 Width = 25 Caption = 'A' NumGlyphs = 0 OnClick = boutontexteClick ShowHint = True ParentShowHint = False end object boutonfleche: TSpeedButton Left = 125 Height = 25 Hint = 'Ajouter un trait, une fléche...' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFFFFF0000FFF0FFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFFF0000F000 FFFFFFFFFFFFFFFF0000F0000FFFFFFFFFFFFFFF00000F0000FFFFFFFFFFFFFF 0000FFF0000FFFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF0000FFFFF0000FFF FFFFFFFF0000FFFFFF0000FFFFFFFFFF0000FFFFFFF0000FFFFFFFFF0000FFFF FFFF0000FFF0FFFF0000FFFFFFFFF0000FF0FFFF0000FFFFFFFFFF0000F0FFFF 0000FFFFFFFFFFF00000FFFF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF F000FFFF0000FFFFFFFFFF000000FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonflecheClick ShowHint = True ParentShowHint = False end object boutonfantome: TSpeedButton Left = 150 Height = 25 Hint = 'Cacher des segments de rayon' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFEEEEE EEEFFFFF0000FFFFFFFEEEEEEEEFFFFF0000FFFFFFFEEEEEEEEFFFFF0000FFFF FFFEEEEEEEEFFFFF0000FFFFFFFEEEEEEEEFFFFF0000FFFFFFFEEEEEEEEFFFFF 0000FEEEEEFEEEEEEEEEEEEE0000FEEEEEEEEEEEEEEEEEEE0000FFFFEEEEE000 0EEEEFFF0000FFFFFFEE0EEEE0EFFFFF0000FFFFFFEEEEEEEEEFFFFF0000FFFF FFEEEEEEEEEFFFFF0000FFFFFEEEEEEEEEEEFFFF0000FFFFFEEEEEEEEEEEFFFF 0000FFFFFE00EEEEE00EFFFF0000FFFFFE00EEEEE00EFFFF0000FFFFFFEEEEEE EEEFFFFF0000FFFFFFFEEEEEEEFFFFFF0000FFFFFFFFEEEEEFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } NumGlyphs = 0 OnClick = boutonfantomeClick ShowHint = True ParentShowHint = False end object SpeedButton1: TSpeedButton Left = 175 Height = 25 Hint = 'Ajouter (ou éditer) le commentaire de la simulation' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000 00000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000FF 00000FFFFFFFFF00000000FFFFFFFFFFFFFFFF00000000FF000000000000FF00 000000FFFFFFFFFFFFFFFF00000000FF000000FFFFFFFF00000000FFFFFFFFFF FFFFFF00000000FF000000000000FF00000000FFFFFFFFFFFFFFFF00000000FF 000000000000FF00000000FFFFFFFFFFFFFFFF00000000FF000000000FFFFF00 000000FFFFFFFFFFFFFFFF00000000FF000000000000FF00000000FFFFFFFFFF FFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000 00000000000000000000 } NumGlyphs = 0 OnClick = SpeedButton1Click ShowHint = True ParentShowHint = False end object boutonoeil: TSpeedButton Left = 200 Height = 25 Hint = 'Ajouter un oeil stylisé' Top = 2 Width = 25 Glyph.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FF0FFFFF0000FFFFFFFFFFFFF0FFFFFF0000FFFFFFFFFFFF0FFFFFFF0000FFFF FFFFFFF0FFFFFFFF0000FFFFFFFFFF0F0FFFFFFF0000FFFFFFFFF0FFF0FFFFFF 0000FFFFFFF00FFFFF0FFFFF0000FFFFF00FFFFFFF0FFFFF0000FFF00FFFFFFF FFF0FFFF0000000FFFFFFFFFF000FFFF0000000FFFFFFFFFF000FFFF0000FFF0 0FFFFFFFFFF0FFFF0000FFFFF00FFFFFFF0FFFFF0000FFFFFFF00FFFFF0FFFFF 0000FFFFFFFFF0FFF0FFFFFF0000FFFFFFFFFF0F0FFFFFFF0000FFFFFFFFFFF0 FFFFFFFF0000FFFFFFFFFFFF0FFFFFFF0000FFFFFFFFFFFFF0FFFFFF0000FFFF FFFFFFFFFF0FFFFF0000 } NumGlyphs = 0 OnClick = boutonoeilClick ShowHint = True ParentShowHint = False end object StaticText7: TLabel Left = 260 Height = 21 Top = 2 Width = 62 Caption = 'Afficher:' Font.Style = [fsBold] ParentColor = False ParentFont = False end object ToolButton1: TToolButton Left = 250 Top = 2 Width = 10 Caption = 'ToolButton1' ImageIndex = 0 Style = tbsSeparator end object ToolButton9: TToolButton Left = 799 Top = 2 Width = 10 Caption = 'ToolButton9' ImageIndex = 1 Style = tbsSeparator end object StaticText1: TLabel Left = 809 Height = 21 Top = 2 Width = 46 Caption = 'Zoom:' Font.Style = [fsBold] ParentColor = False ParentFont = False end object SpeedButton2: TSpeedButton Left = 747 Height = 25 Hint = 'Afficher les coordonnées des segments' Top = 2 Width = 52 Caption = 'Coord.' NumGlyphs = 0 OnClick = SpeedButton2Click ShowHint = True ParentFont = False ParentShowHint = False end object cochenormale: TCheckBox Left = 322 Height = 24 Top = 2 Width = 88 Caption = 'Normales' Checked = True OnClick = cochenormaleClick ParentFont = False State = cbChecked TabOrder = 0 end object cocheangles: TCheckBox Left = 410 Height = 24 Top = 2 Width = 188 Caption = 'Angles d''incid. et de réfr.' OnChange = cocheanglesChange OnClick = cocheanglesClick ParentFont = False TabOrder = 1 end object cochegrille: TCheckBox Left = 598 Height = 24 Top = 2 Width = 59 Caption = 'Grille' OnClick = cochegrilleClick ParentFont = False TabOrder = 2 end object cocheattraction: TCheckBox Left = 657 Height = 24 Top = 2 Width = 90 Caption = 'Attraction' OnClick = cocheattractionClick ParentFont = False TabOrder = 3 end object ComboZoom: TComboBox Left = 855 Height = 28 Hint = 'Facteur de zoom' Top = 2 Width = 79 ItemHeight = 20 Items.Strings = ( 'x1' 'x2' 'x5' 'x10' 'x20' 'x50' 'x100' ) OnChange = ComboZoomChange ParentFont = False ParentShowHint = False ShowHint = True Style = csDropDownList TabOrder = 4 end object boutonreseau: TSpeedButton Left = 225 Height = 25 Top = 2 Width = 25 Glyph.Data = { 26050000424D2605000000000000760000002800000014000000140000000100 180000000000B0040000120B0000120B00001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF 000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 000000000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFF000000000000FF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF0000 00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF000000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00 0000000000000000FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF00 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 00FFFFFFFFFFFFFFFFFF } NumGlyphs = 0 OnClick = boutonreseauClick ShowHint = True ParentShowHint = False end end object ScrollBox1: TScrollBox Left = 0 Height = 333 Top = 62 Width = 1021 HorzScrollBar.Page = 798 HorzScrollBar.Range = 801 HorzScrollBar.Visible = False VertScrollBar.Page = 301 VertScrollBar.Range = 320 VertScrollBar.Visible = False Align = alClient AutoScroll = False ClientHeight = 329 ClientWidth = 1017 TabOrder = 3 object Image1: TImage Left = 0 Height = 320 Top = 0 Width = 1017 OnMouseDown = Image1MouseDown OnMouseMove = Image1MouseMove end end object MainMenu1: TMainMenu left = 384 top = 160 object Fichier1: TMenuItem Caption = 'Fichier' object Nouveau1: TMenuItem Caption = 'Nouvelle simulation' OnClick = Nouveau1Click end object Ouvrirsimulation1: TMenuItem Caption = 'Ouvrir simulation' object durpertoireexemples1: TMenuItem Caption = 'de mon répertoire personnel' OnClick = durpertoireexemples1Click end object durpertoireexemples2: TMenuItem Caption = 'du répertoire "exemples"' OnClick = durpertoireexemples2Click end object dudernierrpertoireutilis1: TMenuItem Caption = 'du dernier répertoire de chargement autre que ceux ci-dessus' OnClick = dudernierrpertoireutilis1Click end end object MenuItem9: TMenuItem Caption = 'Superposer simulation' object MenuItem10: TMenuItem Caption = 'de mon répertoire personnel' OnClick = MenuItem10Click end object MenuItem11: TMenuItem Caption = 'du répertoire "exemples"' OnClick = MenuItem11Click end object MenuItem12: TMenuItem Caption = 'du dernier répertoire de chargement autre que ceux ci-dessus' OnClick = MenuItem12Click end end object Enregistrersimulation1: TMenuItem Caption = 'Enregistrer simulation sous' OnClick = Enregistrersimulation1Click end object Enregistrersimulation2: TMenuItem Caption = 'Enregistrer simulation' OnClick = Enregistrersimulation2Click end object N15: TMenuItem Caption = '-' end object Modifierdimensionsespacedetravail1: TMenuItem Caption = 'Modifier les dimensions de l''espace de travail' object Ajusterautomatiquement1: TMenuItem Caption = 'Ajuster automatiquement à la plus petite taille' OnClick = Ajusterautomatiquement1Click end object Manuellement1: TMenuItem Caption = 'Manuellement' OnClick = Manuellement1Click end end object N3: TMenuItem Caption = '-' end object Prfrences1: TMenuItem Caption = 'Préférences' OnClick = Prfrences1Click end object N17: TMenuItem Caption = '-' end object Imprimer1: TMenuItem Caption = 'Imprimer' OnClick = Imprimer1Click end object N4: TMenuItem Caption = '-' end object MenuItem1: TMenuItem Caption = 'Exporter graphe' object MenuItem3: TMenuItem Caption = 'PNG' OnClick = MenuItem3Click end object MenuItem4: TMenuItem Caption = 'JPG' OnClick = MenuItem4Click end object MenuItem8: TMenuItem Caption = 'PS' OnClick = MenuItem8Click end end object MenuItem2: TMenuItem Caption = '-' end object Quitter1: TMenuItem Caption = 'Quitter' OnClick = Quitter1Click end end object Edition1: TMenuItem Caption = 'Edition' object Rtablir1: TMenuItem Caption = 'Annuler' Enabled = False ShortCut = 16474 OnClick = Rtablir1Click end object Refaire1: TMenuItem Caption = 'Refaire' Enabled = False ShortCut = 16466 OnClick = Refaire1Click end object N19: TMenuItem Caption = '-' end object Dupliquerunlment1: TMenuItem Caption = 'Dupliquer un élément' OnClick = Dupliquerunlment1Click end object Supprimerunlment1: TMenuItem Caption = 'Supprimer un élément' OnClick = Supprimerunlment1Click end object Propritsdunlment1: TMenuItem Caption = 'Propriétés d''un élément' OnClick = Propritsdunlment1Click end object Dplacerunlment1: TMenuItem Caption = 'Déplacer un élément' OnClick = Dplacerunlment1Click end object Grouperdeslments1: TMenuItem Caption = 'Grouper des éléments' object Tousleslments1: TMenuItem Caption = 'Tous les éléments' OnClick = Tousleslments1Click end object Elementschoisir2: TMenuItem Caption = 'Eléments à choisir' OnClick = Elementschoisir2Click end end object N6: TMenuItem Caption = '-' end object Copier1: TMenuItem Caption = 'Copier simulation dans le presse papier' ShortCut = 16451 OnClick = Copier1Click end object N12: TMenuItem Caption = '-' end object Editerlecommentairedelasimulation1: TMenuItem Caption = 'Editer le commentaire de la simulation' OnClick = Editerlecommentairedelasimulation1Click end end object Ajouter1: TMenuItem Caption = 'Ajouter' object Systmeoptique1: TMenuItem Caption = 'Système optique idéal' object Miroirplan2: TMenuItem Caption = 'Miroir plan' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF0FFFFFFFFF FFFFFFFF0000FF0FFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFFF00000F0F FFFFFFFFFFFFFFFF0000F00FFFFFFFFFFFFFFFFF0000FF0FF0FFFFFFFFFFFFFF 000000FFF0FFFFFFFFFFFFFF0000000FF0F0FFFFFFFFFFFF0000000000F0FFFF FFFF00000000F00000F0F0FFFFFF0FFF0000FFF00000F0FFFFFFF0FF0000FFFF 0000F0F0FFFFFF0F0000FFFFF00000F0FFFFFFF00000FFFFFF000000F0FFFFF0 0000FFFFFFFF0000F0FF0FF00000FFFFFFFFF00000F0F00F0000FFFFFFFFFF00 00F0FFFF0000FFFFFFFFFFF00000FFFF0000FFFFFFFFFFFF00000FFF0000FFFF FFFFFFFFFF000FFF0000 } OnClick = Miroirplan2Click end object Miroirsphriqueconvergent1: TMenuItem Caption = 'Miroir sphérique concave' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFF0F00F FFFFFFFF0000FFFFFFF0F000FFFFFF0F0000FFFFFFF0FF0000FFF0FF0000FFFF FF00FFF0000F0FFF0000FFFFFFF0FFFFF000FF0F0000FFFFFFFFFFFFF00FF0FF 0000FFFFFFFFFFFFF00F0FFF0000F0FFFFFFFFFFF000FF0F0000F0FFFFFFFFFF F00FF0FF0000F0FF00F00F00F00F0FFF0000F000FFFFFFFFF000FF0F0000F0FF FFFFFFFFF00FF0FF0000F000FFFFFFFFF00F0FFF0000FFFFFFFFFFFFF000FF0F 0000FFFFFFFFFFFFF00FF0FF0000FFFFF00FFFFFF00F0FFF0000FFFFF0FFFFF0 0000FFFF0000FFFFFF0FFF0000FFFFFF0000FFFFF00FF000FFFFFFFF0000FFFF F0FFF00FFFFFFFFF0000 } OnClick = Miroirsphriqueconvergent1Click end object Miroirsphriqueconvexe1: TMenuItem Caption = 'Miroir sphérique convexe' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFF00FFF0FFF FFFFFFFF0000FF000FFF0FFFFFFFFFFF0000F000FFFF0FFFFFFFFFFF0000000F FFF00FFFFFFFFFFF000000FF0FFF0FFFFFFFFFFF000000F0FFFFFFFFFFFFFFFF 0000000FFFFFFFFFFFFFFFFF000000FF0FFFFFFFFFFFFFFF000000F0FFFFFFFF FFFFFFFF00000000000F00F0000F00FF000000FF0FFFFFFFFFF0FFFF000000F0 FFFFFFFFFFF0FFFF0000000FFFFFFFFFFFF000FF000000FF0FFFFFFFFFF0FFFF 000000F0FFFFFFFFFFF000FF0000000FFF00FFFFFFFFFFFF0000000FFF0FFFFF FFFFFFFF0000F000FFF0FFFFFFFFFFFF0000FF000F00FFFFFFFFFFFF0000FFF0 0F0FFFFFFFFFFFFF0000 } OnClick = Miroirsphriqueconvexe1Click end object N1: TMenuItem Caption = '-' end object Lentilleminceconvergente1: TMenuItem Caption = 'Lentille mince convergente' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFF00FF FFF0FFFF0000FFFFFFF0000FFFF0FFFF0000FFFFFF0F00F0FFF0FFFF0000FFFF F0FF00FF0F00FFFF0000FFFFFFFF00FFFFF0FFFF0000FFFFFFFF00FFFFFFFFFF 0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FF FFFFFFFF0000000F00FF00FF000F00F00000FFFFFFFF00FFFFFFFFFF00000FFF FFFF00FFFFFFF0FF00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF000 00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF0000000FFFFF0FF00FF 000FFFFF0000FFFFFF0F00F0F0FFFFFF0000FFFFFFF0000FFF0FFFFF0000FFFF FFFF00FFF00FFFFF0000 } OnClick = Lentilleminceconvergente1Click end object Lentillemincedivergente1: TMenuItem Caption = 'Lentille mince divergente' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFF0FFFFFF 0FF0FFFF0000FFFFFF0FFFF0FFF0FFFF0000FFFFFFF0FF0FFFF0FFFF0000FFFF FFFF00FFFF00FFFF0000FFFFFFFF00FFFFF0FFFF0000FFFFFFFF00FFFFFFFFFF 0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FFFFFFFFFF0000FFFFFFFF00FF FFFFFFFF0000000F00FF00FF000F00F00000FFFFFFFF00FFFFFFFFFF00000FFF FFFF00FFFFFFF0FF00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF000 00000FFFFFFF00FFFFFFF0FF0000000FFFFF00FFFFFFF0000000FFFFFFFF00FF F00FFFFF0000FFFFFFF0FF0FF0FFFFFF0000FFFFFF0FFFF0FF0FFFFF0000FFFF F0FFFFFF000FFFFF0000 } OnClick = Lentillemincedivergente1Click end object Lamesemirflchissante1: TMenuItem Caption = 'Lame semi réfléchissante' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFF0FFF FFFFFFFF0000FF00FFFF0FFFFFFFFFFF0000FF000FFF0FFFFFFFFFFF0000FFF0 00F00FFFFFFFFFFF0000FFFF000F0FFFFFFFFFFF0000FFFFF000FFFFFFFFFFFF 0000FFFFFF000FFFFFFFFFFF0000FFFFFFF000FFFFFFFFFF0000FFFFFFFF000F FFFFFFFF0000FFFFFFFFF000FFFFFFFF000000F00F00F0000F00F00F0000FFFF FFFFFFF000FFFFFF0000FFFFFFFFF0FF000FFFFF0000FFFFFFFFF0FFF000FFFF 0000FFFFFFFFFFFFFF000FFF0000FFFFFFFFF0FFFFF000FF0000FFFFFFFFF0FF FF00000F0000FFFFFFFFFFFFFF0FF00F0000FFFFFFFFF0FFFFF0FFFF0000FFFF FFFFF0FFFF00FFFF0000 } OnClick = Lamesemirflchissante1Click end object N2: TMenuItem Caption = '-' end object Ecran1: TMenuItem Caption = 'Ecran' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFF0FFFF FFFFFFFF0000FFFFFFF0FFFFFFFFFFFF0000FFFFFFF0FFFFFFFFFFFF0000F00F FF00FFFFFFFFFFFF0000F000FFF0FFFFFFFFFFFF0000FF000FFFFFFFFFFFFFFF 0000FFF000FFFFFFFFFFFFFF0000FFFF000FFFFFFFFFFFFF0000FFFFF000FFFF FFFFFFFF0000FFFFFF000FFFFFFFFFFF0000FFFFFFF000FFFFFFFFFF0000FFFF FFFF000FFFFF00FF0000FFFFFFFFF000FFFF0FFF0000FFFFFFFFFF000FFFF0FF 0000FFFFFFFFFFF000FF00FF0000FFFFFFFFFFFF000F0FFF0000FFFFFFFFFFFF F000FFFF0000FFFFFFFFFFFFFF000FFF0000FFFFFFFFFFFFFFF00FFF0000FFFF FFFFFFFFFFFFFFFF0000 } OnClick = Ecran1Click end object Diaphragme1: TMenuItem Caption = 'Diaphragme' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFF00000 0FFFFFFF0000FFFFF00FFFFFF00FFFFF0000FFF000FFFFFFFFF00FFF0000FF0F FF000FFFFFF0F0FF0000FF0FFFFF0FFFFFF0F0FF0000F0FFFFFFF0FFFFF0FF0F 0000F0FFFFFF0000FFFF0F0F00000FFFFFF0FFFF0FFF0FF000000FFFFF0FFFFF F0FF0FF000000FFFF00FFFFFF0F0FFF000000FFF0F0FFFFFF00FFFF000000FF0 FF0FFFFFF0FFFFF000000FF0FFF0FFFF0FFFFFF00000F0F0FFFF0000FFFFFF0F 0000F0FF0FFFF0FFFFFFFF0F0000FF0F0FFFFF0FFFFFF0FF0000FF0F0FFFFFF0 00FFF0FF0000FFF00FFFFFFFFF000FFF0000FFFFF00FFFFFF00FFFFF0000FFFF FFF000000FFFFFFF0000 } OnClick = Diaphragme1Click end end object Systmeoptiquerel1: TMenuItem Caption = 'Système optique réel' object Miroirsphriqueconcave1: TMenuItem Caption = 'Miroir sphérique concave' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFF0F F00FF0F00000FFFFFFFFFF0F00FF0F0F0000FFFFFFFFFF0F0000F0FF0000FFFF FFFFF00FFF000FFF0000FFFFFFFFFF0FFFFF0FFF0000FFFFFFFFFFFFFFFF00F0 0000FFFFFFFFFFFFFFFFF00F0000FFFFFFFFFFFFFFFFF00F0000FFFFFFFFFFFF FFFFFF0F0000F00F0000F00F0000FF000000FF00FFFFFFFFFFFFFF000000F0FF FFFFFFFFFFFFFF000000F0FFFFFFFFFFFFFFF00F0000FF00FFFFFFFFFFFFF00F 0000FFFFFFFFFFFFFFFF000F0000FFFFFFFFF00FFFFF00F00000FFFFFFFFF0FF FF0000FF0000FFFFFFFFFF0F0000FF0F0000FFFFFFFFF00F00FF0FF00000FFFF FFFFF0FFFF0FF0FF0000 } OnClick = Miroirsphriqueconcave1Click end object Miroirsphriqueconvexe2: TMenuItem Caption = 'Miroir sphérique convexe' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFF0F FFFFFFFF0000FFFFFFFFFF0F00FFFFFF0000FFFFFFFFFF0F0000FFFF0000FFFF FFFFF000FF000FFF0000FFFFFFFFFF0FF0FF0FFF0000FFFFFFFFFFFF0FFF00FF 0000FFFFFFFFFFFFFFF0F00F0000FFFFFFFFFFFFFF0FF00F0000FFFFFFFFFFFF FFFF0F0F0000F00F0000F00F0000FF000000FF00FFFFFFFFFFF0FF000000F0FF FFFFFFFFFFFF0F000000F0FFFFFFFFFFFF0FF00F0000FF00FFFFFFFFFFF0F00F 0000FFFFFFFFFFFF0FFF000F0000FFFFFFFFF00FF0FF00FF0000FFFFFFFFF0F0 FF0000FF0000FFFFFFFFFF0F0000FFFF0000FFFFFFFFF00F00FFFFFF0000FFFF FFFFF0FFFFFFFFFF0000 } OnClick = Miroirsphriqueconvexe2Click end object Miroircnique1: TMenuItem Caption = 'Miroir cônique' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF0FFFFFFFFF FFFFFFFF0000FF0FFFFFFFFFFFFFFFFF0000FF0F00FFFFFFFFFFFFFF0000F00F 00000FFFFFFFFFFF0000FF0FFF00000FFFFFFFFF0000FFFFFFFF0000FFFFFFFF 0000FFFFFFFFF0000FFFFFFF0000FFFFFFFFFFF000FFFFFF0000FFFFFF0FFFFF 00FFF0000000FFFFFF0FFFFFF00FFFF00000FFFFFF000FFFFF0FF00F0000FFFF FF0FFFFFFF000FFF0000FFFFFF000FFFFF00F00F0000FFFFFFFFFFFFFF00FFFF 0000FFFFFFFFFFFFF00FFFFF0000F00FFFFFFFF0000FFFFF0000F0FFFFFF0000 00FFFFFF0000FF0FF000000FFFFFFFFF0000F00F0000FFFFFFFFFFFF0000F0FF FFFFFFFFFFFFFFFF0000 } OnClick = Miroircnique1Click end object N5: TMenuItem Caption = '-' end object Polyhdrerfractant1: TMenuItem Caption = 'Polyhèdre réfractant' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFF00FFFFF FFFFF0FF0000FFFFF0FFFFFFFFFFFF0F0000FFFFFF0FF0000FFFF0FF0000FFFF F00F0000000FFF0F0000FF0FF0F000FF000000FF0000FF0FFF000FFFFF000FFF 0000FF0FF000FFFFFFF00FFF0000F00FF00FFFFFFFF00FFF0000FF0F00FFFFFF FFF00FFF0000FFF000FFFFFFFFF00FFF0000FF000FFFFFFFFFF00FFF0000F000 FFFFFFFFFFF00FFF0000F00FFFFFFFFFFFF00FFF0000F000FFFFFFFFFFF00FFF 0000FF000FFFFFFFFFF00FFF0000F0F000FFFFFFFFF00FFF0000FF0F000FFFFF FFF00FF00000F0FFF0000000000000000000F0FFFF000000000000F00000F00F FFFFFFFFFFFFFF000000 } OnClick = Polyhdrerfractant1Click end object Sphrerfractante1: TMenuItem Caption = 'Sphère réfractante' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFF0000000 000FFFFF0000FFFF000000000000FFFF0000FFF000FFFFFFFF000FFF0000FF00 0FFFFFFFFFF000FF0000F000FFFFFF00FFFF000F0000F00FFFFFF0FFFFFFF00F 000000FFFFFFF0FFFFFFFF00000000FFFFFFFF00FFFFFF00000000FFFFFFFFFF FFFFFF00000000FFFFFFF00FFFFFFF00000000FFFFFFF00FFFFFFF00000000FF FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF00 0000F00FFFFFFFFFFFFFF00F0000F000FFFFFFFFFFFF000F0000FF000FFFFFFF FFF000FF0000FFF000FFFFFFFF000FFF0000FFFF000000000000FFFF0000FFFF F0000000000FFFFF0000 } OnClick = Sphrerfractante1Click end object MenuPrisme: TMenuItem Caption = 'Prisme' Bitmap.Data = { 76060000424D7606000000000000360000002800000014000000140000000100 2000000000004006000064000000640000000000000000000000000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00000000FF000000FFFFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFF FF00000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FF000000FF000000FFFFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00000000FF000000FF000000FFFFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 } OnClick = MenuPrismeClick end object Lentille1: TMenuItem Caption = 'Lentille' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFF0FFFF0000FFFFFFF0000FFFF0FFFF0000FFFFFF00FF00FFF0FFFF0000FFFF F00FFFF000F0FFFF0000FFFF00FFFFFF0F00FFFF0000FFFF00FFFFFF00F0FFFF 0000FFFF00FFFFFF00FFFFFF0000FFF00FFFFFFFF00FFFFF0000FFF00FFFFFFF F00FFFFF0000FFF00FFFFFFFF00FFFFF000000000F00F000F0000F000000FFF0 0FFFFFFFF00FFFFF0000FFF00FFFFFFFF00FFFFF0000FFF00FFFFFFFF0FFFFFF 0000FFFF00FFFFFF00000FFF0000FFFF00FFFFFF00F0FFFF0000FFFF00FFFFFF 00F0FFFF0000FFFFF00FFFF00FFF0FFF0000FFFFFF00FF00FF000FFF0000FFFF FFF0000FFFFFFFFF0000 } OnClick = Lentille1Click end object Polysphrerfractante1: TMenuItem Caption = 'Polysphère réfractante' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFF000FFFFF FFFF0FFF0000FFFF0FFFFFFFFFFF0FFF0000FFFFF0FFFFFFFFFF0FFF0000FFFF FF0FFFFFFFF00FFF0000FFFF0F0F000FFFFF0FFF0000FFFF0000FFF00FFFFFFF 0000FFFF00FFFFFFF00FFFFF0000FFF0FFFFFFFFFFF0FFFF0000FF0FFFFFFFFF FFFF0FFF0000FFF0FFFFFFFFFFFF0FFF0000F0FF0FFFFFFFFFFF0FFF00000F0F F0FFFFFFFFFF0FFF0000FF0FF0FFFFFFFFFF0FFF0000F0FFF0FFFFFFFFFF0FFF 0000FF0FF0FFFFFFFFFF0FFF000000FF0FFFFFFFFFFF0FFF0000FFF0FFFFFFFF FFFF0FFF0000FF0FFFFF00FFFFF0FFFF0000FFF0FFF0FF0FFF0FFFFF0000FFFF 000FFFF000FFFFFF0000 } OnClick = Polysphrerfractante1Click end end object Source2: TMenuItem Caption = 'Source' object Rayonunique1: TMenuItem Caption = 'Rayon unique' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FF0FFFFFFFFF FFF0000F0000FF0FFFFFFFFFFFF0FFFF0000FF0FFFFFFFFFFFFF0FFF0000FF0F FFFFFFFFFFFFF0FF0000FF0FFFFFFFFFFFFFFF0F00000F0FFFFFFFFFFFFFFF0F 0000F00FFFFFFFFFFFF0FF0F0000FF0FFFFFFFFFFFFF00FF0000FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFF0FFFFFFFFFFFF0000FFFFFFFF0FFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFF 0000000000000000000000000000000000000000000000000000FFFFFFFFF0FF FFFFFFFF0000FFFFFFFF0FFFFFFFFFFF0000FFFFFFF0FFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } OnClick = Rayonunique1Click end object Sourceponctuelle1: TMenuItem Caption = 'Objet ponctuel réel ou virtuel' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF F00FFF0F0000FFFFFFFFFFFF000FFF0F0000FFFFFFFF000000FFFF0F0000FFFF FFFFFF000FFFF00F0000FFFFFFFFF0000FFFFF0F0000FFFFFFFF000F0FFFFFFF 0000FFFFFFF000FF0FFFFFFF0000FFFFFF000FFFFFFFFFFF0000F000F000FFFF 0FFFFFFF00000FF0F00FFFFFFFFFFFFF0000F00FF00FFFFFFFFFFFFF00000FF0 F00FFFFFFFFFFFFF0000000FF000FFFFFFFFFFFF0000FFFFFF000FFFFFFFFFFF 0000FFFFFFF0000FF0FFFFFF0000FFFFFFFF0000F0FF00FF0000FFFFFFFFFF00 00FF0FFF0000FFFFFFFFFFF000FFF0FF0000FFFFFFFFF000000F00FF0000FFFF FFFFFFFFF00F0FFF0000 } OnClick = Sourceponctuelle1Click end object Ondeplane1: TMenuItem Caption = 'Onde plane' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFF00F0000FFFFFFFFFFFFFFFFF0F00000FF0FFFFFF0FFFFFFF0F00000FF0F FFFFFF0FFFFFF0F00000FF0FFFFFFFF0FFFFF00F0000F00F0000000000000000 0000FF0F00000000000000000000FFFFFFFFFFF0FFFFFFFF0000FFFFFFFFFF0F FFFFFFFF0000FFFFFFFFF0FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0FFFFFFFFFFF000000FFFFFFF0FFFFFFFFFF 00000FFFFFFFFF0FFFFFFFFF0000F0FF0000000000000000000000FF00000000 0000000000000FFFFFFFFF0FFFFFFFFF0000FFFFFFFFF0FFFFFFFFFF0000FFFF FFFF0FFFFFFFFFFF0000 } OnClick = Ondeplane1Click end end object Divers1: TMenuItem Caption = 'Divers' object Textesurledessin1: TMenuItem Caption = 'Texte sur le dessin' OnClick = Textesurledessin1Click end object Commenatiresurlasimulation1: TMenuItem Caption = 'Commentaire sur la simulation' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000 00000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000FF 00000FFFFFFFFF00000000FFFFFFFFFFFFFFFF00000000FF000000000000FF00 000000FFFFFFFFFFFFFFFF00000000FF000000FFFFFFFF00000000FFFFFFFFFF FFFFFF00000000FF000000000000FF00000000FFFFFFFFFFFFFFFF00000000FF 000000000000FF00000000FFFFFFFFFFFFFFFF00000000FF000000000FFFFF00 000000FFFFFFFFFFFFFFFF00000000FF000000000000FF00000000FFFFFFFFFF FFFFFF00000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000 00000000000000000000 } OnClick = Commenatiresurlasimulation1Click end object Mesurededistance1: TMenuItem Caption = 'Mesure de distance' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FF000FFF0FF00FF00F0F0000FF0F F0FF0F0FF0F0FFFF0000FF0FFF0F0FFF0FF0FFFF0000FF0FFF0F0FF0FFF0FFFF 0000FF0FFF0F0F0FF0F0FFFF0000FF0FFF0F0F000F000FFF0000FF0FF0FFFFFF FFF0FFFF0000FF000FFF0FFFFFF0FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF00000000000000000000000000000FF0FF0FF0FF0FF0FFF0 00000FF0FF0FF0FF0FF0FFF000000FFFFF0FFFFF0FFFFFF000000FFFFFFFFFFF FFFFFFF000000FFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } OnClick = Mesurededistance1Click end object Mesuredangle1: TMenuItem Caption = 'Mesure d''angle' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFF000F000000FFFFFFFFFFFFF00F00000000FFFF FFFFFFFFF00FF00F0000FF00FFFFFFFFF00FF00F0000FF0F00FFFFFFF00F0000 0000FF0FFF00FFFFFF000F000000FFF0FFF000FFFFFFFFFF0000FFF0FFF0FF00 0FFFFFFF0000FFF0FF0FFFFFF00FFFFF0000FFF000FFFFFFFFF00FFF0000FFF0 FFFFFFFFFFFFF00F0000FFFF0FFFFFFFFFFFFFFF0000FFFF0FFFFFFFFFFFFFFF 0000FFFF0FFFFFFFFFFFFFFF0000FFFF0FFFFFFFFFFFFFFF0000FFFF0FFFFFFF FFFFFFFF0000FFFFF0FFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFF0000FFFF F0FFFFFFFFFFFFFF0000 } OnClick = Mesuredangle1Click end object Rayonsfantomes1: TMenuItem Caption = 'Rayons fantomes' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFEEEEE EEEFFFFF0000FFFFFFFEEEEEEEEFFFFF0000FFFFFFFEEEEEEEEFFFFF0000FFFF FFFEEEEEEEEFFFFF0000FFFFFFFEEEEEEEEFFFFF0000FFFFFFFEEEEEEEEFFFFF 0000FEEEEEFEEEEEEEEEEEEE0000FEEEEEEEEEEEEEEEEEEE0000FFFFEEEEE000 0EEEEFFF0000FFFFFFEE0EEEE0EFFFFF0000FFFFFFEEEEEEEEEFFFFF0000FFFF FFEEEEEEEEEFFFFF0000FFFFFEEEEEEEEEEEFFFF0000FFFFFEEEEEEEEEEEFFFF 0000FFFFFE00EEEEE00EFFFF0000FFFFFE00EEEEE00EFFFF0000FFFFFFEEEEEE EEEFFFFF0000FFFFFFFEEEEEEEFFFFFF0000FFFFFFFFEEEEEFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } OnClick = Rayonsfantomes1Click end object Traitflche1: TMenuItem Caption = 'Trait, fléche...' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FFFFFFFF0000FFF0FFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFFF0000F000 FFFFFFFFFFFFFFFF0000F0000FFFFFFFFFFFFFFF00000F0000FFFFFFFFFFFFFF 0000FFF0000FFFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF0000FFFFF0000FFF FFFFFFFF0000FFFFFF0000FFFFFFFFFF0000FFFFFFF0000FFFFFFFFF0000FFFF FFFF0000FFF0FFFF0000FFFFFFFFF0000FF0FFFF0000FFFFFFFFFF0000F0FFFF 0000FFFFFFFFFFF00000FFFF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF F000FFFF0000FFFFFFFFFF000000FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF0000 } OnClick = Traitflche1Click end object Oeilstylis1: TMenuItem Caption = 'Oeil stylisé' Bitmap.Data = { 66010000424D6601000000000000760000002800000014000000140000000100 040000000000F000000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF FF0FFFFF0000FFFFFFFFFFFFF0FFFFFF0000FFFFFFFFFFFF0FFFFFFF0000FFFF FFFFFFF0FFFFFFFF0000FFFFFFFFFF0F0FFFFFFF0000FFFFFFFFF0FFF0FFFFFF 0000FFFFFFF00FFFFF0FFFFF0000FFFFF00FFFFFFF0FFFFF0000FFF00FFFFFFF FFF0FFFF0000000FFFFFFFFFF000FFFF0000000FFFFFFFFFF000FFFF0000FFF0 0FFFFFFFFFF0FFFF0000FFFFF00FFFFFFF0FFFFF0000FFFFFFF00FFFFF0FFFFF 0000FFFFFFFFF0FFF0FFFFFF0000FFFFFFFFFF0F0FFFFFFF0000FFFFFFFFFFF0 FFFFFFFF0000FFFFFFFFFFFF0FFFFFFF0000FFFFFFFFFFFFF0FFFFFF0000FFFF FFFFFFFFFF0FFFFF0000 } OnClick = Oeilstylis1Click end object MenuItemreseau: TMenuItem Caption = 'Réseau diffractant' Bitmap.Data = { 26050000424D2605000000000000760000002800000014000000140000000100 180000000000B0040000120B0000120B00001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF 000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 000000000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFF000000000000FF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF0000 00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF000000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00 0000000000000000FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF00 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 00FFFFFFFFFFFFFFFFFF } OnClick = MenuItemreseauClick end end end object Grille1: TMenuItem Caption = 'Options' object Afficherlagrille1: TMenuItem Caption = 'Afficher la grille' OnClick = Afficherlagrille1Click end object Attractiondelagrille1: TMenuItem Caption = 'Attraction de la grille' OnClick = Attractiondelagrille1Click end object Optionsdelagrille1: TMenuItem Caption = 'Options de la grille' OnClick = Optionsdelagrille1Click end object N8: TMenuItem Caption = '-' end object N7: TMenuItem Caption = 'Afficher les normales' Checked = True OnClick = N7Click end object Afficherlesangles1: TMenuItem Caption = 'Afficher les angles' OnClick = Afficherlesangles1Click end object Optionsdesnormales1: TMenuItem Caption = 'Options des normales' OnClick = Optionsdesnormales1Click end object N11: TMenuItem Caption = '-' end object Couleurdefond1: TMenuItem Caption = 'Couleur de fond' OnClick = Couleurdefond1Click end object MenuItem7: TMenuItem Caption = 'Indices du milieu ambiant' OnClick = MenuItem7Click end object N18: TMenuItem Caption = '-' end object Empennagedesrayons1: TMenuItem Caption = 'Empennage des rayons' OnClick = Empennagedesrayons1Click end object N14: TMenuItem Caption = '-' end object Surfacesdonde1: TMenuItem Caption = 'Surfaces d''onde' OnClick = Surfacesdonde1Click end object N16: TMenuItem Caption = '-' end object Basederegistre1: TMenuItem Caption = 'Base de registre' object AssocierlesfichiersoptavecOptGeo1: TMenuItem Caption = 'Associer les fichiers .opt avec OptGeo' OnClick = AssocierlesfichiersoptavecOptGeo1Click end object Dsassocier1: TMenuItem Caption = 'Désassocier' OnClick = Dsassocier1Click end end object N20: TMenuItem Caption = '-' end object Dfinirlerpertoirepersonnel1: TMenuItem Caption = 'Définir le répertoire personnel' OnClick = Dfinirlerpertoirepersonnel1Click end object MenuItem5: TMenuItem Caption = '-' end object MenuItem6: TMenuItem Caption = 'Langue' OnClick = MenuItem6Click end end object Aide1: TMenuItem Caption = 'Aide' object AidesurOptGeo1: TMenuItem Caption = 'Aide sur OptGeo' OnClick = AidesurOptGeo1Click end object N9: TMenuItem Caption = '-' end object Contacterlauteur1: TMenuItem Caption = 'Contacter l''auteur' OnClick = Contacterlauteur1Click end object N10: TMenuItem Caption = '-' end object MenuItem14: TMenuItem Caption = 'Historique des versions' OnClick = MenuItem14Click end object SiteWeb1: TMenuItem Caption = 'Site Web' OnClick = SiteWeb1Click end object N13: TMenuItem Caption = '-' end object Apropos2: TMenuItem Caption = 'A propos' OnClick = Apropos2Click end object N21: TMenuItem Caption = '-' end object LicenseGPL1: TMenuItem Caption = 'License GPL' OnClick = LicenseGPL1Click end end end object SaveDialog1: TSaveDialog DefaultExt = '.opt' Filter = 'Simulation OptGeo|*.opt' FilterIndex = 0 left = 160 top = 208 end object OpenDialog1: TOpenDialog DefaultExt = '.opt' Filter = 'Simulation OptGeo|*.opt|Tous les fichiers|*.*' FilterIndex = 0 left = 232 top = 232 end object PopupMenu1: TPopupMenu AutoPopup = False left = 128 top = 128 object Joindreparunsegment1: TMenuItem Caption = 'Joindre par un segment' end object Joindreparunarcdecercle1: TMenuItem Caption = 'Joindre par un arc de cercle' end end object ColorDialog1: TColorDialog Color = clBlack CustomColors.Strings = ( 'ColorA=000000' 'ColorB=000080' 'ColorC=008000' 'ColorD=008080' 'ColorE=800000' 'ColorF=800080' 'ColorG=808000' 'ColorH=808080' 'ColorI=C0C0C0' 'ColorJ=0000FF' 'ColorK=00FF00' 'ColorL=00FFFF' 'ColorM=FF0000' 'ColorN=FF00FF' 'ColorO=FFFF00' 'ColorP=FFFFFF' 'ColorQ=C0DCC0' 'ColorR=F0CAA6' 'ColorS=F0FBFF' 'ColorT=A4A0A0' ) left = 496 top = 136 end object FontDialog1: TFontDialog Font.Height = -11 MinFontSize = 0 MaxFontSize = 0 left = 312 top = 216 end object SaveDialog2: TSaveDialog DefaultExt = '.png' Filter = 'Portable Network Graphics|*.png' FilterIndex = 0 left = 120 top = 294 end object SaveDialog3: TSaveDialog DefaultExt = '.jpg' Filter = 'JPEG|*.jpg' FilterIndex = 0 left = 192 top = 306 end object PrintDialog1: TPrintDialog left = 262 top = 121 end object Pop: TPopupMenu left = 423 top = 239 end object SaveDialog4: TSaveDialog DefaultExt = '.ps' Filter = '.ps|Postscript' FilterIndex = 0 left = 571 top = 239 end end optgeo-2.21/saisiemconique.pas0000750000175000017500000001523112247333133016655 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiemconique; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiemiroirconique } Tsaisiemiroirconique = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; gridaxe: TColorBox; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editfx: TEdit; editfy: TEdit; GroupBox3: TGroupBox; GroupBox6: TGroupBox; StaticText5: TLabel; GroupBox7: TGroupBox; editp: TEdit; boutonsup: TBitBtn; GroupBox2: TGroupBox; StaticText3: TLabel; edite: TEdit; GroupBox4: TGroupBox; StaticText4: TLabel; editt0: TEdit; GroupBox5: TGroupBox; StaticText6: TLabel; StaticText7: TLabel; editt1: TEdit; editt2: TEdit; GroupBox8: TGroupBox; checkhachures: TCheckBox; checkaxefocal: TCheckBox; GroupBox9: TGroupBox; checkconcave: TCheckBox; StaticText8: TLabel; StaticText9: TLabel; StaticText10: TLabel; log1: TLabel; log2: TLabel; log3: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiemiroirconique: Tsaisiemiroirconique; mconique_hachures,mconique_axe,mconique_concave:boolean; mconique_epaisseur:integer; mconique_couleur,mconique_couleuraxe:tcolor; mconique_fx,mconique_fy,mconique_t0,mconique_t1,mconique_t2,mconique_e, mconique_p:extended; implementation uses unit222; procedure Tsaisiemiroirconique.BitBtn1Click(Sender: TObject); begin mconique_concave:=checkconcave.checked; mconique_hachures:=checkhachures.Checked; mconique_axe:=checkaxefocal.Checked; mconique_couleur:=colorgrid1.selected; mconique_couleuraxe:=gridaxe.selected; try mconique_fx:=strtofloat(editfx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce25), pchar(rsAttention), mb_ok); exit; end; end; if ((mconique_fxxxmax)) then begin application.messagebox(pchar(rsValeurInacce25), pchar(rsAttention),mb_ok); exit; end; try mconique_fy:=strtofloat(editfy.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce26), pchar(rsattention),mb_ok); exit; end; end; if ((mconique_fyyymax)) then begin application.messagebox(pchar(rsValeurInacce26), pchar(rsattention),mb_ok); exit; end; try mconique_e:=strtofloat(edite.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce27), pchar(rsattention),mb_ok); exit; end; end; mconique_e:=abs(mconique_e); try mconique_p:=strtofloat(editp.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce28), pchar(rsattention),mb_ok); exit; end; end; mconique_p:=abs(mconique_p); try mconique_t0:=strtofloat(editt0.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce29), pchar(rsattention),mb_ok); exit; end; end; try mconique_t1:=strtofloat(editt1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce30), pchar(rsattention),mb_ok); exit; end; end; try mconique_t2:=strtofloat(editt2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce31), pchar(rsattention),mb_ok); exit; end; end; ReTaillePmiroirconique(Listemiroirconique,nombremiroirconique,nombremiroirconique+1); inc(nombremiroirconique); if not (Listemiroirconique[-1+nombremiroirconique].create2(mconique_fx,mconique_fy, mconique_t0,mconique_t1, mconique_t2,mconique_e,mconique_p,mconique_concave, mconique_couleur,mconique_couleuraxe,mconique_hachures,mconique_axe)) then begin ReTaillePmiroirconique(Listemiroirconique,nombremiroirconique,nombremiroirconique-1); dec(nombremiroirconique); application.messagebox(pchar(rsDonnEsAberra2), pchar(rsattention),mb_ok); end else self.modalresult:=mrok; Rafraichit; end; procedure Tsaisiemiroirconique.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeM; CAPTION :=rsAjoutDUnMiro7; CHECKAXEFOCAL.CAPTION :=rsAxeFocal; CHECKCONCAVE.CAPTION :=rsConcave; CHECKHACHURES.CAPTION :=rsHachures; GROUPBOX1.CAPTION :=rsFoyerF; GROUPBOX2.CAPTION :=rsExcentricit; GROUPBOX3.CAPTION :=rsCouleurDuMir; GROUPBOX4.CAPTION :=rsAnglePolaire2; GROUPBOX5.CAPTION :=rsAnglesPolair; GROUPBOX6.CAPTION :=rsParamTre; GROUPBOX7.CAPTION :=rsCouleurDeLAx3; GROUPBOX8.CAPTION :=rsAspectLCran; GROUPBOX9.CAPTION :=rsConcaveOuCon; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; STATICTEXT1.CAPTION :=rsX; STATICTEXT10.CAPTION :=rsRad; STATICTEXT2.CAPTION :=rsY; STATICTEXT3.CAPTION :=rsE; STATICTEXT4.CAPTION :=rsT0; STATICTEXT5.CAPTION :=rsP; STATICTEXT6.CAPTION :=rsT1; STATICTEXT7.CAPTION :=rsT2; STATICTEXT8.CAPTION :=rsRad; STATICTEXT9.CAPTION :=rsRad; end; procedure Tsaisiemiroirconique.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiemconique.lrs} end. optgeo-2.21/unit13.pas0000750000175000017500000001050412247333133014760 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit13; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, LResources,LCLType,UnitScaleFont,UChaines; type { Tsaisiemetre } Tsaisiemetre = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiemetre: Tsaisiemetre; di_x1,di_x2,di_y1,di_y2:extended; implementation uses unit222; procedure Tsaisiemetre.BitBtn1Click(Sender: TObject); begin try di_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; try di_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; try di_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; try di_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; ReTaillePmetre(Listemetre,nombremetre,nombremetre+1); inc(nombremetre); if not (Listemetre[-1+nombremetre].create(di_x1,di_y1,di_x2,di_y2 )) then begin ReTaillePmetre(Listemetre,nombremetre,nombremetre-1); dec(nombremetre); application.messagebox(pchar(rsPointsTropPr2), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisiemetre.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEMETRE.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEMETRE.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet10; CAPTION :=rsModification; GROUPBOX1.CAPTION :=rsCoordonnEsDu3; GROUPBOX2.CAPTION :=rsCoordonnEsDu4; LOG1.CAPTION // msgctxt ';TSAISIEMETRE.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEMETRE.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEMETRE.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIEMETRE.LOG4.CAPTION'; :=rsLog4; STATICTEXT1.CAPTION // msgctxt ';TSAISIEMETRE.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT2.CAPTION // msgctxt ';TSAISIEMETRE.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIEMETRE.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIEMETRE.STATICTEXT4.CAPTION'; :=rsY; end; procedure Tsaisiemetre.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit13.lrs} end. optgeo-2.21/saisiefle.pas0000750000175000017500000000635412247333133015611 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiefle; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Colorbox, Spin, ExtCtrls,unit222, LResources,UnitScaleFont; type { Tsaisiefleche } Tsaisiefleche = class(TForm) BitBtn1: TBitBtn; Colorgrid1: TColorBox; radioext1: TRadioGroup; radioext2: TRadioGroup; GroupBox1: TGroupBox; GroupBox2: TGroupBox; spintaille1: TSpinEdit; spintaille2: TSpinEdit; StaticText1: TLabel; StaticText3: TLabel; StaticText2: TLabel; StaticText4: TLabel; GroupBox3: TGroupBox; spinepaisseur: TSpinEdit; radiostyletrait: TRadioGroup; GroupBox4: TGroupBox; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiefleche: Tsaisiefleche; ra_ext1,ra_ext2:textremite; ra_epaisseur:integer; ra_styletrait:tpenstyle; ra_couleur:tcolor; ra_taille1,ra_taille2:integer; implementation procedure Tsaisiefleche.BitBtn1Click(Sender: TObject); begin ra_taille1:=spintaille1.value; ra_taille2:=spintaille2.value; ra_epaisseur:=spinepaisseur.value; case radioext1.itemindex of 0: ra_ext1:=trien; 1: ra_ext1:=tffleche; 2: ra_ext1:=ttrait; 3: ra_ext1:=trond; 4: ra_ext1:=tcroix; 5: ra_ext1:=tcroixx; 6: ra_ext1:=tdisque; end; case radioext2.itemindex of 0: ra_ext2:=trien; 1: ra_ext2:=tffleche; 2: ra_ext2:=ttrait; 3: ra_ext2:=trond; 4: ra_ext2:=tcroix; 5: ra_ext2:=tcroixx; 6: ra_ext2:=tdisque; end; case radiostyletrait.itemindex of 0: ra_styletrait:=pssolid; 1: ra_styletrait:=psdot; 2: ra_styletrait:=psdash; 3: ra_styletrait:=psdashdot; 4: ra_styletrait:=psdashdotdot; end; ra_couleur:=colorgrid1.selected; end; procedure Tsaisiefleche.FormCreate(Sender: TObject); begin encreation:=true; end; procedure Tsaisiefleche.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiefle.lrs} end. optgeo-2.21/unit_quelobjet.lfm0000750000175000017500000000142012247333133016656 0ustar georgeskgeorgeskobject Form_quelobjet: TForm_quelobjet Left = 329 Height = 79 Top = 190 Width = 325 BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'Propriétés de l''objet:' ClientHeight = 79 ClientWidth = 325 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object ComboBox1: TComboBox Left = 24 Height = 21 Top = 24 Width = 179 ItemHeight = 13 ItemIndex = 0 Items.Strings = ( '' ) OnChange = ComboBox1Change Style = csDropDownList TabOrder = 0 end object BitBtn1: TBitBtn Left = 218 Height = 65 Top = 7 Width = 97 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 TabOrder = 1 end end optgeo-2.21/saisiech.pas0000750000175000017500000000473212247333133015433 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiech; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, LResources,UnitScaleFont,UChaines; type { Tsaisiechoix } Tsaisiechoix = class(TForm) Edit_indice_bleu_par_defaut: TEdit; Edit_indice_vert_par_defaut: TEdit; Edit_indice_rouge_par_defaut: TEdit; radiochoix: TRadioGroup; BitBtn1: TBitBtn; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; StaticText5: TLabel; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiechoix: Tsaisiechoix; implementation { Tsaisiechoix } procedure Tsaisiechoix.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure Tsaisiechoix.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsSuivant; CAPTION:= rsQueVoulezVou; RADIOCHOIX.CAPTION:=rsVoulezVous; RADIOCHOIX.Items[0]:=rsCrRUneNouvel; RADIOCHOIX.Items[1]:=rsCrRUneNouvel2; RADIOCHOIX.Items[2]:=rsOuvrirUneSim; STATICTEXT2.CAPTION :=rsVousPouvezCh; STATICTEXT3.CAPTION:=rsPourLeVert; STATICTEXT4.CAPTION:=rsPourLeRouge; STATICTEXT5.CAPTION:=rsPourLeBleu; end; initialization {$i saisiech.lrs} end. optgeo-2.21/saisieespace.pas0000750000175000017500000000313312247333133016273 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisieespace; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type Tsaisieesp = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; CheckBox1: TCheckBox; StaticText1: TLabel; StaticText2: TLabel; GroupBox3: TGroupBox; Editlargeur: TEdit; Edithauteur: TEdit; BitBtn1: TBitBtn; private { Déclarations privées } public { Déclarations publiques } end; var saisieesp: Tsaisieesp; implementation {$R *.DFM} end. optgeo-2.21/saisieec.lfm0000750000175000017500000004347612247333133015433 0ustar georgeskgeorgeskobject saisieecran: Tsaisieecran Left = 247 Height = 240 Top = 160 Width = 527 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un écran' ClientHeight = 240 ClientWidth = 527 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF0F0FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF0FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF000 000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF000000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFF000000FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF 000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFF00000 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFF000 0FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF0FFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFF FFFFFFFF0FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFF0FF0FFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF000000FFFFFFFFF00FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 000FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 8 Height = 129 Top = 104 Width = 129 Caption = 'Couleur à l''écran' ClientHeight = 111 ClientWidth = 125 TabOrder = 0 object Colorgrid1: TColorBox Left = 9 Height = 22 Top = 30 Width = 94 ItemHeight = 16 TabOrder = 0 end end object GroupBox3: TGroupBox Left = 144 Height = 65 Top = 104 Width = 169 Caption = 'Epaisseur trait à l''écran' ClientHeight = 47 ClientWidth = 165 TabOrder = 1 object editepaisseur: TSpinEdit Left = 24 Height = 21 Top = 16 Width = 49 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 104 Height = 97 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 79 ClientWidth = 157 TabOrder = 2 object StaticText1: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 1 end object edity1: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 272 Height = 97 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 79 ClientWidth = 157 TabOrder = 3 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object BitBtn1: TBitBtn Left = 328 Height = 65 Top = 104 Width = 185 Caption = 'OK' Default = True Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 3333333333333333333333330000333333333333333333333333F33333333333 00003333344333333333333333388F3333333333000033334224333333333333 338338F3333333330000333422224333333333333833338F3333333300003342 222224333333333383333338F3333333000034222A22224333333338F338F333 8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224 33333338F83338F338F33333000033A33333A222433333338333338F338F3333 0000333333333A222433333333333338F338F33300003333333333A222433333 333333338F338F33000033333333333A222433333333333338F338F300003333 33333333A222433333333333338F338F00003333333333333A22433333333333 3338F38F000033333333333333A223333333333333338F830000333333333333 333A333333333333333338330000333333333333333333333333333333333333 0000 } ModalResult = 1 NumGlyphs = 2 OnClick = BitBtn1Click TabOrder = 4 end object boutonsup: TBitBtn Left = 144 Height = 57 Top = 175 Width = 169 Caption = 'Supprimer cet écran' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 5 end object BitBtn2: TBitBtn Left = 328 Height = 54 Top = 178 Width = 185 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 6 end end optgeo-2.21/saisielmc.pas0000750000175000017500000001226012247333133015607 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisielmc; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisielentillemc } Tsaisielentillemc = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; gridaxe: TColorBox; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; GroupBox3: TGroupBox; GroupBox4: TGroupBox; editepaisseur: TSpinEdit; GroupBox5: TGroupBox; cocheaxe: TCheckBox; GroupBox6: TGroupBox; StaticText5: TLabel; editfocale: TEdit; GroupBox7: TGroupBox; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisielentillemc: Tsaisielentillemc; lmc_axe:boolean; lmc_epaisseur:integer; lmc_couleur,lmc_couleuraxe:tcolor; lmc_x1,lmc_x2,lmc_y1,lmc_y2,lmc_focale:extended; implementation uses unit222; procedure Tsaisielentillemc.BitBtn1Click(Sender: TObject); begin lmc_axe:=cocheaxe.Checked; lmc_epaisseur:=editepaisseur.Value; lmc_couleur:=colorgrid1.selected; lmc_couleuraxe:=gridaxe.selected; try lmc_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsAttention), mb_ok); exit; end; end; try lmc_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; try lmc_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; try lmc_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; try lmc_focale:=strtofloat(editfocale.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce24), pchar(rsattention),mb_ok); exit; end; end; if (lmc_focale=0) then begin application.messagebox(pchar(rsLaFocaleDoit), pchar(rsattention),mb_ok); exit; end; lmc_focale:=abs(lmc_focale); ReTaillePLmc(ListeLmc,nombrelmc,nombrelmc+1); inc(nombrelmc); if not (Listelmc[-1+nombrelmc].create2(lmc_x1,lmc_y1,lmc_x2,lmc_y2, lmc_focale,lmc_epaisseur, lmc_couleur,lmc_couleuraxe,lmc_axe)) then begin ReTaillePLmc(ListeLmc,nombrelmc,nombrelmc-1); dec(nombrelmc); application.messagebox(pchar(rsDonnEsAberra2), pchar(rsattention),mb_ok); end else self.modalresult:=mrok; Rafraichit; end; procedure Tsaisielentillemc.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet5; CAPTION :=rsAjoutDUneLen5; COCHEAXE.CAPTION :=rsAxeOptique; GROUPBOX1.CAPTION :=rsPoint1; GROUPBOX2.CAPTION :=rsPoint2; GROUPBOX3.CAPTION :=rsCouleurDeLaL; GROUPBOX4.CAPTION :=rsEpaisseurTra3; GROUPBOX5.CAPTION :=rsAspect; GROUPBOX6.CAPTION :=rsFocaleValeur; GROUPBOX7.CAPTION :=rsCouleurDeLAx; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; LOG5.CAPTION :=rsLog5; STATICTEXT1.CAPTION :=rsX; STATICTEXT2.CAPTION :=rsY; STATICTEXT3.CAPTION :=rsX; STATICTEXT4.CAPTION :=rsY; STATICTEXT5.CAPTION :=rsF; end; procedure Tsaisielentillemc.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisielmc.lrs} end. optgeo-2.21/fiche_affiche_coordonees.lfm0000750000175000017500000000102512247333133020571 0ustar georgeskgeorgeskobject fiche_coordonnees_segments: Tfiche_coordonnees_segments Left = 328 Height = 437 Top = 324 Width = 625 ActiveControl = Memo1 Caption = 'Coordonnées des segments' ClientHeight = 437 ClientWidth = 625 OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Memo1: TMemo Left = 0 Height = 437 Top = 0 Width = 625 Align = alClient Lines.Strings = ( 'Memo1' ) ParentFont = False ScrollBars = ssBoth TabOrder = 0 end end optgeo-2.21/unitconfigpostscript.lfm0000750000175000017500000001427112247333133020135 0ustar georgeskgeorgeskobject FormConfigPostScript: TFormConfigPostScript Left = 219 Height = 530 Top = 128 Width = 469 BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'FormConfigPostScript' ClientHeight = 530 ClientWidth = 469 Color = clAqua OnCreate = FormCreate LCLVersion = '0.9.28.2' object GroupBox1: TGroupBox Left = 7 Height = 313 Top = 120 Width = 153 Caption = 'Position' ClientHeight = 295 ClientWidth = 149 TabOrder = 0 object radiogroupehorizontal: TRadioGroup Left = 20 Height = 126 Top = 14 Width = 111 AutoFill = True Caption = 'Horizontale' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 108 ClientWidth = 107 ItemIndex = 2 Items.Strings = ( 'Droite' 'Gauche' 'Centré' ) TabOrder = 0 end object RadioGroupevertical: TRadioGroup Left = 22 Height = 138 Top = 151 Width = 105 AutoFill = True Caption = 'Verticale' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 120 ClientWidth = 101 ItemIndex = 2 Items.Strings = ( 'Haut' 'Bas' 'Centré' ) TabOrder = 1 end end object GroupBox3: TGroupBox Left = 176 Height = 90 Top = 8 Width = 250 Caption = 'Taille (en % de la page)' ClientHeight = 72 ClientWidth = 246 TabOrder = 1 object Label2: TLabel Left = 7 Height = 14 Top = 7 Width = 79 Caption = 'Horizontalement' ParentColor = False end object Label3: TLabel Left = 16 Height = 14 Top = 41 Width = 66 Caption = 'Verticalement' ParentColor = False end object spinpourcentagehorizontal: TSpinEdit Left = 128 Height = 21 Top = 0 Width = 57 TabOrder = 0 Value = 100 end object spinpourcentagevertical: TSpinEdit Left = 128 Height = 21 Top = 38 Width = 57 TabOrder = 1 Value = 100 end end object RadioGrouporientation: TRadioGroup Left = 175 Height = 86 Top = 104 Width = 249 AutoFill = True Caption = 'Orientation' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 68 ClientWidth = 245 ItemIndex = 1 Items.Strings = ( 'Portrait' 'Paysage' ) TabOrder = 2 end object GroupBox4: TGroupBox Left = 176 Height = 57 Top = 200 Width = 254 Caption = 'Rapport hauteur/largeur' ClientHeight = 39 ClientWidth = 250 TabOrder = 3 object CheckBoxrespect: TCheckBox Left = 5 Height = 17 Top = 8 Width = 185 Caption = 'Respecter les angles à l''impression' Checked = True State = cbChecked TabOrder = 0 end end object BitBtn2: TBitBtn Left = 7 Height = 84 Top = 440 Width = 153 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 4 end object BitBtn1: TBitBtn Left = 184 Height = 148 Top = 376 Width = 254 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 5 end object GroupBox2: TGroupBox Left = 7 Height = 105 Top = 10 Width = 153 Caption = 'Taille page' ClientHeight = 87 ClientWidth = 149 TabOrder = 6 object ComboBox1: TComboBox Left = 7 Height = 21 Top = 30 Width = 112 ItemHeight = 13 ItemIndex = 0 Items.Strings = ( 'A4' 'A3' 'A2' 'A1' 'A0' 'A5' 'Letter' 'Legal' 'Ledger' ) TabOrder = 0 Text = 'A4' end end object GroupBox5: TGroupBox Left = 176 Height = 74 Top = 264 Width = 249 Caption = 'Résolutions' ClientHeight = 56 ClientWidth = 245 TabOrder = 7 object Label1: TLabel Left = 9 Height = 14 Top = 5 Width = 59 Caption = 'Horizontale:' ParentColor = False end object Label4: TLabel Left = 14 Height = 14 Top = 32 Width = 46 Caption = 'Verticale:' ParentColor = False end object Label5: TLabel Left = 158 Height = 14 Top = 5 Width = 18 Caption = 'DPI' ParentColor = False end object Label6: TLabel Left = 158 Height = 14 Top = 32 Width = 18 Caption = 'DPI' ParentColor = False end object SpinEdit_resx: TSpinEdit Left = 80 Height = 21 Top = 0 Width = 67 MaxValue = 2400 MinValue = 10 TabOrder = 0 Value = 72 end object SpinEdit_resy: TSpinEdit Left = 80 Height = 21 Top = 28 Width = 67 MaxValue = 2400 MinValue = 10 TabOrder = 1 Value = 72 end end end optgeo-2.21/saisieray.lfm0000750000175000017500000004720012247333133015624 0ustar georgeskgeorgeskobject saisierayon: Tsaisierayon Left = 361 Height = 393 Top = 176 Width = 528 BorderIcons = [] BorderStyle = bsDialog Caption = 'Saisie d''un rayon' ClientHeight = 393 ClientWidth = 528 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0F0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F000 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F00000000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000F0000000000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000F000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000000000000FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF 0FFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF0 0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF0000 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000 FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFF00F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF FFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF00FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000000FFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFF00FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF00000000FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFF00F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF00000000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF FFFFFFFFFFF0FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000 000FFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFFFFF FFFFFF0FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00000000FF00000000FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFF00000000 FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF0000000FFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFF 0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF FFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0FFFF0FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFF FFFFFFFFFFF0FFF0FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF000FFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F00000000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 000000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000FFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF000000000000FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000 000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0000000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF0000000FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 105 Top = 0 Width = 161 Caption = 'Origine (point 1)' ClientHeight = 87 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 57 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 272 Height = 105 Top = 0 Width = 161 Caption = 'Extrémité (point 2)' ClientHeight = 87 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 57 Width = 97 TabOrder = 1 end end object radiocouleur: TRadioGroup Left = 8 Height = 137 Top = 112 Width = 129 AutoFill = True Caption = 'Couleur du rayon' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 119 ClientWidth = 125 ItemIndex = 0 Items.Strings = ( 'Rouge' 'Vert' 'Bleu' 'Lumière blanche' ) TabOrder = 2 end object GroupBox3: TGroupBox Left = 144 Height = 64 Top = 112 Width = 153 Caption = 'Epaisseur à l''écran' ClientHeight = 46 ClientWidth = 149 TabOrder = 3 object editepaisseur: TSpinEdit Left = 48 Height = 21 Top = 8 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 8 Height = 96 Top = 256 Width = 513 Caption = 'Tracer en pointillé le prolongement des différents segments du rayon' ClientHeight = 78 ClientWidth = 509 TabOrder = 4 object StaticText6: TLabel Left = 264 Height = 14 Top = 16 Width = 144 Caption = 'Liste des segments concernés' ParentColor = False end object StaticText7: TLabel Left = 264 Height = 14 Top = 32 Width = 227 Caption = '(entre parenthéses et séparés par des virgules' ParentColor = False end object StaticText8: TLabel Left = 264 Height = 14 Top = 48 Width = 176 Caption = 'et sans espaces); exemple: (1,4,10)' ParentColor = False end object StaticText9: TLabel Left = 16 Height = 14 Top = 16 Width = 61 Caption = 'Vers l''avant:' ParentColor = False end object StaticText10: TLabel Left = 16 Height = 14 Top = 48 Width = 65 Caption = 'Vers l''arrière:' ParentColor = False end object editvav: TEdit Left = 80 Height = 21 Top = 16 Width = 177 TabOrder = 0 end object editvaa: TEdit Left = 80 Height = 21 Top = 48 Width = 177 TabOrder = 1 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 360 Width = 513 Caption = 'Supprimer ce rayon' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 5 end object GroupBox5: TGroupBox Left = 144 Height = 64 Top = 184 Width = 153 Caption = 'Rayons enfants' ClientHeight = 46 ClientWidth = 149 TabOrder = 6 object StaticText5: TLabel Left = 8 Height = 14 Top = 8 Width = 83 Caption = 'Nombre maximal:' ParentColor = False end object Spinenfantmax: TSpinEdit Left = 96 Height = 21 Top = 8 Width = 41 MaxValue = 50 TabOrder = 0 Value = 10 end end object BitBtn2: TBitBtn Left = 440 Height = 102 Top = 3 Width = 76 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 7 end object BitBtn1: TBitBtn Left = 304 Height = 59 Top = 190 Width = 211 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 8 end object GroupBox6: TGroupBox Left = 307 Height = 60 Top = 112 Width = 204 Caption = 'Nombre max. de segments' ClientHeight = 42 ClientWidth = 200 TabOrder = 9 object StaticText11: TLabel Left = 8 Height = 14 Top = 8 Width = 83 Caption = 'Nombre maximal:' ParentColor = False end object Spinmaxsegment: TSpinEdit Left = 103 Height = 21 Top = 7 Width = 68 MaxValue = 500 MinValue = 1 TabOrder = 0 Value = 500 end end end optgeo-2.21/unit10.pas0000750000175000017500000001017112247333133014755 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit10; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisietexte2 } Tsaisietexte2 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; FontDialog1: TFontDialog; GroupBox1: TGroupBox; Edit1: TEdit; SpeedButton1: TSpeedButton; GroupBox2: TGroupBox; StaticText1: TLabel; editx: TEdit; StaticText2: TLabel; edity: TEdit; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisietexte2: Tsaisietexte2; fontetexte2:tfont; texteaafficher2:string; textex,textey:extended; implementation uses unit222; procedure Tsaisietexte2.SpeedButton1Click(Sender: TObject); begin if fontdialog1.Execute then fontetexte2:=fontdialog1.Font; end; procedure Tsaisietexte2.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure Tsaisietexte2.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIETEXTE2.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIETEXTE2.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeT9; CAPTION :=rsSaisirLeText; GROUPBOX1.CAPTION :=rsTexte; GROUPBOX2.CAPTION :=rsCoordonnEsDu2; LOG1.CAPTION // msgctxt ';TSAISIETEXTE2.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIETEXTE2.LOG2.CAPTION'; :=rsLog2; SPEEDBUTTON1.CAPTION :=rsPolice; STATICTEXT1.CAPTION // msgctxt ';TSAISIETEXTE2.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT2.CAPTION // msgctxt ';TSAISIETEXTE2.STATICTEXT2.CAPTION'; :=rsY; end; procedure Tsaisietexte2.BitBtn1Click(Sender: TObject); begin texteaafficher2:=edit1.Text; try textex:=strtofloat(editx.text); except application.messagebox(pchar(rsValeurIncorr), pchar(rsAttention), mb_ok); exit; end; try textey:=strtofloat(edity.text); except application.messagebox(pchar(rsValeurIncorr2), pchar(rsAttention), mb_ok); exit; end; retailleptexteaffiche(listetexteaffiche,nombretexte,nombretexte+1); inc(nombretexte); if not(listetexteaffiche[-1+nombretexte].create(texteaafficher2,fontetexte2.name, fontetexte2.charset,fontetexte2.color,fontetexte2.size,fontetexte2.pitch, (fsbold in fontetexte2.style),(fsitalic in fontetexte2.style), (fsunderline in fontetexte2.style),(fsstrikeout in fontetexte2.style), textex,textey)) then begin retailleptexteaffiche(listetexteaffiche,nombretexte,nombretexte-1); dec(nombretexte); application.messagebox(pchar(rsValeursNonAu), pchar(rsAttention3), mb_ok); end else self.modalresult:=mrok; Rafraichit; end; initialization {$i unit10.lrs} end. optgeo-2.21/saisiepri.pas0000750000175000017500000001755212247333133015637 0ustar georgeskgeorgeskunit saisiepri; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Buttons, ColorBox,unit222, LCLType,UnitScaleFont, UChaines; type { Tsaisieprisme } Tsaisieprisme = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; boutonsup: TBitBtn; colorgrid1: TColorBox; combomateriaux: TComboBox; editnbleu: TEdit; editnrouge: TEdit; editnvert: TEdit; Edit_hauteur: TEdit; Edit_anglepolaire: TEdit; Edit_angleausommet: TEdit; Edit_gy: TEdit; Edit_gx: TEdit; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; GroupBox5: TGroupBox; GroupBox6: TGroupBox; Image1: TImage; Label1: TLabel; Label2: TLabel; log2: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; log3: TLabel; log1: TLabel; radioentrant: TRadioGroup; radiosortant: TRadioGroup; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; StaticText7: TLabel; procedure BitBtn1Click(Sender: TObject); procedure combomateriauxChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { private encreation:boolean; declarations } public { public declarations } end; var saisieprisme: Tsaisieprisme; prisme_gx,prisme_gy,prisme_ax,prisme_ay,prisme_bx,prisme_by, prisme_angleausommet,prisme_anglepolaire,prisme_hauteur:extended; prisme_couleur:tcolor; tentr,tsort:treflechipolyhedre; nrouge,nbleu,nvert:extended; implementation { Tsaisieprisme } procedure Tsaisieprisme.BitBtn1Click(Sender: TObject); begin try prisme_gx:=strtofloat(edit_gx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce36), pchar(rsattention),mb_ok); exit; end; end; if ((prisme_gxxxmax)) then begin application.messagebox(pchar(rsValeurInacce36), pchar(rsattention),mb_ok); exit; end; try prisme_gy:=strtofloat(edit_gy.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce37), pchar(rsattention),mb_ok); exit; end; end; if ((prisme_gyxxmax)) then begin application.messagebox(pchar(rsValeurInacce37), pchar(rsattention),mb_ok); exit; end; try prisme_angleausommet:=strtofloat(edit_angleausommet.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce38), pchar(rsattention),mb_ok); exit; end; end; try prisme_anglepolaire:=strtofloat(edit_anglepolaire.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce39), pchar(rsattention),mb_ok); exit; end; end; try prisme_hauteur:=strtofloat(edit_hauteur.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce36), pchar(rsattention),mb_ok); exit; end; end; if ((prisme_hauteur<0) or (prisme_hauteur>xxmax)) then begin application.messagebox(pchar(rsValeurInacce40), pchar(rsattention),mb_ok); exit; end; prisme_couleur:=colorgrid1.Selected; case radioentrant.ItemIndex of 0: tentr:=toujoursreflechi; 1: tentr:=jamaisreflechi; 2: tentr:=reflechisirefracte; 3: tentr:=reflechisipasrefracte; end; case radiosortant.ItemIndex of 0: tsort:=toujoursreflechi; 1: tsort:=jamaisreflechi; 2: tsort:=reflechisirefracte; 3: tsort:=reflechisipasrefracte; end; try nrouge:=strtofloat(editnrouge.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce4), pchar(rsattention),mb_ok); exit; end; end; try nvert:=strtofloat(editnvert.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce5), pchar(rsattention),mb_ok); exit; end; end; try nbleu:=strtofloat(editnbleu.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce6), pchar(rsattention),mb_ok); exit; end; end; prisme_ax:=prisme_gx+prisme_hauteur*2/3*cos(prisme_anglepolaire); prisme_ay:=prisme_gy+prisme_hauteur*2/3*sin(prisme_anglepolaire); prisme_bx:=prisme_ax+prisme_hauteur/cos(prisme_angleausommet/2)* cos(prisme_anglepolaire+pi-prisme_angleausommet/2); prisme_by:=prisme_ay+prisme_hauteur/cos(prisme_angleausommet/2)* sin(prisme_anglepolaire+pi-prisme_angleausommet/2); ReTaillePprisme(Listeprisme,nombreprisme,nombreprisme+1); inc(nombreprisme); if not (Listeprisme[-1+nombreprisme].create(prisme_gx,prisme_gy, prisme_ax,prisme_ay,prisme_bx,prisme_by,nrouge,nbleu,nvert,clblack,colorgrid1.selected, tentr,tsort)) then begin ReTaillePprisme(Listeprisme,nombreprisme,nombreprisme-1); dec(nombreprisme); application.messagebox(pchar(rsPointsAberra), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisieprisme.combomateriauxChange(Sender: TObject); begin if combomateriaux.itemindex=0 then exit; editnrouge.text:=listenrouge.strings[combomateriaux.itemindex]; editnvert.text:=listenvert.strings[combomateriaux.itemindex]; editnbleu.text:=listenbleu.strings[combomateriaux.itemindex]; end; procedure Tsaisieprisme.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEPRISME.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEPRISME.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeP2; CAPTION :=rsAjoutDUnPris; if decimalseparator=',' then EDITNBLEU.TEXT :=rs17 else EDITNBLEU.TEXT :=rs17b; if decimalseparator=',' then EDITNROUGE.TEXT :=rs15 else EDITNROUGE.TEXT :=rs15b; if decimalseparator=',' then EDITNVERT.TEXT :=rs16 else EDITNVERT.TEXT :=rs16b; GROUPBOX1.CAPTION :=rsCentreDInert; GROUPBOX2.CAPTION :=rsAngleAuSomme; GROUPBOX3.CAPTION :=rsAnglePolaire3; GROUPBOX4.CAPTION :=rsHauteur; GROUPBOX5.CAPTION :=rsCouleurDuPri; GROUPBOX6.CAPTION // msgctxt ';TSAISIEPRISME.GROUPBOX6.CAPTION'; :=rsIndiceDeRFra; LABEL1.CAPTION // msgctxt ';TSAISIEPRISME.LABEL1.CAPTION'; :=rsX; LABEL2.CAPTION // msgctxt ';TSAISIEPRISME.LABEL2.CAPTION'; :=rsY; LABEL4.CAPTION :=rsA2; LABEL5.CAPTION // msgctxt ';TSAISIEPRISME.LABEL5.CAPTION'; :=rsT; LABEL6.CAPTION :=rsHauteur2; LABEL7.CAPTION // msgctxt ';TSAISIEPRISME.LABEL7.CAPTION'; :=rsRad; LABEL8.CAPTION // msgctxt ';TSAISIEPRISME.LABEL8.CAPTION'; :=rsRad; LABEL9.CAPTION :=rsCouleur; LOG1.CAPTION // msgctxt ';TSAISIEPRISME.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEPRISME.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEPRISME.LOG3.CAPTION'; :=rsLog3; RADIOENTRANT.CAPTION // msgctxt ';TSAISIEPRISME.RADIOENTRANT.CAPTION'; :=rsRayonRFlChiS; RADIOSORTANT.CAPTION // msgctxt ';TSAISIEPRISME.RADIOSORTANT.CAPTION'; :=rsRayonRFlChiS2; STATICTEXT2.CAPTION // msgctxt ';TSAISIEPRISME.STATICTEXT2.CAPTION'; :=rsPourLeRouge; STATICTEXT3.CAPTION // msgctxt ';TSAISIEPRISME.STATICTEXT3.CAPTION'; :=rsPourLeVert; STATICTEXT4.CAPTION // msgctxt ';TSAISIEPRISME.STATICTEXT4.CAPTION'; :=rsPourLeBleu; STATICTEXT7.CAPTION // msgctxt ';TSAISIEPRISME.STATICTEXT7.CAPTION'; :=rsMatRiau; radiosortant.Items[0]:=rsToujours; radiosortant.Items[1]:=rsJamais; radiosortant.Items[2]:=rsSeulementSiL; radiosortant.Items[3]:=rsSeulementSiL4; radioentrant.Items[0]:=rsToujours; radioentrant.Items[1]:=rsJamais; radioentrant.Items[2]:=rsSeulementSiL; radioentrant.Items[3]:=rsSeulementSiL5; end; procedure Tsaisieprisme.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$I saisiepri.lrs} end. optgeo-2.21/definitions.pas0000750000175000017500000000057012247333133016152 0ustar georgeskgeorgeskunit Definitions; {$mode objfpc}{$H+} interface uses Classes, SysUtils; const maxsommet=500; type PointPolyhedre=object ax,ay:extended; end; TableauPointPolyhedre=array[1..maxsommet+1] of pointpolyhedre; TableauRectiligne=array[1..maxsommet+1] of boolean; sommetsreels=array[1..maxsommet+1] of extended; implementation end. optgeo-2.21/saisiefant.pas0000750000175000017500000000505112247333133015764 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiefant; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,unit222, LResources,UnitScaleFont; type { Tsaisiefantomes } Tsaisiefantomes = class(TForm) BitBtn1: TBitBtn; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; cochefantomes: TCheckBox; StaticText5: TLabel; StaticText6: TLabel; editfantomes: TEdit; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiefantomes: Tsaisiefantomes; implementation procedure Tsaisiefantomes.BitBtn1Click(Sender: TObject); var i:integer; begin fantomespresents:=cochefantomes.checked; listefantomes:=editfantomes.text; if fantomespresents then for i:=1 to maxtotalsegment do fantomes[i]:=(pos(','+inttostr(i)+',',listefantomes)<>0) or (pos('('+inttostr(i)+',',listefantomes)<>0) or (pos(','+inttostr(i)+')',listefantomes)<>0) or (pos('('+inttostr(i)+')',listefantomes)<>0); end; procedure Tsaisiefantomes.FormCreate(Sender: TObject); begin encreation:=true; end; procedure Tsaisiefantomes.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiefant.lrs} end. optgeo-2.21/Unit18.lfm0000750000175000017500000000237012247333133014722 0ustar georgeskgeorgeskobject saisiecouleurrayondefaut: Tsaisiecouleurrayondefaut Left = 200 Height = 137 Top = 108 Width = 222 BorderIcons = [] BorderStyle = bsDialog Caption = 'Couleur par défaut' ClientHeight = 137 ClientWidth = 222 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object RadioGroup1: TRadioGroup Left = 16 Height = 121 Top = 8 Width = 113 AutoFill = True Caption = 'Couleur' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 103 ClientWidth = 109 ItemIndex = 0 Items.Strings = ( 'Rouge' 'Vert' 'Bleu' 'Blanc' ) TabOrder = 0 end object BitBtn1: TBitBtn Left = 143 Height = 121 Top = 8 Width = 72 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 1 end end optgeo-2.21/Unit3.lfm0000750000175000017500000000615412247333133014640 0ustar georgeskgeorgeskobject proprietespoints: Tproprietespoints Left = 200 Height = 311 Top = 108 Width = 323 BorderIcons = [] BorderStyle = bsDialog Caption = 'Propriétés des points' ClientHeight = 311 ClientWidth = 323 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object RadioGroup1: TRadioGroup Left = 16 Height = 129 Top = 8 Width = 137 AutoFill = True Caption = 'Style des points' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 TabOrder = 0 end object radiocroixx: TRadioButton Left = 24 Height = 17 Top = 32 Width = 85 Caption = 'Croix oblique' TabOrder = 1 end object radiocroixp: TRadioButton Left = 24 Height = 17 Top = 56 Width = 76 Caption = 'Croix droite' TabOrder = 2 end object radiodisque: TRadioButton Left = 24 Height = 17 Top = 80 Width = 52 Caption = 'Disque' TabOrder = 3 end object GroupBox1: TGroupBox Left = 176 Height = 65 Top = 8 Width = 129 Caption = 'Taille des points' ClientHeight = 47 ClientWidth = 125 TabOrder = 4 object editeurtaillepoints: TSpinEdit Left = 24 Height = 21 Top = 16 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox2: TGroupBox Left = 16 Height = 137 Top = 152 Width = 137 Caption = 'Couleur des points' ClientHeight = 119 ClientWidth = 133 TabOrder = 5 object ColorGrid1: TColorBox Left = 20 Height = 22 Top = 36 Width = 83 ItemHeight = 16 TabOrder = 0 end end object radiocercle: TRadioButton Left = 24 Height = 17 Top = 104 Width = 50 Caption = 'Cercle' TabOrder = 6 end object GroupBox3: TGroupBox Left = 176 Height = 57 Top = 80 Width = 128 Caption = 'Point courant' ClientHeight = 39 ClientWidth = 124 TabOrder = 7 object casereperer: TCheckBox Left = 16 Height = 17 Top = 8 Width = 59 Caption = 'Repérer' TabOrder = 0 end end object GroupBox4: TGroupBox Left = 176 Height = 65 Top = 152 Width = 128 Caption = 'Grille de repérage' ClientHeight = 47 ClientWidth = 124 TabOrder = 8 object cochetracergrille: TCheckBox Left = 16 Height = 17 Top = 16 Width = 51 Caption = 'Tracer' TabOrder = 0 end end object BitBtn1: TBitBtn Left = 176 Height = 63 Top = 225 Width = 128 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 TabOrder = 9 end end optgeo-2.21/saisiemscepa.pas0000750000175000017500000001660212247333133016310 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiemscepa; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiemiroirscepa } Tsaisiemiroirscepa = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; gridaxe: TColorBox; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; GroupBox3: TGroupBox; GroupBox4: TGroupBox; editepaisseur: TSpinEdit; GroupBox5: TGroupBox; cochehachures: TCheckBox; cocheaxe: TCheckBox; GroupBox6: TGroupBox; StaticText5: TLabel; editfocale: TEdit; GroupBox7: TGroupBox; boutonsup: TBitBtn; GroupBox8: TGroupBox; checktrou: TCheckBox; StaticText6: TLabel; editdiametretrou: TEdit; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; log6: TLabel; procedure BitBtn1Click(Sender: TObject); procedure checktrouClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiemiroirscepa: Tsaisiemiroirscepa; mscepa_hachures,mscepa_axe,mscepa_trou:boolean; mscepa_epaisseur:integer; mscepa_couleur,mscepa_couleuraxe:tcolor; mscepa_x1,mscepa_x2,mscepa_y1,mscepa_y2,mscepa_focale,mscepa_diametretrou:extended; implementation uses unit222; procedure Tsaisiemiroirscepa.BitBtn1Click(Sender: TObject); begin mscepa_hachures:=cochehachures.Checked; mscepa_trou:=checktrou.checked; mscepa_axe:=cocheaxe.Checked; mscepa_epaisseur:=editepaisseur.Value; mscepa_couleur:=colorgrid1.selected; mscepa_couleuraxe:=gridaxe.selected; if mscepa_trou then try mscepa_diametretrou:=strtofloat(editdiametretrou.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce32), pchar(rsattention),mb_ok); exit; end; end; if not(mscepa_trou) then mscepa_diametretrou:=0; try mscepa_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; try mscepa_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; try mscepa_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; try mscepa_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; try mscepa_focale:=strtofloat(editfocale.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce24), pchar(rsattention),mb_ok); exit; end; end; if (mscepa_focale=0) then begin application.messagebox(pchar(rsLaFocaleDoit), pchar(rsattention),mb_ok); exit; end; mscepa_focale:=abs(mscepa_focale); ReTaillePMscepa(ListeMscepa,nombreMscepa,nombreMscepa+1); inc(nombremscepa); if not (listemscepa[-1+nombremscepa].create2(mscepa_x1,mscepa_y1,mscepa_x2,mscepa_y2, mscepa_focale,mscepa_epaisseur, mscepa_couleur,mscepa_couleuraxe,mscepa_hachures,mscepa_axe, mscepa_trou,mscepa_diametretrou)) then begin ReTaillePMscepa(ListeMscepa,nombreMscepa,nombreMscepa-1); dec(nombremscepa); application.messagebox(pchar(rsTailleDuMiro2), pchar(rsattention),mb_ok); end else self.modalresult:=mrok; Rafraichit; end; procedure Tsaisiemiroirscepa.checktrouClick(Sender: TObject); begin editdiametretrou.enabled:=checktrou.checked; end; procedure Tsaisiemiroirscepa.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.BOUTONSUP.CAPTION'; :=rsSupprimerCeM; CAPTION :=rsAjoutDUnMiro9; CHECKTROU.CAPTION :=rsTrouer; COCHEAXE.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.COCHEAXE.CAPTION'; :=rsAxeOptique; COCHEHACHURES.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.COCHEHACHURES.CAPTION'; :=rsHachures; GROUPBOX1.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.GROUPBOX1.CAPTION'; :=rsPoint1; GROUPBOX2.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.GROUPBOX2.CAPTION'; :=rsPoint2; GROUPBOX3.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.GROUPBOX3.CAPTION'; :=rsCouleurDuMir; GROUPBOX4.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.GROUPBOX4.CAPTION'; :=rsEpaisseurTra6; GROUPBOX5.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.GROUPBOX5.CAPTION'; :=rsAspect; GROUPBOX6.CAPTION :=rsFocale; GROUPBOX7.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.GROUPBOX7.CAPTION'; :=rsCouleurDeLAx4; GROUPBOX8.CAPTION :=rsTrouerLeMiro; LOG1.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.LOG4.CAPTION'; :=rsLog4; LOG5.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.LOG5.CAPTION'; :=rsLog5; LOG6.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.LOG6.CAPTION'; :=rsLog6; STATICTEXT1.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT2.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.STATICTEXT4.CAPTION'; :=rsY; STATICTEXT5.CAPTION // msgctxt ';TSAISIEMIROIRSCEPA.STATICTEXT5.CAPTION'; :=rsF; STATICTEXT6.CAPTION :=rsDiamTreDuTro; end; procedure Tsaisiemiroirscepa.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiemscepa.lrs} end. optgeo-2.21/saisienor.pas0000750000175000017500000000614112247333133015633 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisienor; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Colorbox, Spin,unit222, LResources,UnitScaleFont, UChaines; type { Tsaisienormale } Tsaisienormale = class(TForm) BitBtn1: TBitBtn; GroupBox1: TGroupBox; checknormale: TCheckBox; GroupBox2: TGroupBox; spinepaisseur: TSpinEdit; GroupBox3: TGroupBox; ColorGrid1: TColorBox; GroupBox4: TGroupBox; spinpourcentage: TSpinEdit; GroupBox5: TGroupBox; checkangles: TCheckBox; spindecimalesangles: TSpinEdit; StaticText1: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisienormale: Tsaisienormale; implementation procedure Tsaisienormale.BitBtn1Click(Sender: TObject); begin pourcentagenormale:=spinpourcentage.value/100; couleurnormale:=colorgrid1.selected; optionnormale:=checknormale.checked; epaisseurnormale:=spinepaisseur.value; optionangles:=checkangles.checked; if optionangles then optionnormale:=true; decimalesangles:=spindecimalesangles.value; end; procedure Tsaisienormale.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIENORMALE.BITBTN1.CAPTION'; :=rsOK; CAPTION :=rsOptionsPourL; CHECKANGLES.CAPTION // msgctxt ';TSAISIENORMALE.CHECKANGLES.CAPTION'; :=rsAfficher2; CHECKNORMALE.CAPTION :=rsTracer; GROUPBOX1.CAPTION :=rsTracerLesNor; GROUPBOX2.CAPTION :=rsEpaisseurDeL; GROUPBOX3.CAPTION :=rsCouleurDeLaT; GROUPBOX4.CAPTION :=rsLongueurTrac; GROUPBOX5.CAPTION :=rsAfficherVale; STATICTEXT1.CAPTION :=rsNombreDeDCim; end; procedure Tsaisienormale.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisienor.lrs} end. optgeo-2.21/unit14.lfm0000750000175000017500000004214712247333133014764 0ustar georgeskgeorgeskobject saisieangle: Tsaisieangle Left = 256 Height = 368 Top = 128 Width = 323 BorderIcons = [] BorderStyle = bsDialog Caption = 'Modification d''une mesure d''angle' ClientHeight = 368 ClientWidth = 323 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 209 Height = 105 Top = 8 Width = 105 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF0 000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFF00FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF00FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFF00FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF00 FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF0000FFF00FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00 000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFF00FF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00FFF000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFF00FFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF000FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF0 0FFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF0000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFF00FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF FFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFF000FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFF00FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF 00FFFFFFFFFFFFFF0FF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFF00FFF000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFF00FFFFFFFFFFFFF0FFFFF0000FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF FFFFFFF0FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF00FFFFFFFF000FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFF00FFFFFFFFFFF0FFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF0FF FFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF00FFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF F00FFFFFFFF00FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF00FFFFFFFFFFFF FFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFF00FFFF000FFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFF0 0FFFFFF000FF00FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFF0FFF00FFFFFFFFFFFF F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00000FFFFFFF0FFFF0FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF0F FFF00FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF0FFFF0F0FFFFFFFFFFFFFFF000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF00FFFFFFFFFF0FF0FF0FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF000FF0FF FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF FFFFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFF00FFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF000FFFFFFFFFFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFF 00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF00FFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0000FFFFFFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF00FFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000FFFFFF0000FFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 00FFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF000000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF00FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 8 Height = 105 Top = 104 Width = 193 Caption = 'Coordonnées du 1er point' ClientHeight = 87 ClientWidth = 189 TabOrder = 0 object StaticText1: TLabel Left = 16 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 16 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 144 Height = 14 Top = 24 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 144 Height = 14 Top = 56 Width = 21 Caption = 'log4' ParentColor = False end object editx1: TEdit Left = 32 Height = 21 Top = 24 Width = 105 TabOrder = 0 end object edity1: TEdit Left = 32 Height = 21 Top = 56 Width = 105 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 8 Height = 105 Top = 216 Width = 193 Caption = 'Coordonnées du 2nd point' ClientHeight = 87 ClientWidth = 189 TabOrder = 1 object StaticText3: TLabel Left = 16 Height = 14 Top = 32 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 16 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log5: TLabel Left = 144 Height = 14 Top = 32 Width = 21 Caption = 'log5' ParentColor = False end object log6: TLabel Left = 144 Height = 14 Top = 64 Width = 21 Caption = 'log6' ParentColor = False end object editx2: TEdit Left = 40 Height = 21 Top = 25 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 40 Height = 21 Top = 57 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 8 Height = 33 Top = 328 Width = 305 Caption = 'Supprimer cet angle' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 2 end object GroupBox3: TGroupBox Left = 8 Height = 89 Top = 8 Width = 193 Caption = 'Coordonnées de C' ClientHeight = 71 ClientWidth = 189 TabOrder = 3 object StaticText5: TLabel Left = 16 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 16 Height = 14 Top = 47 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 144 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 144 Height = 14 Top = 48 Width = 21 Caption = 'log2' ParentColor = False end object editcx: TEdit Left = 32 Height = 21 Top = 9 Width = 105 TabOrder = 0 end object editcy: TEdit Left = 32 Height = 21 Top = 40 Width = 105 TabOrder = 1 end end object BitBtn1: TBitBtn Left = 208 Height = 130 Top = 121 Width = 103 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 4 end object BitBtn2: TBitBtn Left = 209 Height = 62 Top = 257 Width = 98 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 5 end end optgeo-2.21/Unit15.lfm0000750000175000017500000000237312247333133014722 0ustar georgeskgeorgeskobject saisiejoindre: Tsaisiejoindre Left = 200 Height = 96 Top = 108 Width = 317 BorderIcons = [] BorderStyle = bsDialog Caption = 'Relier les points' ClientHeight = 96 ClientWidth = 317 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object RadioGroup1: TRadioGroup Left = 8 Height = 89 Top = 0 Width = 193 AutoFill = True Caption = 'Joindre les points par:' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 71 ClientWidth = 189 ItemIndex = 0 Items.Strings = ( 'Un arc de cercle' 'Un segment de droite' ) TabOrder = 0 end object BitBtn1: TBitBtn Left = 216 Height = 80 Top = 8 Width = 90 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 1 end end optgeo-2.21/saisielmc.lfm0000750000175000017500000004425012247333133015606 0ustar georgeskgeorgeskobject saisielentillemc: Tsaisielentillemc Left = 256 Height = 352 Top = 138 Width = 535 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''une lentille mince convergente paraxiale' ClientHeight = 352 ClientWidth = 535 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFF0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000 00FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000F00FFFFFFFFFFF0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF000F0000FF00FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FF0000FF000FFFF FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000FFF0000FFF000FFFFFFFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F FFF0000FFFF000FFFFF0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF0000FFFFF00FFFFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFF000FFF000 00000FFF0000FFF000000000FFF0000FFF000000000FFF000FFF00000000FFF0 00FFF00000000FFF000000000000FFF000FFF00000000FFF0000FFF000000000 FFF0000FFF000000000FFF000FFF00000000FFF000FF000000000FFF0000FF0F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0FFFFFFFFFFF0000FF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFF 0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF0FFFFFFF0FFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF0FFF0000FF0F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFF0FFF0000FF000000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00FF0FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF00FFFFFF0000FFFFFF00FFF0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FF FFF0000FFFFF000FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFF0000FFFF000FFFFFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF000FFF0000FFF000FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FF0000F F000FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F0000F000FFFFFFFFFFF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000000000FFFFFFF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFF F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFF000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 116 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 98 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 272 Height = 116 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 98 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 113 Top = 120 Width = 168 Caption = 'Couleur de la lentille' ClientHeight = 95 ClientWidth = 164 TabOrder = 2 object Colorgrid1: TColorBox Left = 22 Height = 22 Top = 32 Width = 80 ItemHeight = 16 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 0 Height = 65 Top = 248 Width = 169 Caption = 'Epaisseur trait à l''écran' ClientHeight = 47 ClientWidth = 165 TabOrder = 3 object editepaisseur: TSpinEdit Left = 40 Height = 21 Top = 16 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox5: TGroupBox Left = 176 Height = 65 Top = 248 Width = 177 Caption = 'Aspect' ClientHeight = 47 ClientWidth = 173 TabOrder = 4 object cocheaxe: TCheckBox Left = 16 Height = 17 Top = 16 Width = 78 Caption = 'Axe optique' Checked = True State = cbChecked TabOrder = 0 end end object GroupBox6: TGroupBox Left = 360 Height = 65 Top = 120 Width = 168 Caption = 'Focale (valeur absolue)' ClientHeight = 47 ClientWidth = 164 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 16 Width = 21 Caption = '|f|=' ParentColor = False end object log5: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log5' ParentColor = False end object editfocale: TEdit Left = 24 Height = 21 Top = 16 Width = 89 TabOrder = 0 end end object GroupBox7: TGroupBox Left = 184 Height = 113 Top = 120 Width = 169 Caption = 'Couleur de l''axe optique' ClientHeight = 95 ClientWidth = 165 TabOrder = 6 object gridaxe: TColorBox Left = 19 Height = 22 Top = 32 Width = 89 ItemHeight = 16 TabOrder = 0 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 320 Width = 521 Caption = 'Supprimer cette lentille' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 7 end object BitBtn1: TBitBtn Left = 360 Height = 73 Top = 192 Width = 166 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 8 end object BitBtn2: TBitBtn Left = 360 Height = 43 Top = 272 Width = 169 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 9 end end optgeo-2.21/saisienor.lfm0000750000175000017500000000542512247333133015632 0ustar georgeskgeorgeskobject saisienormale: Tsaisienormale Left = 200 Height = 305 Top = 108 Width = 498 BorderIcons = [] BorderStyle = bsDialog Caption = 'Options pour le tracé des normales aux dioptres et miroirs' ClientHeight = 305 ClientWidth = 498 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object GroupBox1: TGroupBox Left = 184 Height = 89 Top = 0 Width = 193 Caption = 'Tracer les normales' ClientHeight = 71 ClientWidth = 189 TabOrder = 0 object checknormale: TCheckBox Left = 46 Height = 17 Top = 24 Width = 51 Caption = 'Tracer' TabOrder = 0 end end object GroupBox2: TGroupBox Left = 184 Height = 73 Top = 96 Width = 193 Caption = 'Epaisseur de la trace' ClientHeight = 55 ClientWidth = 189 TabOrder = 1 object spinepaisseur: TSpinEdit Left = 32 Height = 21 Top = 16 Width = 41 MaxValue = 10 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 169 Top = 0 Width = 169 Caption = 'Couleur de la trace' ClientHeight = 151 ClientWidth = 165 TabOrder = 2 object ColorGrid1: TColorBox Left = 16 Height = 22 Top = 40 Width = 123 ItemHeight = 16 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 8 Height = 65 Top = 232 Width = 369 Caption = 'Longueur trace (en % de la diagonale de l''espace de travail)' ClientHeight = 47 ClientWidth = 365 TabOrder = 3 object spinpourcentage: TSpinEdit Left = 104 Height = 21 Top = 8 Width = 41 MinValue = 1 TabOrder = 0 Value = 5 end end object GroupBox5: TGroupBox Left = 8 Height = 49 Top = 176 Width = 368 Caption = 'Afficher valeurs angles (en degrés)' ClientHeight = 31 ClientWidth = 364 TabOrder = 4 object StaticText1: TLabel Left = 88 Height = 14 Top = 8 Width = 106 Caption = 'Nombre de décimales:' ParentColor = False end object checkangles: TCheckBox Left = 16 Height = 17 Top = 5 Width = 58 Caption = 'Afficher' TabOrder = 0 end object spindecimalesangles: TSpinEdit Left = 208 Height = 21 Top = 1 Width = 41 MaxValue = 8 TabOrder = 1 end end object BitBtn1: TBitBtn Left = 392 Height = 288 Top = 9 Width = 94 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 5 end end optgeo-2.21/saisiecercle.pas0000750000175000017500000002301112247333133016265 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiecercle; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin, ExtCtrls,unit222,Unit8,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiepolycercle } Tsaisiepolycercle = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; ColorGrid1: TColorBox; RadioGroupaigu: TRadioGroup; radiosortant: TRadioGroup; radioentrant: TRadioGroup; GroupBox2: TGroupBox; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; editnrouge: TEdit; editnvert: TEdit; editnbleu: TEdit; ComboBox1: TComboBox; GroupBox3: TGroupBox; StaticText5: TLabel; StaticText6: TLabel; editx: TEdit; edity: TEdit; boutonsup: TBitBtn; radiorectiligne: TRadioGroup; radiorentrant: TRadioGroup; GroupBox1: TGroupBox; StaticText1: TLabel; editrayon: TEdit; GroupBox4: TGroupBox; log1: TLabel; log2: TLabel; log3: TLabel; StaticText7: TLabel; combomateriaux: TComboBox; procedure BitBtn1Click(Sender: TObject); procedure boutonsupClick(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure combomateriauxChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiepolycercle: Tsaisiepolycercle; oldindex:integer; nrouge,nvert,nbleu:extended; tentr,tsort:treflechipolyhedre; trigogo:boolean; implementation procedure Tsaisiepolycercle.BitBtn1Click(Sender: TObject); var dAB,dIS:extended; i:integer; begin try strtofloat(editx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce2), pchar(rsAttention), mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[combobox1.ItemIndex+1].ax:=strtofloat(editx.text); try strtofloat(edity.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce3), pchar(rsAttention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[combobox1.ItemIndex+1].ay:=strtofloat(edity.text); case radioentrant.ItemIndex of 0: tentr:=toujoursreflechi; 1: tentr:=jamaisreflechi; 2: tentr:=reflechisirefracte; 3: tentr:=reflechisipasrefracte; end; case radiosortant.ItemIndex of 0: tsort:=toujoursreflechi; 1: tsort:=jamaisreflechi; 2: tsort:=reflechisirefracte; 3: tsort:=reflechisipasrefracte; end; try nrouge:=strtofloat(editnrouge.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce4), pchar(rsAttention),mb_ok); exit; end; end; try nvert:=strtofloat(editnvert.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce5), pchar(rsAttention),mb_ok); exit; end; end; try nbleu:=strtofloat(editnbleu.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce6), pchar(rsAttention),mb_ok); exit; end; end; youri[combobox1.ItemIndex+1]:=(radiorectiligne.ItemIndex=0); helena[combobox1.ItemIndex+1]:=(radiorentrant.ItemIndex=0); tavarich[combobox1.ItemIndex+1]:=(radiogroupaigu.ItemIndex=0); if not(youri[combobox1.ItemIndex+1]) then begin try strtofloat(editrayon.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce7), pchar(rsAttention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; selene[combobox1.ItemIndex+1]:=abs(strtofloat(editrayon.text)); end; ttpoly[nbpoly+1].ax:=ttpoly[1].ax; ttpoly[nbpoly+1].ay:=ttpoly[1].ay; for i:=1 to nbpoly do begin ttsom[i].ax:=0; ttsom[i].ay:=0; end; for i:=1 to nbpoly do if not youri[i] then begin dAB:=sqrt(sqr(ttpoly[i+1].ax-ttpoly[i].ax)+sqr(ttpoly[i+1].ay-ttpoly[i].ay)); if dAB=0 then begin application.messagebox(pchar(rsDeuxSommetsC), pchar(rsAttention),mb_ok); exit; end; if tavarich[i] then dIS:=selene[i]-sqrt(abs(sqr(selene[i])-sqr(dAB/2))) else dIS:=selene[i]+sqrt(abs(sqr(selene[i])-sqr(dAB/2))); if not(helena[i]) then begin ttsom[i].ax:=(ttpoly[i+1].ay-ttpoly[i].ay)*dIS/dAB+(ttpoly[i+1].ax+ttpoly[i].ax)/2; ttsom[i].ay:=-(ttpoly[i+1].ax-ttpoly[i].ax)*dIS/dAB+(ttpoly[i+1].ay+ttpoly[i].ay)/2; end else begin ttsom[i].ax:=-(ttpoly[i+1].ay-ttpoly[i].ay)*dIS/dAB+(ttpoly[i+1].ax+ttpoly[i].ax)/2; ttsom[i].ay:=(ttpoly[i+1].ax-ttpoly[i].ax)*dIS/dAB+(ttpoly[i+1].ay+ttpoly[i].ay)/2; end; end; ReTaillePpolycercle(Listepolycercle,nombrepolycercle,nombrepolycercle+1); inc(nombrepolycercle); if not (Listepolycercle[-1+nombrepolycercle].create(nbpoly,ttpoly,ttsom, youri,nrouge,nbleu,nvert,clblack,colorgrid1.selected, tentr,tsort)) then begin ReTaillePpolycercle(Listepolycercle,nombrepolycercle,nombrepolycercle-1); dec(nombrepolycercle); application.messagebox(pchar(rsPointsAberra), pchar(rsAttention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisiepolycercle.boutonsupClick(Sender: TObject); begin end; procedure Tsaisiepolycercle.ComboBox1Change(Sender: TObject); begin try strtofloat(editx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce2), pchar(rsAttention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[oldindex+1].ax:=strtofloat(editx.text); try strtofloat(edity.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce3), pchar(rsAttention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; ttpoly[oldindex+1].ay:=strtofloat(edity.text); youri[oldindex+1]:=(radiorectiligne.ItemIndex=0); helena[oldindex+1]:=(radiorentrant.ItemIndex=0); tavarich[oldindex+1]:=(radiogroupaigu.ItemIndex=0); if not(youri[oldindex+1]) then begin try strtofloat(editrayon.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce7), pchar(rsAttention),mb_ok); ComboBox1.itemindex:=oldindex; exit; end; end; selene[oldindex+1]:=abs(strtofloat(editrayon.text)); end; editx.text:=floattostr(ttpoly[ComboBox1.itemindex+1].ax); edity.text:=floattostr(ttpoly[ComboBox1.itemindex+1].ay); if youri[ComboBox1.itemindex+1] then radiorectiligne.ItemIndex:=0 else radiorectiligne.ItemIndex:=1; if helena[ComboBox1.itemindex+1] then radiorentrant.ItemIndex:=0 else radiorentrant.ItemIndex:=1; if tavarich[ComboBox1.itemindex+1] then radiogroupaigu.ItemIndex:=0 else radiogroupaigu.ItemIndex:=1; editrayon.text:=floattostr(selene[ComboBox1.itemindex+1]); oldindex:=ComboBox1.itemindex; end; procedure Tsaisiepolycercle.combomateriauxChange(Sender: TObject); begin if combomateriaux.itemindex=0 then exit; editnrouge.text:=listenrouge.strings[combomateriaux.itemindex]; editnvert.text:=listenvert.strings[combomateriaux.itemindex]; editnbleu.text:=listenbleu.strings[combomateriaux.itemindex]; end; procedure Tsaisiepolycercle.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; BITBTN2.CAPTION:=rsAnnuler; BOUTONSUP.CAPTION:=rsSupprimerCeP; CAPTION:=rsPropriTSDeCe2; GROUPBOX1.CAPTION:=rsSonRayonDeCo; GROUPBOX2.CAPTION:=rsIndiceDeRFra; GROUPBOX3.CAPTION:=rsCoordonnEsDe2; GROUPBOX4.CAPTION:=rsCouleurLCran2; LOG1.CAPTION:=rsLog1; LOG2.CAPTION:=rsLog2; LOG3.CAPTION:=rsLog3; RADIOENTRANT.CAPTION:=rsRayonRFlChiS; RADIOENTRANT.Items[0]:=rsToujours; RADIOENTRANT.Items[1]:=rsJamais; RADIOENTRANT.Items[2]:=rsSeulementSiL; RADIOENTRANT.Items[3]:=rsSeulementSiL2; RADIORECTILIGNE.CAPTION:=rsCeSommetEstR; RADIORECTILIGNE.Items[0]:=rsUnSegmentDeD; RADIORECTILIGNE.Items[1]:=rsUnArcDeCercl; RADIORENTRANT.CAPTION:=rsCetArcDeCerc; RADIORENTRANT.Items[0]:=rsRentrant; RADIORENTRANT.Items[1]:=rsSortant; RADIOSORTANT.CAPTION:=rsRayonRFlChiS2; RADIOSORTANT.Items[0]:=rsToujours; RADIOSORTANT.Items[1]:=rsJamais; RADIOSORTANT.Items[2]:=rsSeulementSiL; RADIOSORTANT.Items[3]:=rsSeulementSiL3; STATICTEXT1.CAPTION:=rsRi; STATICTEXT2.CAPTION:=rsPourLeRouge; STATICTEXT3.CAPTION:=rsPourLeVert; STATICTEXT4.CAPTION:=rsPourLeBleu; STATICTEXT5.CAPTION:=rsX; STATICTEXT6.CAPTION:=rsY; STATICTEXT7.CAPTION:=rsMatRiau; end; procedure Tsaisiepolycercle.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiecercle.lrs} end. optgeo-2.21/saisiemscere.lfm0000750000175000017500000004733412247333133016317 0ustar georgeskgeorgeskobject saisiemiroirscere: Tsaisiemiroirscere Left = 304 Height = 454 Top = 135 Width = 452 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un miroir sphérique convexe réel' ClientHeight = 454 ClientWidth = 452 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0FFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF00000 000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0FFFFFFFFFF00F00000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFF00FFFF0000000F FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFF00FFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0FFFFFFF F00FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF00FFFFFF0000000000FFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0FFFFFFFF0FFFFF0000FFF000000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF00 00FFFFF00000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFF000000FFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00FFFFFFFF0000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 0000000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF000000FFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0000FFFFF00000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000 0FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF000FFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F00000F00000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF00000FFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF0000FFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFF 00000FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00000000000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFF0000FFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000FFFFFF00000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF00000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFFF0FFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFF FFFFFFF000000000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFF00000FF00000FFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF0 FFFFFFFFFFFFFFFFFFFFF000FFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF000 0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFF FFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFF FFFFFF00000000000FFFFFFF0000FFFFFFFFFFFFFF0FFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF00000000000FFFFFFF 0000FFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFF0FFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000FFFFFFF0000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFF FFFFFFFFF0FFFFFFFFFFFFFFF00000000000FFFF0000000FFFF00000000000FF FF000000FFF00000000000000FFFFFFF0000FFFFFFFFFFFFF0FFFFFFFFFFFFFF F00000000000FFFF0000000FFFF00000000000FFFF000000FFF0000000000000 0FFFFFFF0000FFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFF F0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFFF0FFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF 0000FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF00000000000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 FFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000FFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF000000000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFF00000FFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF00000FF00000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00000FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00000FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000FFFF00000FFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFF00000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF000 000FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFF0000FFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000FFF00000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F00000FFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF00FFFFF00000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFF F000000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF000000FFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF00FFF00000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFF00FFFFF000F00000FFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0FFFFFFFFFFFFFFFF000FFFFF00000000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF000 FFFF00000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF000FF00000000FFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F FFFFFFFFFFFFFFF00F0000000FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF0000000F FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF0FFFFFFFFFFFFF00000FFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0FFF0FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 129 Top = 0 Width = 169 Caption = 'Point 1' ClientHeight = 111 ClientWidth = 165 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 280 Height = 112 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 94 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 97 Top = 136 Width = 129 Caption = 'Couleur du miroir' ClientHeight = 79 ClientWidth = 125 TabOrder = 2 object Colorgrid1: TColorBox Left = 12 Height = 22 Top = 20 Width = 84 ItemHeight = 16 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 8 Height = 80 Top = 240 Width = 184 Caption = 'Epaisseur trait à l''écran' ClientHeight = 62 ClientWidth = 180 TabOrder = 3 object editepaisseur: TSpinEdit Left = 40 Height = 21 Top = 24 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox5: TGroupBox Left = 200 Height = 80 Top = 240 Width = 129 Caption = 'Aspect' ClientHeight = 62 ClientWidth = 125 TabOrder = 4 object cochehachures: TCheckBox Left = 16 Height = 17 Top = 16 Width = 65 Caption = 'Hachures' Checked = True State = cbChecked TabOrder = 0 end object cocheaxe: TCheckBox Left = 16 Height = 17 Top = 40 Width = 98 Caption = 'Axe de symétrie' Checked = True State = cbChecked TabOrder = 1 end end object GroupBox6: TGroupBox Left = 280 Height = 57 Top = 112 Width = 161 Caption = 'Rayon de courbure' ClientHeight = 39 ClientWidth = 157 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 16 Width = 16 Caption = 'R=' ParentColor = False end object log5: TLabel Left = 120 Height = 14 Top = 16 Width = 21 Caption = 'log5' ParentColor = False end object editrayoncourbure: TEdit Left = 24 Height = 21 Top = 9 Width = 89 TabOrder = 0 end end object GroupBox7: TGroupBox Left = 144 Height = 97 Top = 136 Width = 129 Caption = 'Couleur de l''axe' ClientHeight = 79 ClientWidth = 125 TabOrder = 6 object gridaxe: TColorBox Left = 16 Height = 22 Top = 20 Width = 102 ItemHeight = 16 TabOrder = 0 end end object GroupBox8: TGroupBox Left = 280 Height = 40 Top = 176 Width = 161 Caption = 'Angle d''ouverture' ClientHeight = 22 ClientWidth = 157 TabOrder = 7 object Checkobtu: TCheckBox Left = 38 Height = 17 Top = 0 Width = 44 Caption = 'Obtu' TabOrder = 0 end end object boutonsup: TBitBtn Left = 8 Height = 41 Top = 408 Width = 433 Caption = 'Supprimer ce miroir' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 8 end object GroupBox9: TGroupBox Left = 8 Height = 72 Top = 328 Width = 433 Caption = 'Trouer le miroir en son centre' ClientHeight = 54 ClientWidth = 429 TabOrder = 9 object StaticText6: TLabel Left = 72 Height = 14 Top = 16 Width = 133 Caption = 'Diamètre angulaire du trou:' ParentColor = False end object StaticText7: TLabel Left = 72 Height = 14 Top = 32 Width = 110 Caption = '(vu depuis le centre C)' ParentColor = False end object StaticText8: TLabel Left = 396 Height = 14 Top = 19 Width = 17 Caption = 'rad' ParentColor = False end object cochetrou: TCheckBox Left = 8 Height = 17 Top = 16 Width = 52 Caption = 'Trouer' TabOrder = 0 end object editdiametretrou: TEdit Left = 222 Height = 21 Top = 12 Width = 169 TabOrder = 1 end end object BitBtn2: TBitBtn Left = 348 Height = 31 Top = 289 Width = 93 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 10 end object BitBtn1: TBitBtn Left = 344 Height = 57 Top = 224 Width = 97 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 11 end end optgeo-2.21/unit_indices_milieu_ambiant.pas0000750000175000017500000000552612247333133021361 0ustar georgeskgeorgeskunit Unit_indices_milieu_ambiant; {$mode objfpc} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons,{$ifdef windows}shellapi,windows,{$endif }LResources,UnitScaleFont, LazHelpHTML,UTF8Process,UChaines,Unit222,LCLType, Spin; type { Tsaisie_indices_milieu_ambiant } Tsaisie_indices_milieu_ambiant = class(TForm) BitBtn1: TBitBtn; Edit_indice_bleu_par_defaut: TEdit; Edit_indice_rouge_par_defaut: TEdit; Edit_indice_vert_par_defaut: TEdit; FloatSpinEditbleu: TFloatSpinEdit; FloatSpinEditrouge: TFloatSpinEdit; FloatSpinEditvert: TFloatSpinEdit; StaticText1: TStaticText; StaticText10: TStaticText; StaticText2: TStaticText; StaticText3: TLabel; StaticText4: TLabel; StaticText5: TLabel; StaticText6: TStaticText; StaticText7: TStaticText; StaticText8: TStaticText; StaticText9: TStaticText; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { private declarations } public { public declarations } end; var saisie_indices_milieu_ambiant: Tsaisie_indices_milieu_ambiant; implementation { Tsaisie_indices_milieu_ambiant } procedure Tsaisie_indices_milieu_ambiant.BitBtn1Click(Sender: TObject); begin try indice_vert_par_defaut:=abs(strtofloat(saisie_indices_milieu_ambiant.Edit_indice_vert_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal), mb_ok); indice_vert_par_defaut:=1; end; try indice_bleu_par_defaut:=abs(strtofloat(saisie_indices_milieu_ambiant.Edit_indice_bleu_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal2), mb_ok); indice_bleu_par_defaut:=1; end; try indice_rouge_par_defaut:=abs(strtofloat(saisie_indices_milieu_ambiant.Edit_indice_rouge_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal3), mb_ok); indice_rouge_par_defaut:=1; end; longueur_donde_red:=FloatSpinEditrouge.value*1e-9; longueur_donde_blue:=FloatSpinEditbleu.value*1e-9; longueur_donde_green:=FloatSpinEditvert.value*1e-9; end; procedure Tsaisie_indices_milieu_ambiant.FormCreate(Sender: TObject); begin encreation:=true; caption:=rsIndicesDuMil2; STATICTEXT3.CAPTION:=rsPourLeVert; STATICTEXT4.CAPTION:=rsPourLeRouge; STATICTEXT5.CAPTION:=rsPourLeBleu; STATICTEXT1.CAPTION:=rsLongueurDOnd; STATICTEXT2.CAPTION:=rsLongueurDOnd2; STATICTEXT6.CAPTION:=rsLongueurDOnd3; STATICTEXT7.CAPTION:=rsLesValeursDe; end; procedure Tsaisie_indices_milieu_ambiant.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$I unit_indices_milieu_ambiant.lrs} end. optgeo-2.21/Unit4.lfm0000750000175000017500000000664412247333133014645 0ustar georgeskgeorgeskobject Form4: TForm4 Left = 417 Height = 335 Top = 268 Width = 458 BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'A propos de ce logiciel' ClientHeight = 335 ClientWidth = 458 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.30' object GroupBox1: TGroupBox Left = 16 Height = 313 Top = 8 Width = 424 ClientHeight = 295 ClientWidth = 420 TabOrder = 0 object StaticText1: TLabel Left = 12 Height = 19 Top = 16 Width = 338 Caption = 'OptGeo, logiciel de simulation d''optique géométrique' Font.Color = clRed Font.Height = -15 Font.Style = [fsUnderline] ParentColor = False ParentFont = False end object StaticText2: TLabel Left = 42 Height = 14 Top = 40 Width = 256 Caption = 'à deux dimensions, libre et gratuit, sous license GPL.' Font.Color = clRed Font.Height = -11 ParentColor = False ParentFont = False end object StaticText3: TLabel Left = 59 Height = 14 Top = 64 Width = 224 Caption = 'Version 2.03 du 02/11/2010, écrite en Lazarus' ParentColor = False end object StaticText4: TLabel Left = 74 Height = 14 Top = 80 Width = 206 Caption = 'Copyright Jean-Marie Biansan, 2004, 2010' Font.Color = clBlue Font.Height = -11 ParentColor = False ParentFont = False end object StaticText5: TLabel Left = 100 Height = 14 Top = 128 Width = 131 Caption = 'jeanmarie.biansan@free.fr' Font.Color = clGreen Font.Height = -11 ParentColor = False ParentFont = False OnClick = StaticText5Click end object StaticText6: TLabel Left = 96 Height = 14 Top = 104 Width = 161 Caption = 'Pour toute remarque, cliquer sur:' ParentColor = False end object StaticText7: TLabel Left = 40 Height = 14 Top = 144 Width = 266 Caption = 'Vérifier que vous avez la dernière version ? Cliquer sur:' ParentColor = False end object StaticText8: TLabel Left = 120 Height = 14 Top = 160 Width = 98 Caption = 'Site Web de l''auteur' Font.Color = clRed Font.Height = -11 ParentColor = False ParentFont = False OnClick = StaticText8Click end object Label1: TLabel Left = 8 Height = 14 Top = 184 Width = 314 Caption = 'En cliquant sur le bouton "OK", vous déclarez accepter les termes' ParentColor = False end object Label2: TLabel Left = 96 Height = 14 Top = 200 Width = 104 Caption = 'de la license GNU GPL' ParentColor = False end object BitBtn1: TBitBtn Left = 10 Height = 56 Top = 225 Width = 120 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 0 end object BitBtn2: TBitBtn Left = 214 Height = 57 Top = 223 Width = 127 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 1 end end end optgeo-2.21/essai.txt0000750000175000017500000000000012247333133014763 0ustar georgeskgeorgeskoptgeo-2.21/Unit11.lfm0000750000175000017500000001144712247333133014720 0ustar georgeskgeorgeskobject saisieespacetravail: Tsaisieespacetravail Left = 339 Height = 432 Top = 108 Width = 368 BorderIcons = [] BorderStyle = bsDialog Caption = 'Dimensions de l''espace de travail' ClientHeight = 432 ClientWidth = 368 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object GroupBox1: TGroupBox Left = 8 Height = 57 Top = 56 Width = 177 Caption = 'Abscisse maximale' ClientHeight = 39 ClientWidth = 173 TabOrder = 0 object editxxmax: TEdit Left = 32 Height = 21 Top = 8 Width = 113 OnChange = editxxmaxChange TabOrder = 0 end end object GroupBox2: TGroupBox Left = 8 Height = 57 Top = 176 Width = 177 Caption = 'Ordonnées maximale' ClientHeight = 39 ClientWidth = 173 TabOrder = 1 object edityymax: TEdit Left = 32 Height = 21 Top = 8 Width = 113 OnChange = edityymaxChange TabOrder = 0 end end object GroupBox3: TGroupBox Left = 0 Height = 65 Top = 360 Width = 352 Caption = 'Repére orthonormé (approximativement)' ClientHeight = 47 ClientWidth = 348 TabOrder = 2 object StaticText1: TLabel Left = 16 Height = 14 Top = 64 Width = 241 Caption = 'Remarque: le non respect du rapport implique que' ParentColor = False end object StaticText2: TLabel Left = 16 Height = 14 Top = 80 Width = 204 Caption = 'les angles à l''écran ne sont pas respectés.' ParentColor = False end object cocherespect: TCheckBox Left = 16 Height = 17 Top = 16 Width = 247 Caption = 'Respecter le rapport hauteur/largeur de l''écran' Checked = True State = cbChecked TabOrder = 0 end end object rapporthl: TGroupBox Left = 0 Height = 97 Top = 256 Width = 353 Caption = 'Rapport hauteur/largeur' ClientHeight = 79 ClientWidth = 349 Color = clAqua ParentColor = False TabOrder = 3 object StaticText5: TLabel Left = 8 Height = 14 Top = 8 Width = 48 Caption = 'Rapport=' ParentColor = False end object statrapportactuel: TLabel Left = 62 Height = 14 Top = 8 Width = 25 Caption = ' ' ParentColor = False end object StaticText6: TLabel Left = 8 Height = 14 Top = 32 Width = 233 Caption = 'Rapport idéal (permettant d''occuper le maximum' ParentColor = False end object StaticText7: TLabel Left = 8 Height = 14 Top = 56 Width = 222 Caption = 'de surface d''écran avec repére orthonormé)=' ParentColor = False end object statrapportideal: TLabel Left = 235 Height = 14 Top = 56 Width = 28 Caption = ' ' ParentColor = False end end object radiounite: TRadioGroup Left = 192 Height = 185 Top = 0 Width = 161 AutoFill = True Caption = 'Unité de longueur' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 167 ClientWidth = 157 ItemIndex = 6 Items.Strings = ( 'km' 'hm' 'dam' 'm' 'dm' 'cm' 'mm' 'µm' '' ) TabOrder = 4 end object saisiexxmin: TGroupBox Left = 8 Height = 49 Top = 0 Width = 177 Caption = 'Abscisse minimale' ClientHeight = 31 ClientWidth = 173 TabOrder = 5 object editxxmin: TEdit Left = 32 Height = 21 Top = 0 Width = 113 OnChange = editxxminChange TabOrder = 0 Text = '0' end end object saisieyymin: TGroupBox Left = 8 Height = 49 Top = 120 Width = 177 Caption = 'Ordonnée minimale' ClientHeight = 31 ClientWidth = 173 TabOrder = 6 object edityymin: TEdit Left = 32 Height = 21 Top = 8 Width = 113 OnChange = edityyminChange TabOrder = 0 Text = '0' end end object BitBtn1: TBitBtn Left = 193 Height = 62 Top = 194 Width = 160 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 7 end end optgeo-2.21/optgeo.rc0000750000175000017500000000042412247333133014753 0ustar georgeskgeorgesk#define RT_MANIFEST 24 #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2 #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3 CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "optgeo.manifest" MAINICON ICON "optgeo.ico" optgeo-2.21/unitscalefont.pas0000750000175000017500000001427512247333133016524 0ustar georgeskgeorgeskunit UnitScaleFont; {redimensionne les tailles des polices entre les differentes plateformes; conditions d'utilisation: l'interface doit etre faite sous windows; la police de chaque form ne doit pas avoir d'attribus speciaux et doit etre "default"; la police de chaque controle est soit parenfont, soit la police "default" avec eventuellement leseul attribut fsbold} {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Menus, ExtCtrls, StdCtrls, Spin, Buttons, ComCtrls,LCLType; const ma_jolie_chaine='Ma jolie chaîne pour faire l''amélioration.'; taille_ma_jolie_chaine:array[0..200] of integer= (189,35,35,35,63,65,100,100,130,130,164,164,177,189,213,213,231,235,284,284,284,297,335,335,359,376,392,392,401,426,462,462,462,475,511,511,532,545,567,567,581,604,636,636,636,648,689,689,706,728,742,742,763,779,795,795,816,838,867,867,881,881,917,917,942,945,977,977,988,1011,1037,1037,1064,1064,1099,1099,1111,1139,1145,1145,1172,1176,1218,1218,1239,1239,1271,1271,1291,1309,1321,1321,1338,1367,1395,1395,1395,1412,1456,1456,1470,1483,1502,1502,1523,1540,1574,1574,1574,1590,1622,1622,1643,1649,1686,1686,1700,1712,1755,1755,1755,1765,1805,1805,1821,1821,1857,1857,1875,1885,1916,1916,1924,1944,1983,1983,1993,1993,2028,2028,2055,2072,2088,2088,2102,2117,2154,2154,2176,2176,2217,2217,2221,2250,2260,2260,2274,2298,2332,2332,2332,2348,2385,2385,2406,2417,2443,2443,2455,2474,2505,2505,2505,2534,2560,2560,2580,2600,2618,2618,2633,2651,2696,2696,2696,2704,2733,2733,2762,2762,2791,2791,2809,2831,2848,2848,2863,2886,2924,2924,2936); taille_ma_jolie_chaine_gras:array[0..200] of integer= (226,44,44,44,65,77,132,132,137,137,202,202,202,226,244,244,258,271,331,331,331,345,387,387,409,423,450,450,472,482,532,532,532,547,595,595,612,628,651,651,672,687,736,736,736,752,791,791,818,831,854,854,884,889,921,921,932,955,992,992,1021,1021,1058,1058,1081,1094,1122,1122,1139,1158,1198,1198,1223,1223,1262,1262,1276,1301,1327,1327,1344,1361,1403,1403,1426,1426,1464,1464,1483,1502,1531,1531,1544,1565,1609,1609,1609,1623,1671,1671,1684,1705,1726,1726,1744,1769,1811,1811,1811,1828,1875,1875,1891,1910,1935,1935,1948,1969,2010,2010,2010,2029,2075,2075,2095,2095,2139,2139,2152,2168,2203,2203,2216,2232,2284,2284,2297,2297,2345,2345,2356,2374,2407,2407,2418,2438,2480,2480,2501,2501,2544,2544,2563,2574,2611,2611,2628,2639,2680,2680,2680,2706,2748,2748,2765,2782,2807,2807,2827,2847,2891,2891,2891,2909,2945,2945,2965,2985,3011,3011,3029,3048,3093,3093,3093,3111,3151,3151,3173,3173,3218,3218,3234,3250,3274,3274,3292,3318,3359,3359,3372); var taille_ma_jolie_chaine_dans_ce_systeme,taille_ma_jolie_chaine_dans_ce_systeme_gras:array[0..200] of integer; tableau_correspondance_tailles_polices,tableau_correspondance_tailles_polices_gras:array[0..200] of integer; taille_dans_ce_systeme_qui_correspond_a_0_sous_windows,taille_dans_ce_systeme_qui_correspond_a_0_sous_windows_gras:integer; procedure ScaleFont(AFenetre : TForm); implementation Procedure Applique_A_Tous_LesControles( Aparent : TWinControl); Var AWinControl: TWinControl; I : Integer; Begin with AParent do for i := 0 to ControlCount - 1 do begin {on change la taille si parentfont est false} if not(TButton(controls[i]).parentfont) then begin if Controls[i].Font.height=0 then begin if (fsbold in Controls[i].Font.style) then begin Controls[i].Font.height:=taille_dans_ce_systeme_qui_correspond_a_0_sous_windows_gras; //application.messagebox(pchar(inttostr(Controls[i].font.height)), // pchar(inttostr(taille_dans_ce_systeme_qui_correspond_a_0_sous_windows_gras)),mb_ok); end else Controls[i].Font.height:=taille_dans_ce_systeme_qui_correspond_a_0_sous_windows; end else begin if (fsbold in Controls[i].Font.style) then begin Controls[i].font.height:=tableau_correspondance_tailles_polices_gras[abs(Controls[i].font.height)]; // application.messagebox(pchar(inttostr(Controls[i].font.height)), // pchar(inttostr(tableau_correspondance_tailles_polices_gras[abs(Controls[i].font.height)])),mb_ok); end else Controls[i].font.height:=tableau_correspondance_tailles_polices[abs(Controls[i].font.height)]; end; end; {et on applique aux enfants si c'est un twincontrol} if Controls[i] is TWinControl then begin AWinControl := TWinControl(Controls[i]); if AWinControl.ControlCount > 0 then Applique_A_Tous_LesControles(AWinControl); end; end; end; procedure ScaleFont(AFenetre : TForm); var i,j:integer; s_i:tspeedbutton; begin s_i:=tspeedbutton.create(afenetre); s_i.Parent:=afenetre; s_i.visible:=false; for i:=0 to 200 do begin s_i.canvas.font.height:=i; taille_ma_jolie_chaine_dans_ce_systeme[i]:= s_i.Canvas.TextWidth(ma_jolie_chaine); end; for i:=0 to 200 do begin s_i.canvas.font.height:=i; s_i.canvas.font.style:=[fsbold]; taille_ma_jolie_chaine_dans_ce_systeme_gras[i]:= s_i.Canvas.TextWidth(ma_jolie_chaine); end; s_i.Destroy; AFenetre.Font.height:=abs(AFenetre.Font.height); for i:=1 to 200 do begin j:=1; {on cherche l'indice des tailles encadrantes} while ((j<200) and (taille_ma_jolie_chaine_dans_ce_systeme[j]xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try mp_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((mp_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try mp_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((mp_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try mp_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((mp_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; ReTaillePlsr(Listelsr,nombrelsr,nombrelsr+1); inc(nombrelsr); if not (Listelsr[-1+nombrelsr].create(mp_x1,mp_y1,mp_x2,mp_y2, mp_epaisseurlsr, mp_couleurlsr)) then begin ReTaillePlsr(Listelsr,nombrelsr,nombrelsr-1); dec(nombrelsr); application.messagebox(pchar(rsTailleDuMiro2), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisielsr.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet4; CAPTION :=rsAjoutDUneLam2; GROUPBOX1.CAPTION :=rsCouleurLCran4; GROUPBOX3.CAPTION :=rsEpaisseurTra2; GROUPBOX4.CAPTION :=rsPoint1; GROUPBOX5.CAPTION :=rsPoint2; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; STATICTEXT1.CAPTION :=rsX; STATICTEXT2.CAPTION :=rsY; STATICTEXT3.CAPTION :=rsX; STATICTEXT4.CAPTION :=rsY; end; procedure Tsaisielsr.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisielamesr.lrs} end. optgeo-2.21/saisieoe.pas0000750000175000017500000001260212247333133015437 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisieoe; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, Colorbox, ExtCtrls, Buttons,unit222, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisieoeil } Tsaisieoeil = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; GroupBox3: TGroupBox; editepaisseur: TSpinEdit; GroupBox4: TGroupBox; StaticText1: TLabel; editx1: TEdit; StaticText2: TLabel; edity1: TEdit; GroupBox5: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisieoeil: Tsaisieoeil; mp_epaisseurecran:integer; mp_couleurecran:tcolor; mp_x1,mp_x2,mp_y1,mp_y2:extended; implementation procedure Tsaisieoeil.BitBtn1Click(Sender: TObject); begin mp_epaisseurecran:=editepaisseur.Value; mp_couleurecran:=colorgrid1.selected; try mp_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; if ((mp_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try mp_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((mp_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try mp_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((mp_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try mp_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((mp_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; ReTaillePOeil(ListeOeil,nombreOeil,nombreOeil+1); inc(nombreOeil); if not (ListeOeil[-1+nombreOeil].create(mp_x1,mp_y1,mp_x2,mp_y2, mp_epaisseurecran, mp_couleurecran)) then begin ReTaillePOeil(ListeOeil,nombreOeil,nombreOeil-1); dec(nombreOeil); application.messagebox(pchar(rsTailleDeLOei2), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisieoeil.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEOEIL.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEOEIL.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet6; CAPTION :=rsAjoutDUnOeil2; GROUPBOX1.CAPTION :=rsCouleurDeLOe; GROUPBOX3.CAPTION // msgctxt ';TSAISIEOEIL.GROUPBOX3.CAPTION'; :=rsEpaisseurTra10; GROUPBOX4.CAPTION // msgctxt ';TSAISIEOEIL.GROUPBOX4.CAPTION'; :=rsPoint1; GROUPBOX5.CAPTION // msgctxt ';TSAISIEOEIL.GROUPBOX5.CAPTION'; :=rsPoint2; LOG1.CAPTION // msgctxt ';TSAISIEOEIL.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEOEIL.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEOEIL.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIEOEIL.LOG4.CAPTION'; :=rsLog4; STATICTEXT1.CAPTION // msgctxt ';TSAISIEOEIL.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT2.CAPTION // msgctxt ';TSAISIEOEIL.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIEOEIL.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIEOEIL.STATICTEXT4.CAPTION'; :=rsY; end; procedure Tsaisieoeil.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisieoe.lrs} end. optgeo-2.21/unit_imp.lfm0000750000175000017500000001210512247333133015453 0ustar georgeskgeorgeskobject configimpression: Tconfigimpression Left = 725 Height = 502 Top = 136 Width = 441 ActiveControl = spinpourcentagehorizontal BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle Caption = 'Configuration de la page pour l''impression' ClientHeight = 502 ClientWidth = 441 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object GroupBox1: TGroupBox Left = 7 Height = 313 Top = 7 Width = 153 Caption = 'Position' ClientHeight = 295 ClientWidth = 149 TabOrder = 0 object radiogroupehorizontal: TRadioGroup Left = 20 Height = 126 Top = 14 Width = 111 AutoFill = True Caption = 'Horizontale' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 108 ClientWidth = 107 ItemIndex = 2 Items.Strings = ( 'Droite' 'Gauche' 'Centré' ) TabOrder = 0 end object RadioGroupevertical: TRadioGroup Left = 22 Height = 138 Top = 151 Width = 105 AutoFill = True Caption = 'Verticale' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 120 ClientWidth = 101 ItemIndex = 2 Items.Strings = ( 'Haut' 'Bas' 'Centré' ) TabOrder = 1 end end object GroupBox2: TGroupBox Left = 7 Height = 69 Top = 327 Width = 153 Caption = 'Nombre de copies' ClientHeight = 51 ClientWidth = 149 TabOrder = 1 object Label1: TLabel Left = 9 Height = 14 Top = 9 Width = 42 Caption = 'Nombre:' ParentColor = False end object Spinnombrecopies: TSpinEdit Left = 63 Height = 21 Top = 4 Width = 48 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox3: TGroupBox Left = 174 Height = 106 Top = 8 Width = 250 Caption = 'Taille (en % de la page)' ClientHeight = 88 ClientWidth = 246 TabOrder = 2 object Label2: TLabel Left = 7 Height = 14 Top = 7 Width = 79 Caption = 'Horizontalement' ParentColor = False end object Label3: TLabel Left = 16 Height = 14 Top = 41 Width = 66 Caption = 'Verticalement' ParentColor = False end object spinpourcentagehorizontal: TSpinEdit Left = 128 Height = 21 Top = 0 Width = 57 TabOrder = 0 Value = 100 end object spinpourcentagevertical: TSpinEdit Left = 128 Height = 21 Top = 38 Width = 57 TabOrder = 1 Value = 100 end end object RadioGrouporientation: TRadioGroup Left = 175 Height = 86 Top = 123 Width = 249 AutoFill = True Caption = 'Orientation' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 68 ClientWidth = 245 ItemIndex = 1 Items.Strings = ( 'Portrait' 'Paysage' ) TabOrder = 3 end object BitBtn1: TBitBtn Left = 174 Height = 188 Top = 304 Width = 254 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 4 end object BitBtn2: TBitBtn Left = 7 Height = 84 Top = 408 Width = 153 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 OnClick = BitBtn2Click TabOrder = 5 end object GroupBox4: TGroupBox Left = 176 Height = 73 Top = 223 Width = 254 Caption = 'Rapport hauteur/largeur' ClientHeight = 55 ClientWidth = 250 TabOrder = 6 object CheckBoxrespect: TCheckBox Left = 5 Height = 17 Top = 17 Width = 185 Caption = 'Respecter les angles à l''impression' Checked = True State = cbChecked TabOrder = 0 end end end optgeo-2.21/unit32.pas0000750000175000017500000000700112247333133014757 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit32; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons,{$ifdef windows}shellapi,{$endif}RTFTOPLAINTEXT,unit222, ComCtrls, LResources,UnitScaleFont,UChaines,FileUtil; type { TFormEditeur } TFormEditeur = class(TForm) Memo1: TMemo; StatusBar1: TStatusBar; procedure fichiernouveau(Sender: TObject); procedure fichierouvrir(nom:string); procedure fichiersauver(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormShow(Sender: TObject); procedure Memo1Change(Sender: TObject); private encreation:boolean; { private encreation:boolean; declarations } public { Public declarations } nomfichier: string; end; var FormEditeur: TFormEditeur; implementation procedure TFormEditeur.fichiernouveau(Sender: TObject); begin Memo1.Clear; nomfichier := ''; StatusBar1.Panels[0].Text := nomfichier; end; procedure TFormEditeur.fichierouvrir(nom:string); var f:textfile; s,s1:string; begin memo1.Lines.Clear; nomfichier:=nom; if ansiuppercase(extractfileext(nomfichier))='.RTF' then begin assignfile(f,UTF8ToSys(nomfichier)); reset(f); while not(eof(f)) do begin readln(f,s); s1:=rtf2plaintext(s); if s='' then Memo1.Lines.Add(''); if s1<>'' then Memo1.Lines.Add(s1); end; closefile(f); end else memo1.Lines.LoadFromFile(utf8tosys(nomfichier)); StatusBar1.Panels[0].Text := nomfichier; end; procedure TFormEditeur.fichiersauver(Sender: TObject); begin if ansiuppercase(extractfileext(nomfichier))='.RTF' then changefileext(nomfichier,'.txt'); Memo1.Lines.SaveToFile(utf8tosys(nomfichier)); end; procedure TFormEditeur.FormCreate(Sender: TObject); begin encreation:=true; CAPTION:=rsEditeurDeTex; nomfichier := ''; StatusBar1.Panels[0].Text := nomfichier; Memo1.Clear; end; procedure TFormEditeur.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin canclose:=false; self.WindowState:=wsminimized; end; procedure TFormEditeur.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure TFormEditeur.Memo1Change(Sender: TObject); begin if memo1.Modified then commentaire_change:=true; end; initialization {$i UNIT32.lrs} end. optgeo-2.21/saisiedidi.pas0000750000175000017500000000344312247333133015750 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiedidi; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type Tsaisiediametre = class(TForm) GroupBox1: TGroupBox; StaticText1: TLabel; editdia: TEdit; BitBtn1: TBitBtn; procedure BitBtn1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var saisiediametre: Tsaisiediametre; diadia:extended; implementation {$R *.DFM} procedure Tsaisiediametre.BitBtn1Click(Sender: TObject); begin try diadia:=strtofloat(editdia.text); except application.messagebox('Ceci n''est pas une valeur numérique acceptable !', 'Attention !!',0); modalresult:=mrcancel; exit; end; end; end. optgeo-2.21/saisiedia.pas0000750000175000017500000001222412247333133015571 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiedia; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiediaphragme } Tsaisiediaphragme = class(TForm) BitBtn2: TBitBtn; ColorGrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editcx: TEdit; editcy: TEdit; GroupBox3: TGroupBox; BitBtn1: TBitBtn; GroupBox6: TGroupBox; StaticText5: TLabel; editrint: TEdit; boutonsup: TBitBtn; GroupBox2: TGroupBox; StaticText3: TLabel; editrext: TEdit; GroupBox4: TGroupBox; StaticText4: TLabel; editt: TEdit; StaticText10: TLabel; GroupBox5: TGroupBox; SpinEdit1: TSpinEdit; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiediaphragme: Tsaisiediaphragme; dia_epaisseur:integer; dia_couleur:tcolor; dia_cx,dia_cy,dia_t,dia_rint, dia_rext:extended; implementation uses unit222; procedure Tsaisiediaphragme.BitBtn1Click(Sender: TObject); begin dia_couleur:=colorgrid1.selected; try dia_cx:=strtofloat(editcx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce8), pchar(rsAttention), mb_ok); exit; end; end; if ((dia_cxxxmax)) then begin application.messagebox(pchar(rsValeurInacce8), pchar(rsAttention),mb_ok); exit; end; try dia_cy:=strtofloat(editcy.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce9), pchar(rsAttention),mb_ok); exit; end; end; if ((dia_cyyymax)) then begin application.messagebox(pchar(rsValeurInacce9), pchar(rsAttention),mb_ok); exit; end; try dia_rint:=strtofloat(editrint.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce10), pchar(rsAttention),mb_ok); exit; end; end; dia_rint:=abs(dia_rint); try dia_rext:=strtofloat(editrext.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce11), pchar(rsAttention),mb_ok); exit; end; end; dia_rext:=abs(dia_rext); try dia_t:=strtofloat(editt.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce12), pchar(rsAttention),mb_ok); exit; end; end; dia_epaisseur:=spinedit1.value; ReTaillePdiaphragme(Listediaphragme,nombrediaphragme,nombrediaphragme+1); inc(nombrediaphragme); if not (Listediaphragme[-1+nombrediaphragme].create2(dia_cx,dia_cy, dia_t,dia_rint,dia_rext, dia_couleur,dia_epaisseur)) then begin ReTaillePdiaphragme(Listediaphragme,nombrediaphragme,nombrediaphragme-1); dec(nombrediaphragme); application.messagebox(pchar(rsDonnEsAberra2), pchar(rsAttention),mb_ok); end else self.modalresult:=mrok; Rafraichit; end; procedure Tsaisiediaphragme.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK2; BITBTN2.CAPTION:=rsAnnuler; BOUTONSUP.CAPTION:=rsSupprimerCeD; CAPTION:=rsAjoutDUnDiap2; GROUPBOX1.CAPTION:=rsCentreC; GROUPBOX2.CAPTION:=rsRayonExtRieu; GROUPBOX3.CAPTION:=rsCouleurDuDia; GROUPBOX4.CAPTION:=rsAnglePolaire; GROUPBOX5.CAPTION:=rsEpaisseurDuT; GROUPBOX6.CAPTION:=rsRayonIntRieu2; LOG1.CAPTION:=rsLog1; LOG2.CAPTION:=rsLog2; LOG3.CAPTION:=rsLog3; LOG4.CAPTION:=rsLog4; STATICTEXT1.CAPTION:=rsX; STATICTEXT10.CAPTION:=rsRad; STATICTEXT2.CAPTION:=rsY; STATICTEXT3.CAPTION:=rsRext; STATICTEXT4.CAPTION:=rsT; STATICTEXT5.CAPTION:=rsRint; end; procedure Tsaisiediaphragme.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiedia.lrs} end. optgeo-2.21/saisiemscopa.lfm0000750000175000017500000004632512247333133016322 0ustar georgeskgeorgeskobject saisiemiroirscopa: Tsaisiemiroirscopa Left = 194 Height = 444 Top = 108 Width = 509 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un miroir sphérique concave paraxial' ClientHeight = 444 ClientWidth = 509 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00000FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF000000FFFFF0FFF0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFF F0FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFF0FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF00000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF000000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF000000000FF00000FF000 000000FF00000FF000000000000000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFF000000000FF00000FF000000000FF00000FF000000000 00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000F0FFF0FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000FF0FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000F0FFFFFFFFF 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 00000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000FFFFFFFFFFF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFF FFFFF0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFF000FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 112 Height = 128 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 110 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 280 Height = 113 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 95 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 97 Top = 136 Width = 129 Caption = 'Couleur du miroir' ClientHeight = 79 ClientWidth = 125 TabOrder = 2 object Colorgrid1: TColorBox Left = 14 Height = 22 Top = 19 Width = 97 ItemHeight = 16 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 8 Height = 96 Top = 240 Width = 185 Caption = 'Epaisseur trait à l''écran' ClientHeight = 78 ClientWidth = 181 TabOrder = 3 object editepaisseur: TSpinEdit Left = 40 Height = 21 Top = 16 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox5: TGroupBox Left = 208 Height = 97 Top = 240 Width = 129 Caption = 'Aspect' ClientHeight = 79 ClientWidth = 125 TabOrder = 4 object cochehachures: TCheckBox Left = 16 Height = 17 Top = 16 Width = 65 Caption = 'Hachures' Checked = True State = cbChecked TabOrder = 0 end object cocheaxe: TCheckBox Left = 16 Height = 17 Top = 48 Width = 78 Caption = 'Axe optique' Checked = True State = cbChecked TabOrder = 1 end end object GroupBox6: TGroupBox Left = 280 Height = 65 Top = 120 Width = 161 Caption = 'Focale' ClientHeight = 47 ClientWidth = 157 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 16 Width = 21 Caption = '|f|=' ParentColor = False end object log5: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log5' ParentColor = False end object editfocale: TEdit Left = 24 Height = 21 Top = 16 Width = 89 TabOrder = 0 end end object GroupBox7: TGroupBox Left = 144 Height = 97 Top = 136 Width = 129 Caption = 'Couleur de l''axe' ClientHeight = 79 ClientWidth = 125 TabOrder = 6 object gridaxe: TColorBox Left = 7 Height = 22 Top = 19 Width = 110 ItemHeight = 16 TabOrder = 0 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 408 Width = 433 Caption = 'Supprimer ce miroir' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 7 end object GroupBox8: TGroupBox Left = 8 Height = 57 Top = 344 Width = 433 Caption = 'Trouer le miroir en son centre' ClientHeight = 39 ClientWidth = 429 TabOrder = 8 object StaticText6: TLabel Left = 144 Height = 14 Top = 15 Width = 86 Caption = 'Diamètre du trou:' ParentColor = False end object log6: TLabel Left = 366 Height = 14 Top = 16 Width = 21 Caption = 'log6' ParentColor = False end object checktrou: TCheckBox Left = 40 Height = 17 Top = 8 Width = 52 Caption = 'Trouer' OnClick = checktrouClick TabOrder = 0 end object editdiametretrou: TEdit Left = 238 Height = 21 Top = 8 Width = 113 Enabled = False TabOrder = 1 end end object BitBtn2: TBitBtn Left = 344 Height = 46 Top = 288 Width = 155 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 9 end object BitBtn1: TBitBtn Left = 344 Height = 81 Top = 200 Width = 154 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 10 end end optgeo-2.21/saisiefle.lfm0000750000175000017500000001224112247333133015574 0ustar georgeskgeorgeskobject saisiefleche: Tsaisiefleche Left = 200 Height = 380 Top = 108 Width = 752 BorderIcons = [] BorderStyle = bsDialog Caption = 'Propriétés de ce trait' ClientHeight = 380 ClientWidth = 752 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object radioext1: TRadioGroup Left = 8 Height = 225 Top = 8 Width = 201 AutoFill = True Caption = 'Forme de la première extrémité' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 207 ClientWidth = 197 ItemIndex = 0 Items.Strings = ( 'Normale' 'Fléche' 'Trait perpendiculaire' 'Cercle' 'Croix +' 'Croix x' 'Disque' ) TabOrder = 0 end object radioext2: TRadioGroup Left = 224 Height = 225 Top = 8 Width = 192 AutoFill = True Caption = 'Forme de la seconde extrémité' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 207 ClientWidth = 188 ItemIndex = 0 Items.Strings = ( 'Normale' 'Fléche' 'Trait perpendiculaire' 'Cercle' 'Croix +' 'Croix x' 'Disque' ) TabOrder = 1 end object GroupBox1: TGroupBox Left = 8 Height = 129 Top = 240 Width = 201 Caption = 'Taille de la première extrémité' ClientHeight = 111 ClientWidth = 197 TabOrder = 2 object StaticText1: TLabel Left = 16 Height = 14 Top = 56 Width = 125 Caption = 'en 1/1000 de la diagonale' ParentColor = False end object StaticText3: TLabel Left = 24 Height = 14 Top = 80 Width = 102 Caption = 'de l''espace de travail' ParentColor = False end object spintaille1: TSpinEdit Left = 56 Height = 21 Top = 24 Width = 57 MaxValue = 1000 MinValue = 1 TabOrder = 0 Value = 10 end end object GroupBox2: TGroupBox Left = 224 Height = 129 Top = 240 Width = 193 Caption = 'Taille de la seconde extrémité' ClientHeight = 111 ClientWidth = 189 TabOrder = 3 object StaticText2: TLabel Left = 16 Height = 14 Top = 56 Width = 125 Caption = 'en 1/1000 de la diagonale' ParentColor = False end object StaticText4: TLabel Left = 24 Height = 14 Top = 80 Width = 102 Caption = 'de l''espace de travail' ParentColor = False end object spintaille2: TSpinEdit Left = 56 Height = 21 Top = 24 Width = 57 MaxValue = 1000 MinValue = 1 TabOrder = 0 Value = 10 end end object GroupBox3: TGroupBox Left = 416 Height = 65 Top = 8 Width = 201 Caption = 'Epaisseur du trait' ClientHeight = 47 ClientWidth = 197 TabOrder = 4 object spinepaisseur: TSpinEdit Left = 64 Height = 21 Top = 16 Width = 49 MaxValue = 10 MinValue = 1 TabOrder = 0 Value = 1 end end object radiostyletrait: TRadioGroup Left = 416 Height = 153 Top = 80 Width = 201 AutoFill = True Caption = 'Style du trait (valable si épaisseur=1)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 135 ClientWidth = 197 ItemIndex = 0 Items.Strings = ( 'Plein' 'Pointillés' 'Tirés' 'Tirés - Points' 'Tirés - Points - Points' ) TabOrder = 5 end object GroupBox4: TGroupBox Left = 432 Height = 129 Top = 240 Width = 185 Caption = 'Couleur du trait' ClientHeight = 111 ClientWidth = 181 TabOrder = 6 object Colorgrid1: TColorBox Left = 30 Height = 22 Top = 32 Width = 122 ItemHeight = 16 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 632 Height = 361 Top = 8 Width = 112 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 7 end end optgeo-2.21/lang/0000750000175000017500000000000012247340361014047 5ustar georgeskgeorgeskoptgeo-2.21/lang/optgeo.po0000750000175000017500000041234112247333110015706 0ustar georgeskgeorgeskmsgid "mais cela n'a pas de sens pour un rayon unique.mais cela n'a pas de sens pour un rayon unique.ambian et longueurs d'onde." msgstr "Content-Type: text/plain; charset=UTF-8" #: tform1.afficherlagrille1.caption msgctxt "TFORM1.AFFICHERLAGRILLE1.CAPTION" msgid "Afficher la grille" msgstr "" #: tform1.afficherlesangles1.caption msgctxt "TFORM1.AFFICHERLESANGLES1.CAPTION" msgid "Afficher les angles" msgstr "" #: tform1.aide1.caption msgctxt "TFORM1.AIDE1.CAPTION" msgid "Aide" msgstr "" #: tform1.aidesuroptgeo1.caption msgctxt "TFORM1.AIDESUROPTGEO1.CAPTION" msgid "Aide sur OptGeo" msgstr "" #: tform1.ajouter1.caption msgctxt "TFORM1.AJOUTER1.CAPTION" msgid "Ajouter" msgstr "" #: tform1.ajusterautomatiquement1.caption msgctxt "TFORM1.AJUSTERAUTOMATIQUEMENT1.CAPTION" msgid "Ajuster automatiquement à la plus petite taille" msgstr "" #: tform1.apropos2.caption msgctxt "TFORM1.APROPOS2.CAPTION" msgid "A propos" msgstr "" #: tform1.associerlesfichiersoptavecoptgeo1.caption msgctxt "TFORM1.ASSOCIERLESFICHIERSOPTAVECOPTGEO1.CAPTION" msgid "Associer les fichiers .opt avec OptGeo" msgstr "" #: tform1.attractiondelagrille1.caption msgctxt "TFORM1.ATTRACTIONDELAGRILLE1.CAPTION" msgid "Attraction de la grille" msgstr "" #: tform1.basederegistre1.caption msgctxt "TFORM1.BASEDEREGISTRE1.CAPTION" msgid "Base de registre" msgstr "" #: tform1.boutonangle.hint msgctxt "TFORM1.BOUTONANGLE.HINT" msgid "Mesurer un angle" msgstr "" #: tform1.boutonconiqueconcave.hint msgctxt "TFORM1.BOUTONCONIQUECONCAVE.HINT" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) concave" msgstr "" #: tform1.boutonconiqueconvexe.hint msgctxt "TFORM1.BOUTONCONIQUECONVEXE.HINT" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) convexe" msgstr "" #: tform1.boutondia.hint msgctxt "TFORM1.BOUTONDIA.HINT" msgid "Ajouter un diaphragme à iris" msgstr "" #: tform1.boutondistance.hint msgctxt "TFORM1.BOUTONDISTANCE.HINT" msgid "Mesurer la distance entre deux points" msgstr "" #: tform1.boutonecran.hint msgctxt "TFORM1.BOUTONECRAN.HINT" msgid "Ajouter un écran" msgstr "" #: tform1.boutonfantome.hint msgctxt "TFORM1.BOUTONFANTOME.HINT" msgid "Cacher des segments de rayon" msgstr "" #: tform1.boutonfleche.hint msgctxt "TFORM1.BOUTONFLECHE.HINT" msgid "Ajouter un trait, une fléche..." msgstr "" #: tform1.boutonlec.hint msgctxt "TFORM1.BOUTONLEC.HINT" msgid "Ajouter une lentille épaisse" msgstr "" #: tform1.boutonlmc.hint msgctxt "TFORM1.BOUTONLMC.HINT" msgid "Ajouter une lentille mince convergente paraxiale" msgstr "" #: tform1.boutonlmd.hint msgctxt "TFORM1.BOUTONLMD.HINT" msgid "Ajouter une lentille mince divergente paraxiale" msgstr "" #: tform1.boutonlsr.hint msgctxt "TFORM1.BOUTONLSR.HINT" msgid "Ajouter une lame semi-réfléchissante" msgstr "" #: tform1.boutonmiroirplan.hint msgctxt "TFORM1.BOUTONMIROIRPLAN.HINT" msgid "Ajouter un miroir plan" msgstr "" #: tform1.boutonmscepa.hint msgctxt "TFORM1.BOUTONMSCEPA.HINT" msgid "Ajouter un miroir sphérique convexe paraxial" msgstr "" #: tform1.boutonmscere.hint msgctxt "TFORM1.BOUTONMSCERE.HINT" msgid "Ajouter un miroir sphérique convexe réel" msgstr "" #: tform1.boutonmscopa.hint msgctxt "TFORM1.BOUTONMSCOPA.HINT" msgid "Ajouter un miroir sphérique concave paraxial" msgstr "" #: tform1.boutonmscore.hint msgctxt "TFORM1.BOUTONMSCORE.HINT" msgid "Ajouter un miroir sphérique concave réel" msgstr "" #: tform1.boutonoeil.hint msgctxt "TFORM1.BOUTONOEIL.HINT" msgid "Ajouter un oeil stylisé" msgstr "" #: tform1.boutonondeplane.hint msgctxt "TFORM1.BOUTONONDEPLANE.HINT" msgid "Ajouter une onde plane" msgstr "" #: tform1.boutonpoly.hint msgctxt "TFORM1.BOUTONPOLY.HINT" msgid "Ajouter un polygône réfractant" msgstr "" #: tform1.boutonpolycercle.hint msgctxt "TFORM1.BOUTONPOLYCERCLE.HINT" msgid "Ajouter une polycercle réfractant" msgstr "" #: tform1.boutonprisme.hint msgctxt "TFORM1.BOUTONPRISME.HINT" msgid "Ajouter un prisme isocéle" msgstr "" #: tform1.boutonrayon.hint msgctxt "TFORM1.BOUTONRAYON.HINT" msgid "Ajouter un rayon" msgstr "" #: tform1.boutonsourceponctuelle.hint msgctxt "TFORM1.BOUTONSOURCEPONCTUELLE.HINT" msgid "Ajouter un objet ponctuel réel" msgstr "" #: tform1.boutonsphere.hint msgctxt "TFORM1.BOUTONSPHERE.HINT" msgid "Ajouter une sphère réfractante" msgstr "" #: tform1.boutonspv.hint msgctxt "TFORM1.BOUTONSPV.HINT" msgid "Ajouter un objet ponctuel virtuel" msgstr "" #: tform1.boutontexte.caption msgctxt "TFORM1.BOUTONTEXTE.CAPTION" msgid "A" msgstr "" #: tform1.boutontexte.hint msgctxt "TFORM1.BOUTONTEXTE.HINT" msgid "Ajouter un texte sur le dessin" msgstr "" #: tform1.caption msgctxt "TFORM1.CAPTION" msgid "OptGeo" msgstr "" #: tform1.cocheangles.caption msgctxt "TFORM1.COCHEANGLES.CAPTION" msgid "Angles d'incid. et de réfr." msgstr "" #: tform1.cocheattraction.caption msgctxt "TFORM1.COCHEATTRACTION.CAPTION" msgid "Attraction" msgstr "" #: tform1.cochegrille.caption msgctxt "TFORM1.COCHEGRILLE.CAPTION" msgid "Grille" msgstr "" #: tform1.cochenormale.caption msgctxt "TFORM1.COCHENORMALE.CAPTION" msgid "Normales" msgstr "" #: tform1.combozoom.hint msgctxt "TFORM1.COMBOZOOM.HINT" msgid "Facteur de zoom" msgstr "" #: tform1.commenatiresurlasimulation1.caption msgctxt "TFORM1.COMMENATIRESURLASIMULATION1.CAPTION" msgid "Commentaire sur la simulation" msgstr "" #: tform1.contacterlauteur1.caption msgctxt "TFORM1.CONTACTERLAUTEUR1.CAPTION" msgid "Contacter l'auteur" msgstr "" #: tform1.copier1.caption msgctxt "TFORM1.COPIER1.CAPTION" msgid "Copier simulation dans le presse papier" msgstr "" #: tform1.couleurdefond1.caption msgctxt "TFORM1.COULEURDEFOND1.CAPTION" msgid "Couleur de fond" msgstr "" #: tform1.dfinirlerpertoirepersonnel1.caption msgctxt "TFORM1.DFINIRLERPERTOIREPERSONNEL1.CAPTION" msgid "Définir le répertoire personnel" msgstr "" #: tform1.diaphragme1.caption msgctxt "TFORM1.DIAPHRAGME1.CAPTION" msgid "Diaphragme" msgstr "" #: tform1.divers1.caption msgctxt "TFORM1.DIVERS1.CAPTION" msgid "Divers" msgstr "" #: tform1.dplacerunlment1.caption msgctxt "TFORM1.DPLACERUNLMENT1.CAPTION" msgid "Déplacer un élément" msgstr "" #: tform1.dsassocier1.caption msgctxt "TFORM1.DSASSOCIER1.CAPTION" msgid "Désassocier" msgstr "" #: tform1.dudernierrpertoireutilis1.caption msgctxt "TFORM1.DUDERNIERRPERTOIREUTILIS1.CAPTION" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: tform1.dupliquerunlment1.caption msgctxt "TFORM1.DUPLIQUERUNLMENT1.CAPTION" msgid "Dupliquer un élément" msgstr "" #: tform1.durpertoireexemples1.caption msgctxt "TFORM1.DURPERTOIREEXEMPLES1.CAPTION" msgid "de mon répertoire personnel" msgstr "" #: tform1.durpertoireexemples2.caption msgctxt "tform1.durpertoireexemples2.caption" msgid "du répertoire \"exemples\"" msgstr "" #: tform1.ecran1.caption msgctxt "TFORM1.ECRAN1.CAPTION" msgid "Ecran" msgstr "" #: tform1.editerlecommentairedelasimulation1.caption msgctxt "TFORM1.EDITERLECOMMENTAIREDELASIMULATION1.CAPTION" msgid "Editer le commentaire de la simulation" msgstr "" #: tform1.edition1.caption msgctxt "TFORM1.EDITION1.CAPTION" msgid "Edition" msgstr "" #: tform1.elementschoisir2.caption msgctxt "TFORM1.ELEMENTSCHOISIR2.CAPTION" msgid "Eléments à choisir" msgstr "" #: tform1.empennagedesrayons1.caption msgctxt "TFORM1.EMPENNAGEDESRAYONS1.CAPTION" msgid "Empennage des rayons" msgstr "" #: tform1.enregistrersimulation1.caption msgctxt "TFORM1.ENREGISTRERSIMULATION1.CAPTION" msgid "Enregistrer simulation sous" msgstr "" #: tform1.enregistrersimulation2.caption msgctxt "TFORM1.ENREGISTRERSIMULATION2.CAPTION" msgid "Enregistrer simulation" msgstr "" #: tform1.fichier1.caption msgctxt "TFORM1.FICHIER1.CAPTION" msgid "Fichier" msgstr "" #: tform1.grille1.caption msgctxt "TFORM1.GRILLE1.CAPTION" msgid "Options" msgstr "" #: tform1.grouperdeslments1.caption msgctxt "TFORM1.GROUPERDESLMENTS1.CAPTION" msgid "Grouper des éléments" msgstr "" #: tform1.imprimer1.caption msgctxt "TFORM1.IMPRIMER1.CAPTION" msgid "Imprimer" msgstr "" #: tform1.joindreparunarcdecercle1.caption msgctxt "TFORM1.JOINDREPARUNARCDECERCLE1.CAPTION" msgid "Joindre par un arc de cercle" msgstr "" #: tform1.joindreparunsegment1.caption msgctxt "TFORM1.JOINDREPARUNSEGMENT1.CAPTION" msgid "Joindre par un segment" msgstr "" #: tform1.lamesemirflchissante1.caption msgctxt "TFORM1.LAMESEMIRFLCHISSANTE1.CAPTION" msgid "Lame semi réfléchissante" msgstr "" #: tform1.lentille1.caption msgctxt "TFORM1.LENTILLE1.CAPTION" msgid "Lentille" msgstr "" #: tform1.lentilleminceconvergente1.caption msgctxt "TFORM1.LENTILLEMINCECONVERGENTE1.CAPTION" msgid "Lentille mince convergente" msgstr "" #: tform1.lentillemincedivergente1.caption msgctxt "TFORM1.LENTILLEMINCEDIVERGENTE1.CAPTION" msgid "Lentille mince divergente" msgstr "" #: tform1.licensegpl1.caption msgctxt "TFORM1.LICENSEGPL1.CAPTION" msgid "License GPL" msgstr "" #: tform1.manuellement1.caption msgctxt "TFORM1.MANUELLEMENT1.CAPTION" msgid "Manuellement" msgstr "" #: tform1.menuitem1.caption msgctxt "TFORM1.MENUITEM1.CAPTION" msgid "Exporter graphe" msgstr "" #: tform1.menuitem10.caption msgctxt "TFORM1.MENUITEM10.CAPTION" msgid "de mon répertoire personnel" msgstr "" #: tform1.menuitem11.caption msgctxt "TFORM1.MENUITEM11.CAPTION" msgid "du répertoire \"exemples\"" msgstr "" #: tform1.menuitem12.caption msgctxt "TFORM1.MENUITEM12.CAPTION" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: tform1.menuitem14.caption msgid "Historique des versions" msgstr "" #: tform1.menuitem2.caption msgctxt "TFORM1.MENUITEM2.CAPTION" msgid "-" msgstr "" #: tform1.menuitem3.caption msgctxt "TFORM1.MENUITEM3.CAPTION" msgid "PNG" msgstr "" #: tform1.menuitem4.caption msgctxt "TFORM1.MENUITEM4.CAPTION" msgid "JPG" msgstr "" #: tform1.menuitem5.caption msgctxt "TFORM1.MENUITEM5.CAPTION" msgid "-" msgstr "" #: tform1.menuitem6.caption msgctxt "TFORM1.MENUITEM6.CAPTION" msgid "Langue" msgstr "" #: tform1.menuitem7.caption msgctxt "TFORM1.MENUITEM7.CAPTION" msgid "Indices du milieu ambiant" msgstr "" #: tform1.menuitem8.caption msgid "PS" msgstr "" #: tform1.menuitem9.caption msgctxt "TFORM1.MENUITEM9.CAPTION" msgid "Superposer simulation" msgstr "" #: tform1.menuitemreseau.caption msgctxt "tform1.menuitemreseau.caption" msgid "Réseau diffractant" msgstr "" #: tform1.menuprisme.caption msgctxt "TFORM1.MENUPRISME.CAPTION" msgid "Prisme" msgstr "" #: tform1.mesuredangle1.caption msgctxt "TFORM1.MESUREDANGLE1.CAPTION" msgid "Mesure d'angle" msgstr "" #: tform1.mesurededistance1.caption msgctxt "TFORM1.MESUREDEDISTANCE1.CAPTION" msgid "Mesure de distance" msgstr "" #: tform1.miroircnique1.caption msgctxt "TFORM1.MIROIRCNIQUE1.CAPTION" msgid "Miroir cônique" msgstr "" #: tform1.miroirplan2.caption msgctxt "TFORM1.MIROIRPLAN2.CAPTION" msgid "Miroir plan" msgstr "" #: tform1.miroirsphriqueconcave1.caption msgctxt "TFORM1.MIROIRSPHRIQUECONCAVE1.CAPTION" msgid "Miroir sphérique concave" msgstr "" #: tform1.miroirsphriqueconvergent1.caption msgctxt "TFORM1.MIROIRSPHRIQUECONVERGENT1.CAPTION" msgid "Miroir sphérique concave" msgstr "" #: tform1.miroirsphriqueconvexe1.caption msgctxt "TFORM1.MIROIRSPHRIQUECONVEXE1.CAPTION" msgid "Miroir sphérique convexe" msgstr "" #: tform1.miroirsphriqueconvexe2.caption msgctxt "TFORM1.MIROIRSPHRIQUECONVEXE2.CAPTION" msgid "Miroir sphérique convexe" msgstr "" #: tform1.modifierdimensionsespacedetravail1.caption msgctxt "TFORM1.MODIFIERDIMENSIONSESPACEDETRAVAIL1.CAPTION" msgid "Modifier les dimensions de l'espace de travail" msgstr "" #: tform1.n1.caption msgctxt "TFORM1.N1.CAPTION" msgid "-" msgstr "" #: tform1.n10.caption msgctxt "TFORM1.N10.CAPTION" msgid "-" msgstr "" #: tform1.n11.caption msgctxt "TFORM1.N11.CAPTION" msgid "-" msgstr "" #: tform1.n12.caption msgctxt "TFORM1.N12.CAPTION" msgid "-" msgstr "" #: tform1.n13.caption msgctxt "TFORM1.N13.CAPTION" msgid "-" msgstr "" #: tform1.n14.caption msgctxt "TFORM1.N14.CAPTION" msgid "-" msgstr "" #: tform1.n15.caption msgctxt "tform1.n15.caption" msgid "-" msgstr "" #: tform1.n16.caption msgctxt "TFORM1.N16.CAPTION" msgid "-" msgstr "" #: tform1.n17.caption msgctxt "TFORM1.N17.CAPTION" msgid "-" msgstr "" #: tform1.n18.caption msgctxt "TFORM1.N18.CAPTION" msgid "-" msgstr "" #: tform1.n19.caption msgctxt "TFORM1.N19.CAPTION" msgid "-" msgstr "" #: tform1.n2.caption msgctxt "TFORM1.N2.CAPTION" msgid "-" msgstr "" #: tform1.n20.caption msgctxt "TFORM1.N20.CAPTION" msgid "-" msgstr "" #: tform1.n21.caption msgctxt "TFORM1.N21.CAPTION" msgid "-" msgstr "" #: tform1.n3.caption msgctxt "TFORM1.N3.CAPTION" msgid "-" msgstr "" #: tform1.n4.caption msgctxt "TFORM1.N4.CAPTION" msgid "-" msgstr "" #: tform1.n5.caption msgctxt "TFORM1.N5.CAPTION" msgid "-" msgstr "" #: tform1.n6.caption msgctxt "TFORM1.N6.CAPTION" msgid "-" msgstr "" #: tform1.n7.caption msgctxt "TFORM1.N7.CAPTION" msgid "Afficher les normales" msgstr "" #: tform1.n8.caption msgctxt "TFORM1.N8.CAPTION" msgid "-" msgstr "" #: tform1.n9.caption msgctxt "TFORM1.N9.CAPTION" msgid "-" msgstr "" #: tform1.nouveau1.caption msgctxt "TFORM1.NOUVEAU1.CAPTION" msgid "Nouvelle simulation" msgstr "" #: tform1.oeilstylis1.caption msgctxt "TFORM1.OEILSTYLIS1.CAPTION" msgid "Oeil stylisé" msgstr "" #: tform1.ondeplane1.caption msgctxt "TFORM1.ONDEPLANE1.CAPTION" msgid "Onde plane" msgstr "" #: tform1.optionsdelagrille1.caption msgctxt "TFORM1.OPTIONSDELAGRILLE1.CAPTION" msgid "Options de la grille" msgstr "" #: tform1.optionsdesnormales1.caption msgctxt "TFORM1.OPTIONSDESNORMALES1.CAPTION" msgid "Options des normales" msgstr "" #: tform1.ouvrirsimulation1.caption msgctxt "TFORM1.OUVRIRSIMULATION1.CAPTION" msgid "Ouvrir simulation" msgstr "" #: tform1.polyhdrerfractant1.caption msgctxt "TFORM1.POLYHDRERFRACTANT1.CAPTION" msgid "Polyhèdre réfractant" msgstr "" #: tform1.polysphrerfractante1.caption msgctxt "TFORM1.POLYSPHRERFRACTANTE1.CAPTION" msgid "Polysphère réfractante" msgstr "" #: tform1.prfrences1.caption msgctxt "TFORM1.PRFRENCES1.CAPTION" msgid "Préférences" msgstr "" #: tform1.propritsdunlment1.caption msgctxt "TFORM1.PROPRITSDUNLMENT1.CAPTION" msgid "Propriétés d'un élément" msgstr "" #: tform1.quitter1.caption msgctxt "TFORM1.QUITTER1.CAPTION" msgid "Quitter" msgstr "" #: tform1.rayonsfantomes1.caption msgctxt "TFORM1.RAYONSFANTOMES1.CAPTION" msgid "Rayons fantomes" msgstr "" #: tform1.rayonunique1.caption msgctxt "TFORM1.RAYONUNIQUE1.CAPTION" msgid "Rayon unique" msgstr "" #: tform1.refaire1.caption msgctxt "TFORM1.REFAIRE1.CAPTION" msgid "Refaire" msgstr "" #: tform1.rtablir1.caption msgctxt "TFORM1.RTABLIR1.CAPTION" msgid "Annuler" msgstr "" #: tform1.siteweb1.caption msgctxt "TFORM1.SITEWEB1.CAPTION" msgid "Site Web" msgstr "" #: tform1.source2.caption msgctxt "TFORM1.SOURCE2.CAPTION" msgid "Source" msgstr "" #: tform1.sourceponctuelle1.caption msgctxt "TFORM1.SOURCEPONCTUELLE1.CAPTION" msgid "Objet ponctuel réel ou virtuel" msgstr "" #: tform1.speedbutton1.hint msgctxt "TFORM1.SPEEDBUTTON1.HINT" msgid "Ajouter (ou éditer) le commentaire de la simulation" msgstr "" #: tform1.speedbutton2.caption msgctxt "TFORM1.SPEEDBUTTON2.CAPTION" msgid "Coord." msgstr "" #: tform1.speedbutton2.hint msgctxt "TFORM1.SPEEDBUTTON2.HINT" msgid "Afficher les coordonnées des segments" msgstr "" #: tform1.sphrerfractante1.caption msgctxt "TFORM1.SPHRERFRACTANTE1.CAPTION" msgid "Sphère réfractante" msgstr "" #: tform1.statictext1.caption msgctxt "TFORM1.STATICTEXT1.CAPTION" msgid "Zoom:" msgstr "" #: tform1.statictext2.caption msgctxt "TFORM1.STATICTEXT2.CAPTION" msgid "Miroirs:" msgstr "" #: tform1.statictext3.caption msgctxt "TFORM1.STATICTEXT3.CAPTION" msgid "Sources:" msgstr "" #: tform1.statictext4.caption msgctxt "TFORM1.STATICTEXT4.CAPTION" msgid "Dioptres:" msgstr "" #: tform1.statictext5.caption msgctxt "TFORM1.STATICTEXT5.CAPTION" msgid "Ecrans:" msgstr "" #: tform1.statictext6.caption msgctxt "TFORM1.STATICTEXT6.CAPTION" msgid "Divers:" msgstr "" #: tform1.statictext7.caption msgctxt "TFORM1.STATICTEXT7.CAPTION" msgid "Afficher:" msgstr "" #: tform1.statusbar1.panels[0].text msgid "X=" msgstr "" #: tform1.statusbar1.panels[1].text msgid "Y=" msgstr "" #: tform1.supprimerunlment1.caption msgctxt "TFORM1.SUPPRIMERUNLMENT1.CAPTION" msgid "Supprimer un élément" msgstr "" #: tform1.surfacesdonde1.caption msgctxt "TFORM1.SURFACESDONDE1.CAPTION" msgid "Surfaces d'onde" msgstr "" #: tform1.systmeoptique1.caption msgctxt "TFORM1.SYSTMEOPTIQUE1.CAPTION" msgid "Système optique idéal" msgstr "" #: tform1.systmeoptiquerel1.caption msgctxt "TFORM1.SYSTMEOPTIQUEREL1.CAPTION" msgid "Système optique réel" msgstr "" #: tform1.textesurledessin1.caption msgctxt "TFORM1.TEXTESURLEDESSIN1.CAPTION" msgid "Texte sur le dessin" msgstr "" #: tform1.toolbutton1.caption msgid "ToolButton1" msgstr "" #: tform1.toolbutton2.caption msgid "ToolButton2" msgstr "" #: tform1.toolbutton4.caption msgid "ToolButton4" msgstr "" #: tform1.toolbutton5.caption msgid "ToolButton5" msgstr "" #: tform1.toolbutton6.caption msgid "ToolButton6" msgstr "" #: tform1.toolbutton9.caption msgid "ToolButton9" msgstr "" #: tform1.tousleslments1.caption msgctxt "TFORM1.TOUSLESLMENTS1.CAPTION" msgid "Tous les éléments" msgstr "" #: tform1.traitflche1.caption msgctxt "TFORM1.TRAITFLCHE1.CAPTION" msgid "Trait, fléche..." msgstr "" #: tform_palette.boutondeplacement.caption msgctxt "TFORM_PALETTE.BOUTONDEPLACEMENT.CAPTION" msgid "Déplacer" msgstr "" #: tform_palette.boutondeplacement.hint msgctxt "TFORM_PALETTE.BOUTONDEPLACEMENT.HINT" msgid "Déplacer un élément existant: translation, rotation, changement focale ou rayon de courbure..." msgstr "" #: tform_palette.boutondupliquer.caption msgctxt "TFORM_PALETTE.BOUTONDUPLIQUER.CAPTION" msgid "Dupliquer" msgstr "" #: tform_palette.boutondupliquer.hint msgctxt "TFORM_PALETTE.BOUTONDUPLIQUER.HINT" msgid "Dupliquer un élément existant" msgstr "" #: tform_palette.boutongroupe.caption msgctxt "TFORM_PALETTE.BOUTONGROUPE.CAPTION" msgid "Grouper" msgstr "" #: tform_palette.boutongroupe.hint msgctxt "TFORM_PALETTE.BOUTONGROUPE.HINT" msgid "Grouper des éléments existants pour les translater ensemble" msgstr "" #: tform_palette.boutonprop.caption msgctxt "TFORM_PALETTE.BOUTONPROP.CAPTION" msgid "Propriétés" msgstr "" #: tform_palette.boutonprop.hint msgctxt "TFORM_PALETTE.BOUTONPROP.HINT" msgid "Propriétés d'un élément existant" msgstr "" #: tform_palette.boutonsuppression.caption msgctxt "TFORM_PALETTE.BOUTONSUPPRESSION.CAPTION" msgid "Supprimer" msgstr "" #: tform_palette.boutonsuppression.hint msgctxt "TFORM_PALETTE.BOUTONSUPPRESSION.HINT" msgid "Supprimer un élément existant" msgstr "" #: tform_palette.caption msgctxt "TFORM_PALETTE.CAPTION" msgid "Actions" msgstr "" #: tform_palette.speedbutton1.hint msgctxt "TFORM_PALETTE.SPEEDBUTTON1.HINT" msgid "Pour déplacer cette palette, glissez-déposez à partir de cette zone..." msgstr "" #: tform_palette.speedbutton2.caption msgctxt "TFORM_PALETTE.SPEEDBUTTON2.CAPTION" msgid "Export PS" msgstr "" #: tform_palette.speedbutton2.hint msgid "Export de la simulation au format Postscript" msgstr "" #: tform_palette.speedbutton3.caption msgctxt "TFORM_PALETTE.SPEEDBUTTON3.CAPTION" msgid "Imprimer" msgstr "" #: tform_palette.speedbutton3.hint msgctxt "TFORM_PALETTE.SPEEDBUTTON3.HINT" msgid "Imprimer la simulation" msgstr "" #: tform_palette.speedbutton4.caption msgctxt "TFORM_PALETTE.SPEEDBUTTON4.CAPTION" msgid "Export PNG" msgstr "" #: tform_palette.speedbutton4.hint msgctxt "TFORM_PALETTE.SPEEDBUTTON4.HINT" msgid "Exporter la simulation au format image PNG" msgstr "" #: tform_palette.speedbutton5.caption msgctxt "TFORM_PALETTE.SPEEDBUTTON5.CAPTION" msgid "Export JPG" msgstr "" #: tform_palette.speedbutton5.hint msgctxt "TFORM_PALETTE.SPEEDBUTTON5.HINT" msgid "Export de la simulation au format image JPG" msgstr "" #: tform_palette.speedbutton6.caption msgctxt "TFORM_PALETTE.SPEEDBUTTON6.CAPTION" msgid "Copier" msgstr "" #: tform_palette.speedbutton6.hint msgctxt "TFORM_PALETTE.SPEEDBUTTON6.HINT" msgid "Copier simulation dans le presse-papier" msgstr "" #: tform_palette.speedbutton7.caption msgctxt "TFORM_PALETTE.SPEEDBUTTON7.CAPTION" msgid "Grouper tout" msgstr "" #: tsaisiechoix.bitbtn1.caption msgctxt "TSAISIECHOIX.BITBTN1.CAPTION" msgid "Suivant >" msgstr "" #: tsaisiechoix.caption msgctxt "TSAISIECHOIX.CAPTION" msgid "Que voulez vous faire ?" msgstr "" #: tsaisiechoix.edit_indice_bleu_par_defaut.text msgctxt "TSAISIECHOIX.EDIT_INDICE_BLEU_PAR_DEFAUT.TEXT" msgid "1" msgstr "" #: tsaisiechoix.edit_indice_rouge_par_defaut.text msgctxt "TSAISIECHOIX.EDIT_INDICE_ROUGE_PAR_DEFAUT.TEXT" msgid "1" msgstr "" #: tsaisiechoix.edit_indice_vert_par_defaut.text msgctxt "tsaisiechoix.edit_indice_vert_par_defaut.text" msgid "1" msgstr "" #: tsaisiechoix.radiochoix.caption msgctxt "TSAISIECHOIX.RADIOCHOIX.CAPTION" msgid "Voulez vous:" msgstr "" #: tsaisiechoix.statictext2.caption msgctxt "TSAISIECHOIX.STATICTEXT2.CAPTION" msgid "Vous pouvez changer les indices du milieu dans lequel s'effectue la simulation:" msgstr "" #: tsaisiechoix.statictext3.caption msgctxt "TSAISIECHOIX.STATICTEXT3.CAPTION" msgid "Pour le vert:" msgstr "" #: tsaisiechoix.statictext4.caption msgctxt "TSAISIECHOIX.STATICTEXT4.CAPTION" msgid "Pour le rouge:" msgstr "" #: tsaisiechoix.statictext5.caption msgctxt "TSAISIECHOIX.STATICTEXT5.CAPTION" msgid "Pour le bleu:" msgstr "" #: tsaisiemiroirplan.bitbtn1.caption msgctxt "TSAISIEMIROIRPLAN.BITBTN1.CAPTION" msgid "&OK" msgstr "" #: tsaisiemiroirplan.bitbtn2.caption msgctxt "TSAISIEMIROIRPLAN.BITBTN2.CAPTION" msgid "Annuler" msgstr "" #: tsaisiemiroirplan.boutonsup.caption msgctxt "TSAISIEMIROIRPLAN.BOUTONSUP.CAPTION" msgid "Supprimer ce miroir" msgstr "" #: tsaisiemiroirplan.caption msgctxt "TSAISIEMIROIRPLAN.CAPTION" msgid "Ajout d'un miroir plan" msgstr "" #: tsaisiemiroirplan.cochehachures.caption msgctxt "TSAISIEMIROIRPLAN.COCHEHACHURES.CAPTION" msgid "Hachures" msgstr "" #: tsaisiemiroirplan.groupbox1.caption msgctxt "TSAISIEMIROIRPLAN.GROUPBOX1.CAPTION" msgid "Couleur à l'écran" msgstr "" #: tsaisiemiroirplan.groupbox2.caption msgctxt "TSAISIEMIROIRPLAN.GROUPBOX2.CAPTION" msgid "Aspect" msgstr "" #: tsaisiemiroirplan.groupbox3.caption msgctxt "TSAISIEMIROIRPLAN.GROUPBOX3.CAPTION" msgid "Epaisseur trait à l'écran" msgstr "" #: tsaisiemiroirplan.groupbox4.caption msgctxt "TSAISIEMIROIRPLAN.GROUPBOX4.CAPTION" msgid "Point 1" msgstr "" #: tsaisiemiroirplan.groupbox5.caption msgctxt "TSAISIEMIROIRPLAN.GROUPBOX5.CAPTION" msgid "Point 2" msgstr "" #: tsaisiemiroirplan.log1.caption msgctxt "TSAISIEMIROIRPLAN.LOG1.CAPTION" msgid "log1" msgstr "" #: tsaisiemiroirplan.log2.caption msgctxt "TSAISIEMIROIRPLAN.LOG2.CAPTION" msgid "log2" msgstr "" #: tsaisiemiroirplan.log3.caption msgctxt "TSAISIEMIROIRPLAN.LOG3.CAPTION" msgid "log3" msgstr "" #: tsaisiemiroirplan.log4.caption msgctxt "TSAISIEMIROIRPLAN.LOG4.CAPTION" msgid "log4" msgstr "" #: tsaisiemiroirplan.statictext1.caption msgctxt "TSAISIEMIROIRPLAN.STATICTEXT1.CAPTION" msgid "x=" msgstr "" #: tsaisiemiroirplan.statictext2.caption msgctxt "TSAISIEMIROIRPLAN.STATICTEXT2.CAPTION" msgid "y=" msgstr "" #: tsaisiemiroirplan.statictext3.caption msgctxt "TSAISIEMIROIRPLAN.STATICTEXT3.CAPTION" msgid "x=" msgstr "" #: tsaisiemiroirplan.statictext4.caption msgctxt "TSAISIEMIROIRPLAN.STATICTEXT4.CAPTION" msgid "y=" msgstr "" #: tsaisiepreferences.bitbtn1.caption msgctxt "TSAISIEPREFERENCES.BITBTN1.CAPTION" msgid "&OK" msgstr "" #: tsaisiepreferences.bitbtn2.caption msgctxt "TSAISIEPREFERENCES.BITBTN2.CAPTION" msgid "&Ok et enregistrer sur disque" msgstr "" #: tsaisiepreferences.bitbtn3.caption msgctxt "TSAISIEPREFERENCES.BITBTN3.CAPTION" msgid "&Rétablir les valeurs d'origine de tous les éléments" msgstr "" #: tsaisiepreferences.boutoncouleu1.caption msgctxt "TSAISIEPREFERENCES.BOUTONCOULEU1.CAPTION" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutoncouleur.caption msgctxt "TSAISIEPREFERENCES.BOUTONCOULEUR.CAPTION" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutoncouleuraxe.caption msgctxt "TSAISIEPREFERENCES.BOUTONCOULEURAXE.CAPTION" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutoncouleuraxe1.caption msgctxt "TSAISIEPREFERENCES.BOUTONCOULEURAXE1.CAPTION" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutonpolice.caption msgctxt "TSAISIEPREFERENCES.BOUTONPOLICE.CAPTION" msgid "Modifier" msgstr "" #: tsaisiepreferences.button1.caption msgctxt "TSAISIEPREFERENCES.BUTTON1.CAPTION" msgid "Modifier" msgstr "" #: tsaisiepreferences.caption msgctxt "TSAISIEPREFERENCES.CAPTION" msgid "Préférences: propriétés par défaut à la création" msgstr "" #: tsaisiepreferences.label1.caption msgctxt "TSAISIEPREFERENCES.LABEL1.CAPTION" msgid "Type d'élément" msgstr "" #: tsaisiepreferences.label2.caption msgctxt "TSAISIEPREFERENCES.LABEL2.CAPTION" msgid "Couleur par défaut" msgstr "" #: tsaisiepreferences.label3.caption msgctxt "TSAISIEPREFERENCES.LABEL3.CAPTION" msgid "Epaisseur par défaut" msgstr "" #: tsaisiepreferences.label4.caption msgctxt "TSAISIEPREFERENCES.LABEL4.CAPTION" msgid "Couleur axe par défaut" msgstr "" #: tsaisiepreferences.label5.caption msgctxt "TSAISIEPREFERENCES.LABEL5.CAPTION" msgid "Police par défaut" msgstr "" #: tsaisiepreferences.label6.caption msgctxt "TSAISIEPREFERENCES.LABEL6.CAPTION" msgid "Indiquer ici les propriétés communes à appliquer à tous les éléments:" msgstr "" #: tsaisiepreferences.label7.caption msgctxt "TSAISIEPREFERENCES.LABEL7.CAPTION" msgid "Couleur rayon par défaut" msgstr "" #: tsaisiepreferences.tabsheet1.caption msgctxt "TSAISIEPREFERENCES.TABSHEET1.CAPTION" msgid "Element par élément" msgstr "" #: tsaisiepreferences.tabsheet2.caption msgctxt "TSAISIEPREFERENCES.TABSHEET2.CAPTION" msgid "Pour tous les éléments" msgstr "" #: tsaisiereseau.bitbtn1.caption msgctxt "TSAISIERESEAU.BITBTN1.CAPTION" msgid "&OK" msgstr "" #: tsaisiereseau.bitbtn2.caption msgctxt "TSAISIERESEAU.BITBTN2.CAPTION" msgid "Annuler" msgstr "" #: tsaisiereseau.boutonsup.caption msgctxt "tsaisiereseau.boutonsup.caption" msgid "Supprimer ce réseau" msgstr "" #: tsaisiereseau.caption msgctxt "tsaisiereseau.caption" msgid "Ajout d'un réseau" msgstr "" #: tsaisiereseau.cochehachures.caption msgctxt "tsaisiereseau.cochehachures.caption" msgid "Hachures si réseau en réflexion" msgstr "" #: tsaisiereseau.groupbox1.caption msgctxt "TSAISIERESEAU.GROUPBOX1.CAPTION" msgid "Couleur à l'écran" msgstr "" #: tsaisiereseau.groupbox2.caption msgctxt "TSAISIERESEAU.GROUPBOX2.CAPTION" msgid "Aspect" msgstr "" #: tsaisiereseau.groupbox3.caption msgctxt "TSAISIERESEAU.GROUPBOX3.CAPTION" msgid "Epaisseur trait à l'écran" msgstr "" #: tsaisiereseau.groupbox4.caption msgctxt "TSAISIERESEAU.GROUPBOX4.CAPTION" msgid "Point 1" msgstr "" #: tsaisiereseau.groupbox5.caption msgctxt "TSAISIERESEAU.GROUPBOX5.CAPTION" msgid "Point 2" msgstr "" #: tsaisiereseau.groupbox6.caption msgid "Nombre de trait par mm" msgstr "" #: tsaisiereseau.groupbox7.caption msgctxt "tsaisiereseau.groupbox7.caption" msgid "Ordres à prendre en compte" msgstr "" #: tsaisiereseau.log1.caption msgctxt "TSAISIERESEAU.LOG1.CAPTION" msgid "log1" msgstr "" #: tsaisiereseau.log2.caption msgctxt "TSAISIERESEAU.LOG2.CAPTION" msgid "log2" msgstr "" #: tsaisiereseau.log3.caption msgctxt "TSAISIERESEAU.LOG3.CAPTION" msgid "log3" msgstr "" #: tsaisiereseau.log4.caption msgctxt "TSAISIERESEAU.LOG4.CAPTION" msgid "log4" msgstr "" #: tsaisiereseau.radiogroup1.caption msgctxt "tsaisiereseau.radiogroup1.caption" msgid "Type de réseau" msgstr "" #: tsaisiereseau.statictext1.caption msgctxt "TSAISIERESEAU.STATICTEXT1.CAPTION" msgid "x=" msgstr "" #: tsaisiereseau.statictext2.caption msgctxt "TSAISIERESEAU.STATICTEXT2.CAPTION" msgid "y=" msgstr "" #: tsaisiereseau.statictext3.caption msgctxt "TSAISIERESEAU.STATICTEXT3.CAPTION" msgid "x=" msgstr "" #: tsaisiereseau.statictext4.caption msgctxt "TSAISIERESEAU.STATICTEXT4.CAPTION" msgid "y=" msgstr "" #: tsaisiereseau.statictext5.caption msgctxt "tsaisiereseau.statictext5.caption" msgid "Ordre minimum" msgstr "" #: tsaisiereseau.statictext6.caption msgctxt "tsaisiereseau.statictext6.caption" msgid "Ordre maximum" msgstr "" #: tsaisiereseau.statictext7.caption msgid "Remarque importante: ce réseau diffractant doit être éclairé par une onde plane." msgstr "" #: tsaisiereseau.statictext8.caption msgid "Les longueurs d'onde peuvent être modifiées dans le menu options, indices du milieu" msgstr "" #: tsaisie_indices_milieu_ambiant.bitbtn1.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.BITBTN1.CAPTION" msgid "&OK" msgstr "" #: tsaisie_indices_milieu_ambiant.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.CAPTION" msgid "Indices du milieu ambiant" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_bleu_par_defaut.text msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.EDIT_INDICE_BLEU_PAR_DEFAUT.TEXT" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_rouge_par_defaut.text msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.EDIT_INDICE_ROUGE_PAR_DEFAUT.TEXT" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_vert_par_defaut.text msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.EDIT_INDICE_VERT_PAR_DEFAUT.TEXT" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext1.caption msgid "Longueur d'onde pour le vert:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext10.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.STATICTEXT10.CAPTION" msgid "nm" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext2.caption msgid "Longueur d'onde pour le rouge:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext3.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.STATICTEXT3.CAPTION" msgid "Pour le vert:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext4.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.STATICTEXT4.CAPTION" msgid "Pour le rouge:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext5.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.STATICTEXT5.CAPTION" msgid "Pour le bleu:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext6.caption msgid "Longueur d'onde pour le bleu:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext7.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.STATICTEXT7.CAPTION" msgid "Les valeurs de longueur d'onde sont utilisées pour les réseaux de diffraction" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext8.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.STATICTEXT8.CAPTION" msgid "nm" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext9.caption msgctxt "TSAISIE_INDICES_MILIEU_AMBIANT.STATICTEXT9.CAPTION" msgid "nm" msgstr "" #: tsplashscreen.caption msgid "splashscreen" msgstr "" #: tsplashscreen.label1.caption msgid "Dozzzaqueux" msgstr "" #: tsplashscreen.label2.caption msgid "Logiciel libre et gratuit de simulation de courbes de dosage" msgstr "" #: tsplashscreen.label3.caption msgid "Version 3.04 du 10/08/2009, codée en Lazarus" msgstr "" #: tsplashscreen.label4.caption msgid "Par Jean-Marie Biansan, 2005 à 2009" msgstr "" #: uchaines.rs msgid "'" msgstr "" #: uchaines.rs0 msgctxt "uchaines.rs0" msgid "0" msgstr "" #: uchaines.rs15 msgctxt "uchaines.rs15" msgid "1,5" msgstr "" #: uchaines.rs15b msgid "1.5" msgstr "" #: uchaines.rs16 msgctxt "uchaines.rs16" msgid "1,6" msgstr "" #: uchaines.rs16b msgid "1.6" msgstr "" #: uchaines.rs17 msgctxt "uchaines.rs17" msgid "1,7" msgstr "" #: uchaines.rs17b msgid "1.7" msgstr "" #: uchaines.rs2 msgctxt "uchaines.rs2" msgid " " msgstr "" #: uchaines.rs3 msgctxt "uchaines.rs3" msgid " " msgstr "" #: uchaines.rsa msgctxt "uchaines.rsa" msgid "A" msgstr "" #: uchaines.rsa0 msgid "A0" msgstr "" #: uchaines.rsa1 msgid "A1" msgstr "" #: uchaines.rsa2 msgctxt "uchaines.rsa2" msgid "A=" msgstr "" #: uchaines.rsa22 msgid "A2" msgstr "" #: uchaines.rsa3 msgid "A3" msgstr "" #: uchaines.rsa4 msgctxt "uchaines.rsa4" msgid "A4" msgstr "" #: uchaines.rsa5 msgid "A5" msgstr "" #: uchaines.rsabscissemax msgctxt "uchaines.rsabscissemax" msgid "Abscisse max.:" msgstr "" #: uchaines.rsabscissemaxi msgctxt "uchaines.rsabscissemaxi" msgid "Abscisse maximale" msgstr "" #: uchaines.rsabscissemin msgctxt "uchaines.rsabscissemin" msgid "Abscisse min.:" msgstr "" #: uchaines.rsabscissemini msgctxt "uchaines.rsabscissemini" msgid "Abscisse minimale" msgstr "" #: uchaines.rsactions msgctxt "uchaines.rsactions" msgid "Actions" msgstr "" #: uchaines.rsafficher msgctxt "uchaines.rsafficher" msgid "Afficher:" msgstr "" #: uchaines.rsafficher2 msgctxt "uchaines.rsafficher2" msgid "Afficher" msgstr "" #: uchaines.rsafficherlagr msgctxt "uchaines.rsafficherlagr" msgid "Afficher la grille" msgstr "" #: uchaines.rsafficherlesa msgctxt "uchaines.rsafficherlesa" msgid "Afficher les angles" msgstr "" #: uchaines.rsafficherlesc msgctxt "uchaines.rsafficherlesc" msgid "Afficher les coordonnées des segments" msgstr "" #: uchaines.rsafficherlesn msgctxt "uchaines.rsafficherlesn" msgid "Afficher les normales" msgstr "" #: uchaines.rsaffichervale msgctxt "uchaines.rsaffichervale" msgid "Afficher valeurs angles (en degrés)" msgstr "" #: uchaines.rsaide msgctxt "uchaines.rsaide" msgid "Aide" msgstr "" #: uchaines.rsaidesuroptge msgctxt "uchaines.rsaidesuroptge" msgid "Aide sur OptGeo" msgstr "" #: uchaines.rsajoutaugroup msgid "%s ajouté au groupe n°%s en cours de constitution." msgstr "" #: uchaines.rsajoutduncran msgid "Ajout d'un écran:" msgstr "" #: uchaines.rsajoutduncran2 msgctxt "uchaines.rsajoutduncran2" msgid "Ajout d'un écran" msgstr "" #: uchaines.rsajoutdundiap msgid "Ajout d'un diaphragme:" msgstr "" #: uchaines.rsajoutdundiap2 msgctxt "uchaines.rsajoutdundiap2" msgid "Ajout d'un diaphragme" msgstr "" #: uchaines.rsajoutdunecet msgid "Ajout d'une cette onde plane:" msgstr "" #: uchaines.rsajoutdunelam msgid "Ajout d'une lame semi-réfléchissante:" msgstr "" #: uchaines.rsajoutdunelam2 msgctxt "uchaines.rsajoutdunelam2" msgid "Ajout d'une lame semi-réfléchissante" msgstr "" #: uchaines.rsajoutdunelen msgid "Ajout d'une lentille convergente:" msgstr "" #: uchaines.rsajoutdunelen2 msgid "Ajout d'une lentille divergente:" msgstr "" #: uchaines.rsajoutdunelen3 msgid "Ajout d'une lentille épaisse:" msgstr "" #: uchaines.rsajoutdunelen4 msgctxt "uchaines.rsajoutdunelen4" msgid "Ajout d'une lentille épaisse" msgstr "" #: uchaines.rsajoutdunelen5 msgctxt "uchaines.rsajoutdunelen5" msgid "Ajout d'une lentille mince convergente paraxiale" msgstr "" #: uchaines.rsajoutdunelen6 msgctxt "uchaines.rsajoutdunelen6" msgid "Ajout d'une lentille mince divergente paraxiale" msgstr "" #: uchaines.rsajoutdunemes msgid "Ajout d'une mesure de distance:" msgstr "" #: uchaines.rsajoutdunemes2 msgid "Ajout d'une mesure d'angle:" msgstr "" #: uchaines.rsajoutdunesou msgid "Ajout d'une source ponctuelle:" msgstr "" #: uchaines.rsajoutdunmiro msgid "Ajout d'un miroir plan:" msgstr "" #: uchaines.rsajoutdunmiro10 msgctxt "uchaines.rsajoutdunmiro10" msgid "Ajout d'un miroir sphérique convexe réel" msgstr "" #: uchaines.rsajoutdunmiro11 msgctxt "uchaines.rsajoutdunmiro11" msgid "Ajout d'un miroir sphérique concave paraxial" msgstr "" #: uchaines.rsajoutdunmiro12 msgctxt "uchaines.rsajoutdunmiro12" msgid "Ajout d'un miroir sphérique concave réel" msgstr "" #: uchaines.rsajoutdunmiro2 msgctxt "uchaines.rsajoutdunmiro2" msgid "Ajout d'un miroir concave:" msgstr "" #: uchaines.rsajoutdunmiro3 msgctxt "uchaines.rsajoutdunmiro3" msgid "Ajout d'un miroir convexe:" msgstr "" #: uchaines.rsajoutdunmiro4 msgctxt "uchaines.rsajoutdunmiro4" msgid "Ajout d'un miroir concave:" msgstr "" #: uchaines.rsajoutdunmiro5 msgctxt "uchaines.rsajoutdunmiro5" msgid "Ajout d'un miroir convexe:" msgstr "" #: uchaines.rsajoutdunmiro6 msgid "Ajout d'un miroir cônique:" msgstr "" #: uchaines.rsajoutdunmiro7 msgctxt "uchaines.rsajoutdunmiro7" msgid "Ajout d'un miroir parabolique, elliptique ou hyperbolique" msgstr "" #: uchaines.rsajoutdunmiro8 msgctxt "uchaines.rsajoutdunmiro8" msgid "Ajout d'un miroir plan" msgstr "" #: uchaines.rsajoutdunmiro9 msgctxt "uchaines.rsajoutdunmiro9" msgid "Ajout d'un miroir sphérique convexe paraxial" msgstr "" #: uchaines.rsajoutdunoeil msgid "Ajout d'un oeil stylisé:" msgstr "" #: uchaines.rsajoutdunoeil2 msgctxt "uchaines.rsajoutdunoeil2" msgid "Ajout d'un oeil" msgstr "" #: uchaines.rsajoutdunpris msgctxt "uchaines.rsajoutdunpris" msgid "Ajout d'un prisme" msgstr "" #: uchaines.rsajoutdunrayo msgid "Ajout d'un rayon:" msgstr "" #: uchaines.rsajoutdunrsea msgctxt "uchaines.rsajoutdunrsea" msgid "Ajout d'un réseau" msgstr "" #: uchaines.rsajoutdunrsea2 msgid "Ajout d'un réseau diffractant" msgstr "" #: uchaines.rsajoutduntext msgid "Ajout d'un texte:" msgstr "" #: uchaines.rsajoutduntrai msgid "Ajout d'un trait..." msgstr "" #: uchaines.rsajoutduntrai2 msgctxt "uchaines.rsajoutduntrai2" msgid "Ajout d'un trait, fléche..." msgstr "" #: uchaines.rsajouter msgctxt "uchaines.rsajouter" msgid "Ajouter" msgstr "" #: uchaines.rsajouteroudit msgctxt "uchaines.rsajouteroudit" msgid "Ajouter (ou éditer) le commentaire de la simulation" msgstr "" #: uchaines.rsajouteruncra msgctxt "uchaines.rsajouteruncra" msgid "Ajouter un écran" msgstr "" #: uchaines.rsajouterundia msgctxt "uchaines.rsajouterundia" msgid "Ajouter un diaphragme à iris" msgstr "" #: uchaines.rsajouterunela msgctxt "uchaines.rsajouterunela" msgid "Ajouter une lame semi-réfléchissante" msgstr "" #: uchaines.rsajouterunele msgctxt "uchaines.rsajouterunele" msgid "Ajouter une lentille épaisse" msgstr "" #: uchaines.rsajouterunele2 msgctxt "uchaines.rsajouterunele2" msgid "Ajouter une lentille mince convergente paraxiale" msgstr "" #: uchaines.rsajouterunele3 msgctxt "uchaines.rsajouterunele3" msgid "Ajouter une lentille mince divergente paraxiale" msgstr "" #: uchaines.rsajouteruneon msgctxt "uchaines.rsajouteruneon" msgid "Ajouter une onde plane" msgstr "" #: uchaines.rsajouterunepo msgctxt "uchaines.rsajouterunepo" msgid "Ajouter une polycercle réfractant" msgstr "" #: uchaines.rsajouterunesp msgctxt "uchaines.rsajouterunesp" msgid "Ajouter une sphère réfractante" msgstr "" #: uchaines.rsajouterunmir msgctxt "uchaines.rsajouterunmir" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) concave" msgstr "" #: uchaines.rsajouterunmir2 msgctxt "uchaines.rsajouterunmir2" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) convexe" msgstr "" #: uchaines.rsajouterunmir3 msgctxt "uchaines.rsajouterunmir3" msgid "Ajouter un miroir plan" msgstr "" #: uchaines.rsajouterunmir4 msgctxt "uchaines.rsajouterunmir4" msgid "Ajouter un miroir sphérique convexe paraxial" msgstr "" #: uchaines.rsajouterunmir5 msgctxt "uchaines.rsajouterunmir5" msgid "Ajouter un miroir sphérique convexe réel" msgstr "" #: uchaines.rsajouterunmir6 msgctxt "uchaines.rsajouterunmir6" msgid "Ajouter un miroir sphérique concave paraxial" msgstr "" #: uchaines.rsajouterunmir7 msgctxt "uchaines.rsajouterunmir7" msgid "Ajouter un miroir sphérique concave réel" msgstr "" #: uchaines.rsajouterunobj msgctxt "uchaines.rsajouterunobj" msgid "Ajouter un objet ponctuel réel" msgstr "" #: uchaines.rsajouterunobj2 msgctxt "uchaines.rsajouterunobj2" msgid "Ajouter un objet ponctuel virtuel" msgstr "" #: uchaines.rsajouterunoei msgctxt "uchaines.rsajouterunoei" msgid "Ajouter un oeil stylisé" msgstr "" #: uchaines.rsajouterunpol msgctxt "uchaines.rsajouterunpol" msgid "Ajouter un polygône réfractant" msgstr "" #: uchaines.rsajouterunpri msgctxt "uchaines.rsajouterunpri" msgid "Ajouter un prisme isocéle" msgstr "" #: uchaines.rsajouterunray msgctxt "uchaines.rsajouterunray" msgid "Ajouter un rayon" msgstr "" #: uchaines.rsajouterunrse msgid "Ajouter un réseau diffractant" msgstr "" #: uchaines.rsajouteruntex msgctxt "uchaines.rsajouteruntex" msgid "Ajouter un texte sur le dessin" msgstr "" #: uchaines.rsajouteruntra msgctxt "uchaines.rsajouteruntra" msgid "Ajouter un trait, une fléche..." msgstr "" #: uchaines.rsajusterautom msgctxt "uchaines.rsajusterautom" msgid "Ajuster automatiquement à la plus petite taille" msgstr "" #: uchaines.rsangleausomme msgctxt "uchaines.rsangleausomme" msgid "Angle au sommet" msgstr "" #: uchaines.rsangledouvert msgctxt "uchaines.rsangledouvert" msgid "Angle d'ouverture" msgstr "" #: uchaines.rsangledouvert2 msgctxt "uchaines.rsangledouvert2" msgid "Angle d'ouverture" msgstr "" #: uchaines.rsanglepolaire msgctxt "uchaines.rsanglepolaire" msgid "Angle polaire du diaphragme" msgstr "" #: uchaines.rsanglepolaire2 msgctxt "uchaines.rsanglepolaire2" msgid "Angle polaire de l'axe focal" msgstr "" #: uchaines.rsanglepolaire3 msgctxt "uchaines.rsanglepolaire3" msgid "Angle polaire de la hauteur principale" msgstr "" #: uchaines.rsanglesdincid msgctxt "uchaines.rsanglesdincid" msgid "Angles d'incid. et de réfr." msgstr "" #: uchaines.rsanglespolair msgctxt "uchaines.rsanglespolair" msgid "Angles polaires FMi (extrémités)" msgstr "" #: uchaines.rsannuler msgctxt "uchaines.rsannuler" msgid "Annuler" msgstr "" #: uchaines.rsapropos msgctxt "uchaines.rsapropos" msgid "A propos" msgstr "" #: uchaines.rsaproposdecel msgctxt "uchaines.rsaproposdecel" msgid "A propos de ce logiciel" msgstr "" #: uchaines.rsaspect msgctxt "uchaines.rsaspect" msgid "Aspect" msgstr "" #: uchaines.rsaspectlcran msgctxt "uchaines.rsaspectlcran" msgid "Aspect à l'écran" msgstr "" #: uchaines.rsassocierlesf msgctxt "uchaines.rsassocierlesf" msgid "Associer les fichiers .opt avec OptGeo" msgstr "" #: uchaines.rsattention msgid "Attention !" msgstr "" #: uchaines.rsattention2 msgid "Attention !!" msgstr "" #: uchaines.rsattention3 msgid "Attention" msgstr "" #: uchaines.rsattention4 msgid "Attention !!!" msgstr "" #: uchaines.rsattraction msgctxt "uchaines.rsattraction" msgid "Attraction" msgstr "" #: uchaines.rsattractionde msgctxt "uchaines.rsattractionde" msgid "Attraction de la grille" msgstr "" #: uchaines.rsauteurjeanma msgid "Auteur: Jean-Marie Biansan" msgstr "" #: uchaines.rsaxedesymtrie msgctxt "uchaines.rsaxedesymtrie" msgid "Axe de symétrie" msgstr "" #: uchaines.rsaxefocal msgctxt "uchaines.rsaxefocal" msgid "Axe focal" msgstr "" #: uchaines.rsaxeoptique msgctxt "uchaines.rsaxeoptique" msgid "Axe optique" msgstr "" #: uchaines.rsbarr msgid "Barré" msgstr "" #: uchaines.rsbas msgid "Bas" msgstr "" #: uchaines.rsbasederegist msgctxt "uchaines.rsbasederegist" msgid "Base de registre" msgstr "" #: uchaines.rsbienvenue msgid "Bienvenue..." msgstr "" #: uchaines.rsblanc msgid "Blanc" msgstr "" #: uchaines.rsbleu msgid "Bleu" msgstr "" #: uchaines.rscacherdesseg msgctxt "uchaines.rscacherdesseg" msgid "Cacher des segments de rayon" msgstr "" #: uchaines.rscecinestpasu msgid "Ceci n'est pas une valeur numérique acceptable !" msgstr "" #: uchaines.rscediaphragme msgid "ce diaphragme" msgstr "" #: uchaines.rscefichierexi msgid "Ce fichier existe déjà." msgstr "" #: uchaines.rscegroupe msgid "ce groupe" msgstr "" #: uchaines.rscemiroircniq msgid "ce miroir cônique" msgstr "" #: uchaines.rscemiroirconc msgid "ce miroir concave paraxial" msgstr "" #: uchaines.rscemiroirconi msgid "ce miroir conique" msgstr "" #: uchaines.rscemiroirconv msgid "ce miroir convexe paraxial" msgstr "" #: uchaines.rscemiroirplan msgid "ce miroir plan" msgstr "" #: uchaines.rscemiroirsphr msgid "ce miroir sphérique concave" msgstr "" #: uchaines.rscemiroirsphr2 msgid "ce miroir sphérique convexe" msgstr "" #: uchaines.rscemiroirsphr3 msgid "ce miroir sphèrique" msgstr "" #: uchaines.rscemiroirsphr4 msgid "ce miroir sphérique" msgstr "" #: uchaines.rscentr msgid "Centré" msgstr "" #: uchaines.rscentrec msgctxt "uchaines.rscentrec" msgid "Centre C" msgstr "" #: uchaines.rscentredinert msgctxt "uchaines.rscentredinert" msgid "Centre d'inertie" msgstr "" #: uchaines.rscepolycercle msgid "ce polycercle" msgstr "" #: uchaines.rscepolygne msgid "ce polygône" msgstr "" #: uchaines.rscepolygone msgid "ce polygone" msgstr "" #: uchaines.rsceprisme msgid "ce prisme" msgstr "" #: uchaines.rscerayon msgid "ce rayon" msgstr "" #: uchaines.rscerayonlumin msgid "ce rayon lumineux" msgstr "" #: uchaines.rscercle msgctxt "uchaines.rscercle" msgid "Cercle" msgstr "" #: uchaines.rscereseau msgid "ce réseau" msgstr "" #: uchaines.rscesommetestr msgctxt "uchaines.rscesommetestr" msgid "Ce sommet est relié au suivant par:" msgstr "" #: uchaines.rscetangle msgid "cet angle" msgstr "" #: uchaines.rscetarcdecerc msgctxt "uchaines.rscetarcdecerc" msgid "En allant de Ai vers Ai+1, le sommet de l'arc de cercle est:" msgstr "" #: uchaines.rscetcran msgid "cet écran" msgstr "" #: uchaines.rscetexte msgid "ce texte" msgstr "" #: uchaines.rscetoeil msgid "cet oeil" msgstr "" #: uchaines.rscetrait msgid "ce trait" msgstr "" #: uchaines.rscettelamesem msgid "cette lame semi-réfléchissante" msgstr "" #: uchaines.rscettelentill msgid "cette lentille mince convergente" msgstr "" #: uchaines.rscettelentill2 msgid "cette lentille épaisse" msgstr "" #: uchaines.rscettelentill3 msgid "cette lentille mince divergente" msgstr "" #: uchaines.rscettelentill4 msgid "cette lentille" msgstr "" #: uchaines.rscettemesured msgid "cette mesure de distance" msgstr "" #: uchaines.rscettemesured2 msgctxt "uchaines.rscettemesured2" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured3 msgctxt "uchaines.rscettemesured3" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured4 msgctxt "uchaines.rscettemesured4" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured5 msgctxt "uchaines.rscettemesured5" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured6 msgctxt "uchaines.rscettemesured6" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured7 msgctxt "uchaines.rscettemesured7" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscetteondepla msgid "cette onde plane" msgstr "" #: uchaines.rscettesourcep msgid "cette source ponctuelle" msgstr "" #: uchaines.rscettesphre msgid "cette sphère" msgstr "" #: uchaines.rscettestructu msgid "Cette structure serait un segment..." msgstr "" #: uchaines.rschangementde msgid "Changement de langue" msgstr "" #: uchaines.rschoisissezau msgctxt "uchaines.rschoisissezau" msgid "Choisissez aussi éventuellement:" msgstr "" #: uchaines.rschoisissezlo msgid "Choisissez l'objet à supprimer:" msgstr "" #: uchaines.rschoixdelobje msgid "Choix de l'objet:" msgstr "" #: uchaines.rschoixduspara msgctxt "uchaines.rschoixduspara" msgid "Choix du séparateur décimal" msgstr "" #: uchaines.rsclicgauchepo msgid "Clic gauche pour ajouter %s au groupe..." msgstr "" #: uchaines.rsclicgauchepo2 msgctxt "uchaines.rsclicgauchepo2" msgid "Clic gauche pour sélectionner l'élément..." msgstr "" #: uchaines.rsclicgauchepo3 msgctxt "uchaines.rsclicgauchepo3" msgid "Clic gauche pour sélectionner l'élément..." msgstr "" #: uchaines.rsclicgauchepo4 msgid "Clic gauche pour sélectionner ce centre..." msgstr "" #: uchaines.rsclicgauchepo5 msgid "Clic gauche pour sélectionner ce foyer..." msgstr "" #: uchaines.rsclicgauchepo6 msgid "Clic gauche pour sélectionner ce bord de trou..." msgstr "" #: uchaines.rsclicgauchepo7 msgid "Clic gauche pour sélectionner ce sommet de prisme..." msgstr "" #: uchaines.rsclicgauchepo8 msgid "Clic gauche pour sélectionner ce sommet d'arc de cercle..." msgstr "" #: uchaines.rsclicgauchepo9 msgid "Clic gauche pour supprimer %s..." msgstr "" #: uchaines.rscliquersurle msgid "Cliquer sur le centre (intersection des droites)..." msgstr "" #: uchaines.rscliquersurlo msgid "Cliquer sur l'origine du segment..." msgstr "" #: uchaines.rscliquezpoura msgid "Cliquez pour afficher les propriétés de cet élément..." msgstr "" #: uchaines.rscliquezpourd msgid "Cliquez pour dupliquer cet élément..." msgstr "" #: uchaines.rscliquezsurle msgid "Cliquez sur les croix violettes des éléments à grouper, puis sur Fin..." msgstr "" #: uchaines.rscm msgid "cm" msgstr "" #: uchaines.rscommentaires msgid "Commentaires sur la simulation de titre non précisé..." msgstr "" #: uchaines.rscommentaires2 msgctxt "uchaines.rscommentaires2" msgid "Commentaire sur la simulation" msgstr "" #: uchaines.rscommentaires3 msgid "Commentaires sur la simulation de nom non précisé..." msgstr "" #: uchaines.rscommentaires4 msgid "Commentaires sur la simulation %s" msgstr "" #: uchaines.rscommentaires5 msgid "Commentaires sur la simulation %sopt" msgstr "" #: uchaines.rsconcave msgctxt "uchaines.rsconcave" msgid "Concave" msgstr "" #: uchaines.rsconcaveoucon msgctxt "uchaines.rsconcaveoucon" msgid "Concave ou convexe ?" msgstr "" #: uchaines.rsconfiguratio msgctxt "uchaines.rsconfiguratio" msgid "Configuration de la page pour l'impression" msgstr "" #: uchaines.rsconfiguratio2 msgctxt "uchaines.rsconfiguratio2" msgid "Configuration primaire d'OptGeo" msgstr "" #: uchaines.rscontacterlau msgctxt "uchaines.rscontacterlau" msgid "Contacter l'auteur" msgstr "" #: uchaines.rscoord msgctxt "uchaines.rscoord" msgid "Coord." msgstr "" #: uchaines.rscoordonnesde msgctxt "uchaines.rscoordonnesde" msgid "Coordonnées des segments" msgstr "" #: uchaines.rscoordonnesde2 msgctxt "uchaines.rscoordonnesde2" msgid "Coordonnées de ce sommet" msgstr "" #: uchaines.rscoordonnesde3 msgctxt "uchaines.rscoordonnesde3" msgid "Coordonnées des sommets des faces" msgstr "" #: uchaines.rscoordonnesde4 msgctxt "uchaines.rscoordonnesde4" msgid "Coordonnées de C" msgstr "" #: uchaines.rscoordonnesdu msgctxt "uchaines.rscoordonnesdu" msgid "Coordonnées du centre" msgstr "" #: uchaines.rscoordonnesdu2 msgctxt "uchaines.rscoordonnesdu2" msgid "Coordonnées du point supérieur gauche du texte" msgstr "" #: uchaines.rscoordonnesdu3 msgctxt "uchaines.rscoordonnesdu3" msgid "Coordonnées du 1er point" msgstr "" #: uchaines.rscoordonnesdu4 msgctxt "uchaines.rscoordonnesdu4" msgid "Coordonnées du 2nd point" msgstr "" #: uchaines.rscoordonnespo msgctxt "uchaines.rscoordonnespo" msgid "Coordonnées point 1" msgstr "" #: uchaines.rscoordonnespo2 msgctxt "uchaines.rscoordonnespo2" msgid "Coordonnées point 2" msgstr "" #: uchaines.rscopier msgctxt "uchaines.rscopier" msgid "Copier" msgstr "" #: uchaines.rscopiersimula msgctxt "uchaines.rscopiersimula" msgid "Copier simulation dans le presse-papier" msgstr "" #: uchaines.rscopiersimula2 msgctxt "uchaines.rscopiersimula2" msgid "Copier simulation dans le presse papier" msgstr "" #: uchaines.rscopyrightjea msgid "Copyright Jean-Marie Biansan, 2004, 2013" msgstr "" #: uchaines.rscouleur msgctxt "uchaines.rscouleur" msgid "Couleur:" msgstr "" #: uchaines.rscouleur2 msgctxt "uchaines.rscouleur2" msgid "Couleur" msgstr "" #: uchaines.rscouleuraxepa msgctxt "uchaines.rscouleuraxepa" msgid "Couleur axe par défaut" msgstr "" #: uchaines.rscouleurdefon msgctxt "uchaines.rscouleurdefon" msgid "Couleur de fond" msgstr "" #: uchaines.rscouleurdelal msgctxt "uchaines.rscouleurdelal" msgid "Couleur de la lentille" msgstr "" #: uchaines.rscouleurdelas msgctxt "uchaines.rscouleurdelas" msgid "Couleur de la source" msgstr "" #: uchaines.rscouleurdelat msgctxt "uchaines.rscouleurdelat" msgid "Couleur de la trace" msgstr "" #: uchaines.rscouleurdelax msgctxt "uchaines.rscouleurdelax" msgid "Couleur de l'axe optique" msgstr "" #: uchaines.rscouleurdelax2 msgctxt "uchaines.rscouleurdelax2" msgid "Couleur de l'axe optique" msgstr "" #: uchaines.rscouleurdelax3 msgctxt "uchaines.rscouleurdelax3" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax4 msgctxt "uchaines.rscouleurdelax4" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax5 msgctxt "uchaines.rscouleurdelax5" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax6 msgctxt "uchaines.rscouleurdelax6" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax7 msgctxt "uchaines.rscouleurdelax7" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdeloe msgctxt "uchaines.rscouleurdeloe" msgid "Couleur de l'oeil" msgstr "" #: uchaines.rscouleurdespo msgctxt "uchaines.rscouleurdespo" msgid "Couleur des points" msgstr "" #: uchaines.rscouleurdesra msgctxt "uchaines.rscouleurdesra" msgid "Couleur des rayons" msgstr "" #: uchaines.rscouleurdudia msgctxt "uchaines.rscouleurdudia" msgid "Couleur du diaphragme" msgstr "" #: uchaines.rscouleurdumir msgctxt "uchaines.rscouleurdumir" msgid "Couleur du miroir" msgstr "" #: uchaines.rscouleurdupri msgctxt "uchaines.rscouleurdupri" msgid "Couleur du prisme" msgstr "" #: uchaines.rscouleurduray msgctxt "uchaines.rscouleurduray" msgid "Couleur du rayon" msgstr "" #: uchaines.rscouleurdutra msgctxt "uchaines.rscouleurdutra" msgid "Couleur du trait" msgstr "" #: uchaines.rscouleurlcran msgctxt "uchaines.rscouleurlcran" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran2 msgctxt "uchaines.rscouleurlcran2" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran3 msgctxt "uchaines.rscouleurlcran3" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran4 msgctxt "uchaines.rscouleurlcran4" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran5 msgctxt "uchaines.rscouleurlcran5" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran6 msgctxt "uchaines.rscouleurlcran6" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran7 msgctxt "uchaines.rscouleurlcran7" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurpardf msgctxt "uchaines.rscouleurpardf" msgid "Couleur par défaut" msgstr "" #: uchaines.rscouleurrayon msgctxt "uchaines.rscouleurrayon" msgid "Couleur rayon par défaut" msgstr "" #: uchaines.rscration msgid "Création ?" msgstr "" #: uchaines.rscrationrussi msgid "Création réussie." msgstr "" #: uchaines.rscrerungroupe msgid "Créer un groupe contenant tous les éléments" msgstr "" #: uchaines.rscroix msgid "Croix +" msgstr "" #: uchaines.rscroixdroite msgctxt "uchaines.rscroixdroite" msgid "Croix droite" msgstr "" #: uchaines.rscroixoblique msgctxt "uchaines.rscroixoblique" msgid "Croix oblique" msgstr "" #: uchaines.rscroixx msgid "Croix x" msgstr "" #: uchaines.rscrrunenouvel msgid "Créér une nouvelle simulation" msgstr "" #: uchaines.rscrrunenouvel2 msgid "Créér une nouvelle simulation en choisissant les dimensions de l'espace de travail" msgstr "" #: uchaines.rsd msgctxt "uchaines.rsd" msgid "D=" msgstr "" #: uchaines.rsdam msgid "dam" msgstr "" #: uchaines.rsdefaire msgid "Défaire" msgstr "" #: uchaines.rsdelalicenseg msgctxt "uchaines.rsdelalicenseg" msgid "de la license GNU GPL" msgstr "" #: uchaines.rsdelespacedet msgctxt "uchaines.rsdelespacedet" msgid "de l'espace de travail" msgstr "" #: uchaines.rsdelespacedet2 msgctxt "uchaines.rsdelespacedet2" msgid "de l'espace de travail" msgstr "" #: uchaines.rsdemonrpertoi msgctxt "uchaines.rsdemonrpertoi" msgid "de mon répertoire personnel" msgstr "" #: uchaines.rsdernierpoint msgid "Dernier point pour l'angle au sommet..." msgstr "" #: uchaines.rsdesurfacedcr msgctxt "uchaines.rsdesurfacedcr" msgid "de surface d'écran avec repére orthonormé)=" msgstr "" #: uchaines.rsdeuxdimensio msgctxt "uchaines.rsdeuxdimensio" msgid "à deux dimensions, libre et gratuit, sous license GPL." msgstr "" #: uchaines.rsdeuxsommetsc msgid "Deux sommets consécutifs confondus..." msgstr "" #: uchaines.rsdfinirlerper msgctxt "uchaines.rsdfinirlerper" msgid "Définir le répertoire personnel" msgstr "" #: uchaines.rsdiamtre msgctxt "uchaines.rsdiamtre" msgid "Diamètre" msgstr "" #: uchaines.rsdiamtre2 msgctxt "uchaines.rsdiamtre2" msgid "Diamètre=" msgstr "" #: uchaines.rsdiamtreangul msgctxt "uchaines.rsdiamtreangul" msgid "Diamètre angulaire du trou:" msgstr "" #: uchaines.rsdiamtredutro msgctxt "uchaines.rsdiamtredutro" msgid "Diamètre du trou:" msgstr "" #: uchaines.rsdiaphragme msgctxt "uchaines.rsdiaphragme" msgid "Diaphragme" msgstr "" #: uchaines.rsdiaphragmen msgid "Diaphragme n° %s" msgstr "" #: uchaines.rsdimensionsde msgctxt "uchaines.rsdimensionsde" msgid "Dimensions de l'espace de travail" msgstr "" #: uchaines.rsdioptres msgctxt "uchaines.rsdioptres" msgid "Dioptres:" msgstr "" #: uchaines.rsdisque msgctxt "uchaines.rsdisque" msgid "Disque" msgstr "" #: uchaines.rsdivers msgctxt "uchaines.rsdivers" msgid "Divers" msgstr "" #: uchaines.rsdivers2 msgctxt "uchaines.rsdivers2" msgid "Divers:" msgstr "" #: uchaines.rsdm msgid "dm" msgstr "" #: uchaines.rsdoisjecrerle msgid "Dois je créer le groupe n°%s en y mettant tous les éléments présents ?" msgstr "" #: uchaines.rsdondesparezc msgctxt "uchaines.rsdondesparezc" msgid "d'onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)" msgstr "" #: uchaines.rsdondesparezc2 msgctxt "uchaines.rsdondesparezc2" msgid "d'onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)" msgstr "" #: uchaines.rsdonnerlesval msgctxt "uchaines.rsdonnerlesval" msgid "Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces" msgstr "" #: uchaines.rsdonnerlesval2 msgctxt "uchaines.rsdonnerlesval2" msgid "Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces" msgstr "" #: uchaines.rsdonnesaberra msgid "Données aberrantes!" msgstr "" #: uchaines.rsdonnesaberra2 msgid "Données aberrantes !" msgstr "" #: uchaines.rsdonnesdecons msgid "Données de construction de la conique aberrantes !" msgstr "" #: uchaines.rsdonnesdecons2 msgid "Données de construction du miroir aberrantes !" msgstr "" #: uchaines.rsdplacer msgctxt "uchaines.rsdplacer" msgid "Déplacer" msgstr "" #: uchaines.rsdplacerlebor msgid "Déplacer le bord, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerlecen msgid "Déplacer le centre, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerlefoy msgid "Déplacer le foyer, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerlesom msgid "Déplacer le sommet, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerllmen msgctxt "uchaines.rsdplacerllmen" msgid "Déplacer l'élément, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerllmen2 msgctxt "uchaines.rsdplacerllmen2" msgid "Déplacer l'élément, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerunlme msgctxt "uchaines.rsdplacerunlme" msgid "Déplacer un élément existant: translation, rotation, changement focale ou rayon de courbure..." msgstr "" #: uchaines.rsdplacerunlme2 msgctxt "uchaines.rsdplacerunlme2" msgid "Déplacer un élément" msgstr "" #: uchaines.rsdroite msgid "Droite" msgstr "" #: uchaines.rsdsassocier msgctxt "uchaines.rsdsassocier" msgid "Désassocier" msgstr "" #: uchaines.rsdudernierrpe msgctxt "uchaines.rsdudernierrpe" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: uchaines.rsdudernierrpe2 msgctxt "uchaines.rsdudernierrpe2" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: uchaines.rsdupliquer msgctxt "uchaines.rsdupliquer" msgid "Dupliquer" msgstr "" #: uchaines.rsdupliquerunl msgctxt "uchaines.rsdupliquerunl" msgid "Dupliquer un élément existant" msgstr "" #: uchaines.rsdupliquerunl2 msgctxt "uchaines.rsdupliquerunl2" msgid "Dupliquer un élément" msgstr "" #: uchaines.rsdurpertoiree msgid "du répertoire %sexemples%s" msgstr "" #: uchaines.rse msgctxt "uchaines.rse" msgid "e=" msgstr "" #: uchaines.rsecran msgctxt "uchaines.rsecran" msgid "Ecran" msgstr "" #: uchaines.rsecrann msgid "Ecran n° %s" msgstr "" #: uchaines.rsecrans msgctxt "uchaines.rsecrans" msgid "Ecrans:" msgstr "" #: uchaines.rsediterlecomm msgctxt "uchaines.rsediterlecomm" msgid "Editer le commentaire de la simulation" msgstr "" #: uchaines.rsediteurdetex msgctxt "uchaines.rsediteurdetex" msgid "Editeur de texte" msgstr "" #: uchaines.rsedition msgctxt "uchaines.rsedition" msgid "Edition" msgstr "" #: uchaines.rselementparlm msgctxt "uchaines.rselementparlm" msgid "Element par élément" msgstr "" #: uchaines.rselmentschois msgctxt "uchaines.rselmentschois" msgid "Eléments à choisir" msgstr "" #: uchaines.rsempennagedes msgctxt "uchaines.rsempennagedes" msgid "Empennage des rayons" msgstr "" #: uchaines.rsen1000medela msgctxt "uchaines.rsen1000medela" msgid "(en 1000éme de la taille du segment)" msgstr "" #: uchaines.rsen1000medela2 msgctxt "uchaines.rsen1000medela2" msgid "(en 1000éme de la diagonale de l'espace de travail)" msgstr "" #: uchaines.rsen11000delad msgctxt "uchaines.rsen11000delad" msgid "en 1/1000 de la diagonale" msgstr "" #: uchaines.rsencliquantsu msgid "En cliquant sur le bouton %sOK%s, vous déclarez accepter les termes" msgstr "" #: uchaines.rsenregistrers msgctxt "uchaines.rsenregistrers" msgid "Enregistrer simulation sous" msgstr "" #: uchaines.rsenregistrers2 msgctxt "uchaines.rsenregistrers2" msgid "Enregistrer simulation" msgstr "" #: uchaines.rsenrflexion msgid "En réflexion" msgstr "" #: uchaines.rsentransmissi msgid "En transmission" msgstr "" #: uchaines.rsentreparenth msgctxt "uchaines.rsentreparenth" msgid "(entre parenthéses et séparés par des virgules" msgstr "" #: uchaines.rsepaisseurdel msgctxt "uchaines.rsepaisseurdel" msgid "Epaisseur de la trace" msgstr "" #: uchaines.rsepaisseurdud msgid "Epaisseur du diaphragme trop petite, ou diaphragme débordant de l'écran !" msgstr "" #: uchaines.rsepaisseurdut msgctxt "uchaines.rsepaisseurdut" msgid "Epaisseur du trait" msgstr "" #: uchaines.rsepaisseurlcr msgctxt "uchaines.rsepaisseurlcr" msgid "Epaisseur à l'écran" msgstr "" #: uchaines.rsepaisseurlcr2 msgctxt "uchaines.rsepaisseurlcr2" msgid "Epaisseur à l'écran" msgstr "" #: uchaines.rsepaisseurlcr3 msgctxt "uchaines.rsepaisseurlcr3" msgid "Epaisseur à l'écran" msgstr "" #: uchaines.rsepaisseurpar msgctxt "uchaines.rsepaisseurpar" msgid "Epaisseur par défaut" msgstr "" #: uchaines.rsepaisseurtra msgctxt "uchaines.rsepaisseurtra" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra10 msgctxt "uchaines.rsepaisseurtra10" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra2 msgctxt "uchaines.rsepaisseurtra2" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra3 msgctxt "uchaines.rsepaisseurtra3" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra4 msgctxt "uchaines.rsepaisseurtra4" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra5 msgctxt "uchaines.rsepaisseurtra5" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra6 msgctxt "uchaines.rsepaisseurtra6" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra7 msgctxt "uchaines.rsepaisseurtra7" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra8 msgctxt "uchaines.rsepaisseurtra8" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra9 msgctxt "uchaines.rsepaisseurtra9" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rserreur msgid "Erreur !!!" msgstr "" #: uchaines.rserreurcritiq msgid "Erreur critique !" msgstr "" #: uchaines.rserreurdcritu msgid "Erreur d'écriture sur le disque" msgstr "" #: uchaines.rsespacedetrav msgid "Espace de travail: horiz: [%s,%s]; vert: [%s,%s] " msgstr "" #: uchaines.rsespacedetrav2 msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] " msgstr "" #: uchaines.rsespacedetrav3 msgctxt "uchaines.rsespacedetrav3" msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - Simulation: %s" msgstr "" #: uchaines.rsespacedetrav4 msgctxt "uchaines.rsespacedetrav4" msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - Simulation: %s" msgstr "" #: uchaines.rsetesvoussurd msgid "Etes-vous sur de vouloir supprimer %s ?" msgstr "" #: uchaines.rsetsansespace msgctxt "uchaines.rsetsansespace" msgid "et sans espaces); exemple: (1,4,10)" msgstr "" #: uchaines.rsexcentricit msgctxt "uchaines.rsexcentricit" msgid "Excentricité" msgstr "" #: uchaines.rsexemple12014 msgctxt "uchaines.rsexemple12014" msgid "(exemple: 120 145 276)" msgstr "" #: uchaines.rsexportdelasi msgctxt "uchaines.rsexportdelasi" msgid "Export de la simulation au format image JPG" msgstr "" #: uchaines.rsexportergrap msgctxt "uchaines.rsexportergrap" msgid "Exporter graphe" msgstr "" #: uchaines.rsexporterlasi msgctxt "uchaines.rsexporterlasi" msgid "Exporter la simulation au format image PNG" msgstr "" #: uchaines.rsexporterlasi2 msgid "Exporter la simulation au format Poscscript" msgstr "" #: uchaines.rsexportjpg msgctxt "uchaines.rsexportjpg" msgid "Export JPG" msgstr "" #: uchaines.rsexportpng msgctxt "uchaines.rsexportpng" msgid "Export PNG" msgstr "" #: uchaines.rsexportps msgctxt "uchaines.rsexportps" msgid "Export PS" msgstr "" #: uchaines.rsexpressionil msgid "Expression illégale pour la l'abscisse minimale !" msgstr "" #: uchaines.rsexpressionil2 msgid "Expression illégale pour la l'abscisse maximale !" msgstr "" #: uchaines.rsexpressionil3 msgctxt "uchaines.rsexpressionil3" msgid "Expression illégale pour la l'ordonnée minimale !" msgstr "" #: uchaines.rsexpressionil4 msgctxt "uchaines.rsexpressionil4" msgid "Expression illégale pour la l'ordonnée maximale !" msgstr "" #: uchaines.rsexpressionil5 msgid "Expression illégale pour la l'abcisse minimale !" msgstr "" #: uchaines.rsexpressionil6 msgctxt "uchaines.rsexpressionil6" msgid "Expression illégale pour la l'ordonnée minimale !" msgstr "" #: uchaines.rsexpressionil7 msgid "Expression illégale pour la l'abcisse maximale !" msgstr "" #: uchaines.rsexpressionil8 msgctxt "uchaines.rsexpressionil8" msgid "Expression illégale pour la l'ordonnée maximale !" msgstr "" #: uchaines.rsextrmitpoint msgctxt "uchaines.rsextrmitpoint" msgid "Extrémité (point 2)" msgstr "" #: uchaines.rsextrmitrayon msgctxt "uchaines.rsextrmitrayon" msgid "Extrémité rayon 1 (point D)" msgstr "" #: uchaines.rsf msgctxt "uchaines.rsf" msgid "|f|=" msgstr "" #: uchaines.rsfacteurdezoo msgctxt "uchaines.rsfacteurdezoo" msgid "Facteur de zoom" msgstr "" #: uchaines.rsfait msgid "Fait !" msgstr "" #: uchaines.rsfaitespasser msgid "Faites passer la souris sur une des croix violettes, ou cliquez sur Fin..." msgstr "" #: uchaines.rsfaitespasser2 msgid "Faites passer la souris sur un des éléments colorés..." msgstr "" #: uchaines.rsfaitespasser3 msgid "Faites passer la souris sur un des cercles rouges..." msgstr "" #: uchaines.rsfaitespasser4 msgid "Faites passer la souris sur un point cerclé..." msgstr "" #: uchaines.rsfichier msgctxt "uchaines.rsfichier" msgid "Fichier" msgstr "" #: uchaines.rsfichierdesin msgid "Fichier des indices de réfraction non trouvé !" msgstr "" #: uchaines.rsfichierendom msgid "Fichier endommagé!!!" msgstr "" #: uchaines.rsfichierinacc msgid "Fichier inaccessible !" msgstr "" #: uchaines.rsfichierinacc2 msgid "Fichier inaccessible en lecture!" msgstr "" #: uchaines.rsfindelacrati msgid "Fin de la création d'un groupe" msgstr "" #: uchaines.rsfindpl msgid "Fin dépl." msgstr "" #: uchaines.rsfindupl msgid "Fin dupl." msgstr "" #: uchaines.rsfingroupemen msgid "Fin groupement" msgstr "" #: uchaines.rsfinprop msgid "Fin prop." msgstr "" #: uchaines.rsfinsup msgid "Fin sup." msgstr "" #: uchaines.rsflche msgid "Fléche" msgstr "" #: uchaines.rsflchen msgid "Fléche n° %s" msgstr "" #: uchaines.rsfocale msgctxt "uchaines.rsfocale" msgid "Focale" msgstr "" #: uchaines.rsfocalevaleur msgctxt "uchaines.rsfocalevaleur" msgid "Focale (valeur absolue)" msgstr "" #: uchaines.rsformedelapre msgctxt "uchaines.rsformedelapre" msgid "Forme de la première extrémité" msgstr "" #: uchaines.rsformedelasec msgctxt "uchaines.rsformedelasec" msgid "Forme de la seconde extrémité" msgstr "" #: uchaines.rsfoyerf msgctxt "uchaines.rsfoyerf" msgid "Foyer F" msgstr "" #: uchaines.rsgauche msgid "Gauche" msgstr "" #: uchaines.rsgr msgid "Gr" msgstr "" #: uchaines.rsgras msgid "Gras" msgstr "" #: uchaines.rsgrille msgctxt "uchaines.rsgrille" msgid "Grille" msgstr "" #: uchaines.rsgrillederepr msgctxt "uchaines.rsgrillederepr" msgid "Grille de repérage" msgstr "" #: uchaines.rsgroupen msgid "Groupe n° %s" msgstr "" #: uchaines.rsgrouper msgctxt "uchaines.rsgrouper" msgid "Grouper" msgstr "" #: uchaines.rsgrouperdeslm msgctxt "uchaines.rsgrouperdeslm" msgid "Grouper des éléments" msgstr "" #: uchaines.rsgrouperdeslm2 msgctxt "uchaines.rsgrouperdeslm2" msgid "Grouper des éléments existants pour les translater ensemble" msgstr "" #: uchaines.rsgroupertout msgctxt "uchaines.rsgroupertout" msgid "Grouper tout" msgstr "" #: uchaines.rshachures msgctxt "uchaines.rshachures" msgid "Hachures" msgstr "" #: uchaines.rshachuressirs msgctxt "uchaines.rshachuressirs" msgid "Hachures si réseau en réflexion" msgstr "" #: uchaines.rshaut msgid "Haut" msgstr "" #: uchaines.rshauteur msgctxt "uchaines.rshauteur" msgid "Hauteur" msgstr "" #: uchaines.rshauteur2 msgctxt "uchaines.rshauteur2" msgid "Hauteur=" msgstr "" #: uchaines.rshlas msgid "Hélas..." msgstr "" #: uchaines.rshlas2 msgid "Hélas" msgstr "" #: uchaines.rshm msgid "hm" msgstr "" #: uchaines.rshorizontale msgctxt "uchaines.rshorizontale" msgid "Horizontale" msgstr "" #: uchaines.rshorizontale2 msgctxt "uchaines.rshorizontale2" msgid "Horizontale:" msgstr "" #: uchaines.rshorizontalem msgctxt "uchaines.rshorizontalem" msgid "Horizontalement" msgstr "" #: uchaines.rsimportationr msgid "Importation réussie" msgstr "" #: uchaines.rsimpossible msgid "Impossible !" msgstr "" #: uchaines.rsimpossibledc msgid "Impossible d'écrire le fichier de configuration %s. La configuration ne sera pas sauvegardée." msgstr "" #: uchaines.rsimpossiblede msgid "Impossible de créer le fichier de configuration primaire d'OptGeo. Vérifiez que vous avez le droit d'écriture dans le répertoire d'installation d'OptGeo. Pour utiliser OptGeo sans fichier de configuration, cliquez sur OK. Sinon, cliquez sur Abandon, rendez le répertoire d'installation d'OptGeo accessible en écriture,puis relancez OptGeo" msgstr "" #: uchaines.rsimpossiblede2 msgid "Impossible de grouper moins de 2 éléments !" msgstr "" #: uchaines.rsimpossiblede3 msgid "Impossible de sauver le commentaire" msgstr "" #: uchaines.rsimprimer msgctxt "uchaines.rsimprimer" msgid "Imprimer" msgstr "" #: uchaines.rsimprimerlasi msgctxt "uchaines.rsimprimerlasi" msgid "Imprimer la simulation" msgstr "" #: uchaines.rsindicederfra msgctxt "uchaines.rsindicederfra" msgid "Indice de réfraction du milieu" msgstr "" #: uchaines.rsindicederfra2 msgctxt "uchaines.rsindicederfra2" msgid "Indice de réfraction du verre" msgstr "" #: uchaines.rsindicesdumil msgctxt "uchaines.rsindicesdumil" msgid "Indices du milieu ambiant" msgstr "" #: uchaines.rsindicesdumil2 msgctxt "uchaines.rsindicesdumil2" msgid "Indices du milieu ambiant et longueurs d'onde" msgstr "" #: uchaines.rsindicesdumil3 msgctxt "uchaines.rsindicesdumil3" msgid "Indices du milieu ambiant et longueurs d'onde" msgstr "" #: uchaines.rsindiquericil msgctxt "uchaines.rsindiquericil" msgid "Indiquer ici les propriétés communes à appliquer à tous les éléments:" msgstr "" #: uchaines.rsitalique msgid "Italique" msgstr "" #: uchaines.rsjamais msgid "Jamais" msgstr "" #: uchaines.rsjeanmariebia msgctxt "uchaines.rsjeanmariebia" msgid "jeanmarie.biansan@free.fr" msgstr "" #: uchaines.rsjeneparviens msgid "Je ne parviens pas à créer le répertoire exemples que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjeneparviens2 msgctxt "uchaines.rsjeneparviens2" msgid "Je ne parviens pas à créer le répertoire de simulations personnelles que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjeneparviens3 msgid "Je ne parviens pas à créer le répertoire de configuration personnelle que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjeneparviens4 msgctxt "uchaines.rsjeneparviens4" msgid "Je ne parviens pas à créer le répertoire de simulations personnelles que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjoindrelespo msgctxt "uchaines.rsjoindrelespo" msgid "Joindre les points par:" msgstr "" #: uchaines.rsjoindreparun msgctxt "uchaines.rsjoindreparun" msgid "Joindre par un arc de cercle" msgstr "" #: uchaines.rsjoindreparun2 msgctxt "uchaines.rsjoindreparun2" msgid "Joindre par un segment" msgstr "" #: uchaines.rsjpg msgctxt "uchaines.rsjpg" msgid "JPG" msgstr "" #: uchaines.rskm msgid "km" msgstr "" #: uchaines.rsladistanceen msgid "La distance entre les points 1 et 2 doit être inférieure au double du rayon !" msgstr "" #: uchaines.rslaffichagede msgid "L'affichage des angles impose le tracé des normales" msgstr "" #: uchaines.rslafocaledoit msgid "La focale doit être non nulle !" msgstr "" #: uchaines.rslamesemirflc msgctxt "uchaines.rslamesemirflc" msgid "Lame semi réfléchissante" msgstr "" #: uchaines.rslamesemirflc2 msgid "Lame semi-réfléchissante" msgstr "" #: uchaines.rslamesemirflc3 msgid "Lame semi réfléchissante n° %s" msgstr "" #: uchaines.rslamesemirfle msgid "Lame semi-réflechissante" msgstr "" #: uchaines.rslangue msgctxt "uchaines.rslangue" msgid "Langue" msgstr "" #: uchaines.rslasimulation msgid "La simulation a été modifiée est les modifications n'ont pas été sauvegardées. Voulez vous vraiment quitter OptGéo ?" msgstr "" #: uchaines.rslasimulation2 msgid "La simulation a été modifiée et les modifications n'ont pas été sauvegardées. Voulez vous vraiment commencer une nouvelle simulation ?" msgstr "" #: uchaines.rslavirgule msgid "La virgule: ," msgstr "" #: uchaines.rsledger msgid "Ledger" msgstr "" #: uchaines.rslegal msgid "Legal" msgstr "" #: uchaines.rslegroupenqui msgctxt "uchaines.rslegroupenqui" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui10 msgctxt "uchaines.rslegroupenqui10" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui11 msgctxt "uchaines.rslegroupenqui11" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui12 msgctxt "uchaines.rslegroupenqui12" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui13 msgctxt "uchaines.rslegroupenqui13" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui14 msgctxt "uchaines.rslegroupenqui14" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui15 msgctxt "uchaines.rslegroupenqui15" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui16 msgctxt "uchaines.rslegroupenqui16" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui17 msgctxt "uchaines.rslegroupenqui17" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui18 msgctxt "uchaines.rslegroupenqui18" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui19 msgctxt "uchaines.rslegroupenqui19" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui2 msgctxt "uchaines.rslegroupenqui2" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui20 msgctxt "uchaines.rslegroupenqui20" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui21 msgctxt "uchaines.rslegroupenqui21" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui22 msgctxt "uchaines.rslegroupenqui22" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui23 msgctxt "uchaines.rslegroupenqui23" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui24 msgctxt "uchaines.rslegroupenqui24" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui3 msgctxt "uchaines.rslegroupenqui3" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui4 msgctxt "uchaines.rslegroupenqui4" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui5 msgctxt "uchaines.rslegroupenqui5" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui6 msgctxt "uchaines.rslegroupenqui6" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui7 msgctxt "uchaines.rslegroupenqui7" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui8 msgctxt "uchaines.rslegroupenqui8" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui9 msgctxt "uchaines.rslegroupenqui9" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenvie msgid "Le groupe n°%s vient d'être créé. Ses éléments pourront être translatés ensemble." msgstr "" #: uchaines.rslentille msgctxt "uchaines.rslentille" msgid "Lentille" msgstr "" #: uchaines.rslentilleminc msgctxt "uchaines.rslentilleminc" msgid "Lentille mince convergente" msgstr "" #: uchaines.rslentilleminc2 msgctxt "uchaines.rslentilleminc2" msgid "Lentille mince divergente" msgstr "" #: uchaines.rslentilleminc3 msgid "Lentille mince convergente idéale" msgstr "" #: uchaines.rslentilleminc4 msgid "Lentille mince divergente idéale" msgstr "" #: uchaines.rslentilleminc5 msgid "Lentille mince convergente n° %s" msgstr "" #: uchaines.rslentilleminc6 msgid "Lentille mince divergente n° %s" msgstr "" #: uchaines.rslentillepais msgid "Lentille épaisse" msgstr "" #: uchaines.rslentillepais2 msgid "Lentille épaisse n° %s" msgstr "" #: uchaines.rslepoint msgid "Le point: ." msgstr "" #: uchaines.rslerayondecou msgid "Le rayon de courbure doit être non nul !" msgstr "" #: uchaines.rslesangleslcr msgctxt "uchaines.rslesangleslcr" msgid "les angles à l'écran ne sont pas respectés." msgstr "" #: uchaines.rslesdeuxpoint msgid "Les deux points doivent être distincts !" msgstr "" #: uchaines.rsleslongueurs msgid "Les longueurs d'onde peuvent être modifiées dans le menu options, indices du milieuambiant et longueurs d'onde." msgstr "" #: uchaines.rslesparamtres msgid "Les paramètres de la simulation en cours de chargement doivent-ils écraser les actuels ?" msgstr "" #: uchaines.rslesvaleursde msgctxt "uchaines.rslesvaleursde" msgid "Les valeurs de longueur d'onde sont utilisées pour les réseaux de diffraction" msgstr "" #: uchaines.rsletter msgid "Letter" msgstr "" #: uchaines.rslicensegpl msgctxt "uchaines.rslicensegpl" msgid "License GPL" msgstr "" #: uchaines.rslistedessegm msgctxt "uchaines.rslistedessegm" msgid "Liste des segments concernés" msgstr "" #: uchaines.rslog1 msgctxt "uchaines.rslog1" msgid "log1" msgstr "" #: uchaines.rslog2 msgctxt "uchaines.rslog2" msgid "log2" msgstr "" #: uchaines.rslog3 msgctxt "uchaines.rslog3" msgid "log3" msgstr "" #: uchaines.rslog4 msgctxt "uchaines.rslog4" msgid "log4" msgstr "" #: uchaines.rslog5 msgctxt "uchaines.rslog5" msgid "log5" msgstr "" #: uchaines.rslog6 msgctxt "uchaines.rslog6" msgid "log6" msgstr "" #: uchaines.rslog7 msgctxt "uchaines.rslog7" msgid "log7" msgstr "" #: uchaines.rslogiciellibr msgid "Logiciel libre et gratuit de simulation d'optique géométrique plane" msgstr "" #: uchaines.rslongueurdond msgid "Longueur d'onde pour le vert" msgstr "" #: uchaines.rslongueurdond2 msgid "Longueur d'onde pour le rouge" msgstr "" #: uchaines.rslongueurdond3 msgid "Longueur d'onde pour le bleu" msgstr "" #: uchaines.rslongueurtrac msgctxt "uchaines.rslongueurtrac" msgid "Longueur trace (en % de la diagonale de l'espace de travail)" msgstr "" #: uchaines.rslumireblanch msgid "Lumière blanche" msgstr "" #: uchaines.rsm msgid "m" msgstr "" #: uchaines.rsm2 msgid "µm" msgstr "" #: uchaines.rsmaiseuh msgid "Mais euh !!" msgstr "" #: uchaines.rsmanuellement msgctxt "uchaines.rsmanuellement" msgid "Manuellement" msgstr "" #: uchaines.rsmatriau msgctxt "uchaines.rsmatriau" msgid "Matériau:" msgstr "" #: uchaines.rsmesuredangle msgctxt "uchaines.rsmesuredangle" msgid "Mesure d'angle" msgstr "" #: uchaines.rsmesuredangle2 msgctxt "uchaines.rsmesuredangle2" msgid "Mesure d'angle n° %s" msgstr "" #: uchaines.rsmesuredangle3 msgctxt "uchaines.rsmesuredangle3" msgid "Mesure d'angle n° %s" msgstr "" #: uchaines.rsmesuredangle4 msgctxt "uchaines.rsmesuredangle4" msgid "Mesure d'angle" msgstr "" #: uchaines.rsmesuredangle5 msgctxt "uchaines.rsmesuredangle5" msgid "Mesure d'angle n° %s" msgstr "" #: uchaines.rsmesurededist msgctxt "uchaines.rsmesurededist" msgid "Mesure de distance" msgstr "" #: uchaines.rsmesurededist2 msgid "Mesure de distance n° %s" msgstr "" #: uchaines.rsmesurerladis msgctxt "uchaines.rsmesurerladis" msgid "Mesurer la distance entre deux points" msgstr "" #: uchaines.rsmesurerunang msgctxt "uchaines.rsmesurerunang" msgid "Mesurer un angle" msgstr "" #: uchaines.rsmiroircnique msgctxt "uchaines.rsmiroircnique" msgid "Miroir cônique" msgstr "" #: uchaines.rsmiroircnique2 msgid "Miroir cônique n° %s" msgstr "" #: uchaines.rsmiroirconcav msgid "Miroir concave idéal n° %s" msgstr "" #: uchaines.rsmiroirconcav2 msgid "Miroir concave n° %s" msgstr "" #: uchaines.rsmiroirconcav3 msgid "Miroir concave paraxial" msgstr "" #: uchaines.rsmiroirconiqu msgid "Miroir conique" msgstr "" #: uchaines.rsmiroirconvex msgid "Miroir convexe idéal n° %s" msgstr "" #: uchaines.rsmiroirconvex2 msgid "Miroir convexe n° %s" msgstr "" #: uchaines.rsmiroirconvex3 msgid "Miroir convexe paraxial" msgstr "" #: uchaines.rsmiroirplan msgctxt "uchaines.rsmiroirplan" msgid "Miroir plan" msgstr "" #: uchaines.rsmiroirplann msgid "Miroir plan n° %s" msgstr "" #: uchaines.rsmiroirs msgctxt "uchaines.rsmiroirs" msgid "Miroirs:" msgstr "" #: uchaines.rsmiroirsphriq msgctxt "uchaines.rsmiroirsphriq" msgid "Miroir sphérique concave" msgstr "" #: uchaines.rsmiroirsphriq2 msgctxt "uchaines.rsmiroirsphriq2" msgid "Miroir sphérique convexe" msgstr "" #: uchaines.rsmiroirsphriq3 msgid "Miroir sphérique concave paraxial" msgstr "" #: uchaines.rsmiroirsphriq4 msgid "Miroir sphérique convexe paraxial" msgstr "" #: uchaines.rsmiroirsphriq5 msgid "Miroir sphérique concave réel" msgstr "" #: uchaines.rsmiroirsphriq6 msgid "Miroir sphérique convexe réel" msgstr "" #: uchaines.rsmm msgid "mm" msgstr "" #: uchaines.rsmodeajoutdun msgid "Mode: ajout d'un rayon lumineux. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun10 msgid "Mode: ajout d'un oeil. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun11 msgid "Mode: ajout d'une lame semi-réfléchissante. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun12 msgctxt "uchaines.rsmodeajoutdun12" msgid "Mode: ajout d'un miroir sphérique concave. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun13 msgctxt "uchaines.rsmodeajoutdun13" msgid "Mode: ajout d'un miroir sphérique convexe. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun14 msgid "Mode: ajout d'une lentille mince convergente. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun15 msgid "Mode: ajout d'une lentille épaisse. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun16 msgid "Mode: ajout d'une sphère réfractante. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun17 msgid "Mode: ajout d'une lentille mince divergente. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun18 msgctxt "uchaines.rsmodeajoutdun18" msgid "Mode: ajout d'un miroir sphérique concave. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun19 msgctxt "uchaines.rsmodeajoutdun19" msgid "Mode: ajout d'un miroir sphérique convexe. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun2 msgid "Mode: ajout d'un miroir plan. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun20 msgid "Mode: ajout d'une source ponctuelle. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun21 msgid "Mode: ajout d'une onde plane" msgstr "" #: uchaines.rsmodeajoutdun22 msgid "Mode: ajout d'un texte. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun23 msgid "Mode: ajout d'un diaphragme. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun24 msgid "Mode: ajout d'un groupe. Esc pour annuler. %sFin%s pour achever le groupement." msgstr "" #: uchaines.rsmodeajoutdun25 msgid "Mode: ajout d'un réseau diffractant. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun3 msgid "Mode: ajout d'un trait ou d'une fléche. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun4 msgid "Mode: ajout d'un miroir conique concave. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun5 msgid "Mode: ajout d'un miroir conique convexe. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun6 msgid "Mode: ajout d'un polyhèdre réfractant. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun7 msgid "Mode: ajout d'un prisme isocèle. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun8 msgid "Mode: ajout d'une polysphère réfractante. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun9 msgid "Mode: ajout d'un écran. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme msgid "Mode: changement de taille du trou. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme2 msgid "Mode: changement d'orientation du prisme. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme3 msgid "Mode: changement de la hauteur du prisme. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme4 msgid "Mode: changement de l'angle au sommet du prisme. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme5 msgid "Mode: changement focale d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodechgtrayo msgctxt "uchaines.rsmodechgtrayo" msgid "Mode: chgt rayon courbure d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodechgtrayo2 msgctxt "uchaines.rsmodechgtrayo2" msgid "Mode: chgt rayon courbure d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme msgctxt "uchaines.rsmodedplaceme" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme2 msgctxt "uchaines.rsmodedplaceme2" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme3 msgctxt "uchaines.rsmodedplaceme3" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme4 msgctxt "uchaines.rsmodedplaceme4" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodeduplicat msgid "Mode: duplication d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodemesureda msgid "Mode: mesure d'angle. Esc pour annuler." msgstr "" #: uchaines.rsmodemesurede msgid "Mode: mesure de distance. Esc pour annuler." msgstr "" #: uchaines.rsmodeproprits msgid "Mode: propriétés d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmoderotation msgid "Mode: rotation d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodesuppress msgid "Mode: suppression d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodetranslat msgid "Mode: translation d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodification msgctxt "uchaines.rsmodification" msgid "Modification d'une mesure de distance" msgstr "" #: uchaines.rsmodification2 msgctxt "uchaines.rsmodification2" msgid "Modification d'une mesure d'angle" msgstr "" #: uchaines.rsmodifier msgctxt "uchaines.rsmodifier" msgid "Modifier" msgstr "" #: uchaines.rsmodifierlesd msgctxt "uchaines.rsmodifierlesd" msgid "Modifier les dimensions de l'espace de travail" msgstr "" #: uchaines.rsmodifierlesp msgctxt "uchaines.rsmodifierlesp" msgid "Modifier l'espace de travail" msgstr "" #: uchaines.rsn msgid "n" msgstr "" #: uchaines.rsnantn msgid "Néant n° %s" msgstr "" #: uchaines.rsnepeuttreetn msgctxt "uchaines.rsnepeuttreetn" msgid "ne peut être et ne sera pas fait." msgstr "" #: uchaines.rsnm msgctxt "uchaines.rsnm" msgid "nm" msgstr "" #: uchaines.rsnom msgid "Nom: %s" msgstr "" #: uchaines.rsnombre msgctxt "uchaines.rsnombre" msgid "Nombre:" msgstr "" #: uchaines.rsnombredecopi msgctxt "uchaines.rsnombredecopi" msgid "Nombre de copies" msgstr "" #: uchaines.rsnombrededcim msgctxt "uchaines.rsnombrededcim" msgid "Nombre de décimales:" msgstr "" #: uchaines.rsnombredepoin msgctxt "uchaines.rsnombredepoin" msgid "Nombre de points calculés pour tracer une surface d'onde:" msgstr "" #: uchaines.rsnombrederayo msgid "Nombre de rayons convergents vers cet objet virtuel" msgstr "" #: uchaines.rsnombrederayo2 msgid "Nombre de rayons émis par cette source ponctuelle" msgstr "" #: uchaines.rsnombrederayo3 msgctxt "uchaines.rsnombrederayo3" msgid "Nombre de rayons" msgstr "" #: uchaines.rsnombrederayo4 msgctxt "uchaines.rsnombrederayo4" msgid "Nombre de rayons émis par cette source ponctuelle:" msgstr "" #: uchaines.rsnombredesomm msgctxt "uchaines.rsnombredesomm" msgid "Nombre de sommets" msgstr "" #: uchaines.rsnombredetrai msgid "Nombre de traits par mm" msgstr "" #: uchaines.rsnombremaxdes msgctxt "uchaines.rsnombremaxdes" msgid "Nombre max. de segments par rayon" msgstr "" #: uchaines.rsnombremaxdes2 msgctxt "uchaines.rsnombremaxdes2" msgid "Nombre max. de segments" msgstr "" #: uchaines.rsnombremaxdes3 msgctxt "uchaines.rsnombremaxdes3" msgid "Nombre max. de segment par rayon" msgstr "" #: uchaines.rsnombremaxima msgid "Nombre maximal de groupes deja atteint !" msgstr "" #: uchaines.rsnombremaxima10 msgid "Nombre maximal de polyhèdres deja atteint !" msgstr "" #: uchaines.rsnombremaxima11 msgctxt "uchaines.rsnombremaxima11" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima12 msgctxt "uchaines.rsnombremaxima12" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima13 msgctxt "uchaines.rsnombremaxima13" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima14 msgctxt "uchaines.rsnombremaxima14" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima15 msgctxt "uchaines.rsnombremaxima15" msgid "Nombre maximal de lentilles mines convergentes paraxiales deja atteint !" msgstr "" #: uchaines.rsnombremaxima16 msgctxt "uchaines.rsnombremaxima16" msgid "Nombre maximal de lentilles mines convergentes paraxiales deja atteint !" msgstr "" #: uchaines.rsnombremaxima17 msgid "Nombre maximal de sources ponctuelles deja atteint !" msgstr "" #: uchaines.rsnombremaxima18 msgid "Nombre maximal d'ondes planes deja atteint !" msgstr "" #: uchaines.rsnombremaxima19 msgid "Nombre maximal de miroirs deja atteint !" msgstr "" #: uchaines.rsnombremaxima2 msgid "Nombre maximal de prismes deja atteint !" msgstr "" #: uchaines.rsnombremaxima20 msgid "Nombre maximal de lentilles deja atteint !" msgstr "" #: uchaines.rsnombremaxima21 msgid "Nombre maximal de lames deja atteint !" msgstr "" #: uchaines.rsnombremaxima22 msgid "Nombre maximal de miroirs deja atteint !" msgstr "" #: uchaines.rsnombremaxima23 msgid "Nombre maximal de miroirs coniques deja atteint !" msgstr "" #: uchaines.rsnombremaxima24 msgid "Nombre maximal d'écrans deja atteint !" msgstr "" #: uchaines.rsnombremaxima25 msgid "Nombre maximal de diaphragmes deja atteint !" msgstr "" #: uchaines.rsnombremaxima26 msgid "Nombre maximal de polysphères deja atteint !" msgstr "" #: uchaines.rsnombremaxima27 msgid "Nombre maximal de polyhedres deja atteint !" msgstr "" #: uchaines.rsnombremaxima28 msgid "Nombre maximal de source ponctuelle deja atteint !" msgstr "" #: uchaines.rsnombremaxima29 msgid "Nombre maximal d'onde plane deja atteint !" msgstr "" #: uchaines.rsnombremaxima3 msgid "Nombre maximal de miroirs plans deja atteint !" msgstr "" #: uchaines.rsnombremaxima30 msgid "Nombre maximal de textes deja atteint !" msgstr "" #: uchaines.rsnombremaxima31 msgid "Nombre maximal de texte deja atteint !" msgstr "" #: uchaines.rsnombremaxima32 msgid "Nombre maximal de lentilles épaisses deja atteint !" msgstr "" #: uchaines.rsnombremaxima33 msgctxt "uchaines.rsnombremaxima33" msgid "Nombre maximal d'yeux deja atteint !" msgstr "" #: uchaines.rsnombremaxima34 msgctxt "uchaines.rsnombremaxima34" msgid "Nombre maximal d'yeux deja atteint !" msgstr "" #: uchaines.rsnombremaxima35 msgctxt "uchaines.rsnombremaxima35" msgid "Nombre maximal:" msgstr "" #: uchaines.rsnombremaxima36 msgid "Nombre maximal de réseau déja atteint !" msgstr "" #: uchaines.rsnombremaxima37 msgid "Nombre maximal de réseaux déja atteint !" msgstr "" #: uchaines.rsnombremaxima4 msgid "Nombre maximal de traits déjà atteint !" msgstr "" #: uchaines.rsnombremaxima5 msgctxt "uchaines.rsnombremaxima5" msgid "Nombre maximal d'écran deja atteint !" msgstr "" #: uchaines.rsnombremaxima6 msgctxt "uchaines.rsnombremaxima6" msgid "Nombre maximal d'écran deja atteint !" msgstr "" #: uchaines.rsnombremaxima7 msgctxt "uchaines.rsnombremaxima7" msgid "Nombre maximal d'écran deja atteint !" msgstr "" #: uchaines.rsnombremaxima8 msgid "Nombre maximal de rayons deja atteint !" msgstr "" #: uchaines.rsnombremaxima9 msgid "Nombre maximal de spheres deja atteint !" msgstr "" #: uchaines.rsnormale msgid "Normale" msgstr "" #: uchaines.rsnormales msgctxt "uchaines.rsnormales" msgid "Normales" msgstr "" #: uchaines.rsnouvellesimu msgctxt "uchaines.rsnouvellesimu" msgid "Nouvelle simulation" msgstr "" #: uchaines.rsobjetdupliqu msgid "Objet à dupliquer:" msgstr "" #: uchaines.rsobjetponctue msgctxt "uchaines.rsobjetponctue" msgid "Objet ponctuel réel ou virtuel" msgstr "" #: uchaines.rsobtu msgctxt "uchaines.rsobtu" msgid "Obtu" msgstr "" #: uchaines.rsoeil msgid "Oeil" msgstr "" #: uchaines.rsoeiln msgid "Oeil n° %s" msgstr "" #: uchaines.rsoeilstylis msgctxt "uchaines.rsoeilstylis" msgid "Oeil stylisé" msgstr "" #: uchaines.rsok msgctxt "uchaines.rsok" msgid "&OK" msgstr "" #: uchaines.rsok2 msgctxt "uchaines.rsok2" msgid "OK" msgstr "" #: uchaines.rsoketenregist msgctxt "uchaines.rsoketenregist" msgid "&Ok et enregistrer sur disque" msgstr "" #: uchaines.rsondeplane msgctxt "uchaines.rsondeplane" msgid "Onde plane" msgstr "" #: uchaines.rsondeplanen msgid "Onde plane n° %s" msgstr "" #: uchaines.rsoptgeo msgctxt "uchaines.rsoptgeo" msgid "OptGeo" msgstr "" #: uchaines.rsoptgeo2 msgid "Optgeo" msgstr "" #: uchaines.rsoptgeoestdif msgid "OptGeo est diffusé sous license GPL; veuillez la lire:" msgstr "" #: uchaines.rsoptgeoestexc msgid "OptGeo est exécuté pour la première fois, ou bien son fichier de configuration est corrompu: vous allez maintenant le créer !" msgstr "" #: uchaines.rsoptgeologici msgctxt "uchaines.rsoptgeologici" msgid "OptGeo, logiciel de simulation d'optique géométrique" msgstr "" #: uchaines.rsoptions msgctxt "uchaines.rsoptions" msgid "Options" msgstr "" #: uchaines.rsoptionsdelag msgctxt "uchaines.rsoptionsdelag" msgid "Options de la grille" msgstr "" #: uchaines.rsoptionsdesno msgctxt "uchaines.rsoptionsdesno" msgid "Options des normales" msgstr "" #: uchaines.rsoptionspourl msgctxt "uchaines.rsoptionspourl" msgid "Options pour le tracé des normales aux dioptres et miroirs" msgstr "" #: uchaines.rsordonnemax msgctxt "uchaines.rsordonnemax" msgid "Ordonnée max.:" msgstr "" #: uchaines.rsordonnemin msgctxt "uchaines.rsordonnemin" msgid "Ordonnée min.:" msgstr "" #: uchaines.rsordonneminim msgctxt "uchaines.rsordonneminim" msgid "Ordonnée minimale" msgstr "" #: uchaines.rsordonnesmaxi msgctxt "uchaines.rsordonnesmaxi" msgid "Ordonnées maximale" msgstr "" #: uchaines.rsordremaximum msgctxt "uchaines.rsordremaximum" msgid "Ordre maximum" msgstr "" #: uchaines.rsordreminimum msgctxt "uchaines.rsordreminimum" msgid "Ordre minimum" msgstr "" #: uchaines.rsordresprendr msgctxt "uchaines.rsordresprendr" msgid "Ordres à prendre en compte" msgstr "" #: uchaines.rsorientation msgctxt "uchaines.rsorientation" msgid "Orientation" msgstr "" #: uchaines.rsoriginepoint msgctxt "uchaines.rsoriginepoint" msgid "Origine (point 1)" msgstr "" #: uchaines.rsouvrirsimula msgctxt "uchaines.rsouvrirsimula" msgid "Ouvrir simulation" msgstr "" #: uchaines.rsouvrirunesim msgid "Ouvrir une simulation existante" msgstr "" #: uchaines.rsp msgctxt "uchaines.rsp" msgid "P=" msgstr "" #: uchaines.rsparamtre msgctxt "uchaines.rsparamtre" msgid "Paramétre" msgstr "" #: uchaines.rspasdelagrill msgctxt "uchaines.rspasdelagrill" msgid "Pas de la grille" msgstr "" #: uchaines.rspasdesimulat msgid "Pas de simulation en cours..." msgstr "" #: uchaines.rspashorizonta msgctxt "uchaines.rspashorizonta" msgid "Pas horizontal=" msgstr "" #: uchaines.rspasvertical msgctxt "uchaines.rspasvertical" msgid "Pas vertical=" msgstr "" #: uchaines.rspaysage msgid "Paysage" msgstr "" #: uchaines.rsplein msgid "Plein" msgstr "" #: uchaines.rspm msgid "pm" msgstr "" #: uchaines.rspng msgctxt "uchaines.rspng" msgid "PNG" msgstr "" #: uchaines.rspoint1 msgctxt "uchaines.rspoint1" msgid "Point 1" msgstr "" #: uchaines.rspoint2 msgctxt "uchaines.rspoint2" msgid "Point 2" msgstr "" #: uchaines.rspointcourant msgctxt "uchaines.rspointcourant" msgid "Point courant" msgstr "" #: uchaines.rspointills msgid "Pointillés" msgstr "" #: uchaines.rspointsaberra msgid "Points aberrants !" msgstr "" #: uchaines.rspointssaisis msgid "Points saisis aberrants !" msgstr "" #: uchaines.rspointstroppr msgid "Points trop proches !" msgstr "" #: uchaines.rspointstroppr2 msgctxt "uchaines.rspointstroppr2" msgid "Points trop proches ou hors de l'espace de travail !" msgstr "" #: uchaines.rspointstroppr3 msgctxt "uchaines.rspointstroppr3" msgid "Points trop proches ou hors de l'espace de travail !" msgstr "" #: uchaines.rspolice msgctxt "uchaines.rspolice" msgid "Police" msgstr "" #: uchaines.rspolicepardfa msgctxt "uchaines.rspolicepardfa" msgid "Police par défaut" msgstr "" #: uchaines.rspolycercle msgid "Polycercle" msgstr "" #: uchaines.rspolycerclerf msgid "Polycercle réfractant" msgstr "" #: uchaines.rspolycerclerf2 msgid "Polycercle réfractant n° %s" msgstr "" #: uchaines.rspolygone msgid "Polygone" msgstr "" #: uchaines.rspolyhdrerfra msgctxt "uchaines.rspolyhdrerfra" msgid "Polyhèdre réfractant" msgstr "" #: uchaines.rspolyhdrerfra2 msgid "Polyhèdre réfractant n° %s" msgstr "" #: uchaines.rspolysphrerfr msgctxt "uchaines.rspolysphrerfr" msgid "Polysphère réfractante" msgstr "" #: uchaines.rsportrait msgid "Portrait" msgstr "" #: uchaines.rsposition msgctxt "uchaines.rsposition" msgid "Position" msgstr "" #: uchaines.rspositiondele msgctxt "uchaines.rspositiondele" msgid "Position de l'empennage sur le segment:" msgstr "" #: uchaines.rspositionnezl msgid "Positionnez l'extrémité du segment et cliquez..." msgstr "" #: uchaines.rspositionnezl10 msgid "Positionnez le bord intérieur (point 1) et cliquez..." msgstr "" #: uchaines.rspositionnezl11 msgid "Positionnez le point 2 (autre bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl12 msgid "Positionnez l'autre extrémité du trait et cliquez..." msgstr "" #: uchaines.rspositionnezl13 msgid "Positionnez le foyer de la conique et cliquez..." msgstr "" #: uchaines.rspositionnezl14 msgid "Positionnez le point 2 (autre bord de l'écran) et cliquez..." msgstr "" #: uchaines.rspositionnezl15 msgid "Positionnez le point 2 (centre pupille) et cliquez..." msgstr "" #: uchaines.rspositionnezl16 msgid "Positionnez le point 2 (autre bord de la lame) et cliquez..." msgstr "" #: uchaines.rspositionnezl17 msgid "Positionnez le point A (sommet du prisme) et cliquez..." msgstr "" #: uchaines.rspositionnezl18 msgid "Positionnez le point 2 (autre bord de la lentille) et cliquez..." msgstr "" #: uchaines.rspositionnezl19 msgid "Positionnez le centre de courbure de la 1ère face puis cliquez..." msgstr "" #: uchaines.rspositionnezl2 msgid "Positionnez l'extrémité du 1er segment et cliquez..." msgstr "" #: uchaines.rspositionnezl20 msgid "Positionnez le centre de courbure de la 2ème face puis cliquez..." msgstr "" #: uchaines.rspositionnezl21 msgid "Positionnez le point 2 (rayon 2 limitant le faisceau) puis cliquez..." msgstr "" #: uchaines.rspositionnezl22 msgid "Positionnez le point 2 (extrémité du plan d'onde) puis cliquez..." msgstr "" #: uchaines.rspositionnezl23 msgid "Positionnez le bord extérieur (point 2) et cliquez.." msgstr "" #: uchaines.rspositionnezl24 msgid "Positionnez le foyer et cliquez." msgstr "" #: uchaines.rspositionnezl25 msgid "Positionnez le centre de courbure et cliquez." msgstr "" #: uchaines.rspositionnezl26 msgid "Positionnez le sommet de la conique et cliquez..." msgstr "" #: uchaines.rspositionnezl27 msgid "Positionnez le sommet de l'arc de cercle entre les points %s et %s..." msgstr "" #: uchaines.rspositionnezl28 msgid "Positionnez le sommet de l'arc de cercle entre les points %s et 1..." msgstr "" #: uchaines.rspositionnezl29 msgctxt "uchaines.rspositionnezl29" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl3 msgid "Positionnez l'extrêmité du 2nd segment..." msgstr "" #: uchaines.rspositionnezl30 msgid "Positionnez le point 1 (extrémité 1 du trait) et cliquez..." msgstr "" #: uchaines.rspositionnezl31 msgctxt "uchaines.rspositionnezl31" msgid "Positionnez le point 1 (premier bord de l'écran) et cliquez..." msgstr "" #: uchaines.rspositionnezl32 msgid "Positionnez le centre du diaphragme et cliquez..." msgstr "" #: uchaines.rspositionnezl33 msgctxt "uchaines.rspositionnezl33" msgid "Positionnez le point 1 (premier bord de l'écran) et cliquez..." msgstr "" #: uchaines.rspositionnezl34 msgid "Positionnez le point 1 (origine du rayon) et cliquez..." msgstr "" #: uchaines.rspositionnezl35 msgid "Positionnez le centre de la sphère et cliquez..." msgstr "" #: uchaines.rspositionnezl36 msgid "Positionnez le centre d'inertie G du prisme et cliquez..." msgstr "" #: uchaines.rspositionnezl37 msgid "Positionnez le point 1 du polyhèdre et cliquez..." msgstr "" #: uchaines.rspositionnezl38 msgctxt "uchaines.rspositionnezl38" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl39 msgctxt "uchaines.rspositionnezl39" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl4 msgid "Positionnez le point suivant et cliquez..." msgstr "" #: uchaines.rspositionnezl40 msgctxt "uchaines.rspositionnezl40" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl41 msgctxt "uchaines.rspositionnezl41" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl42 msgctxt "uchaines.rspositionnezl42" msgid "Positionnez le point 1 (premier bord de la lentille) et cliquez..." msgstr "" #: uchaines.rspositionnezl43 msgctxt "uchaines.rspositionnezl43" msgid "Positionnez le point 1 (premier bord de la lentille) et cliquez..." msgstr "" #: uchaines.rspositionnezl44 msgid "Positionnez le point objet virtuel et cliquez..." msgstr "" #: uchaines.rspositionnezl45 msgid "Positionnez le point objet réel et cliquez..." msgstr "" #: uchaines.rspositionnezl46 msgid "Positionnez le point 1 (origine d'un rayon et du plan d'onde) et cliquez..." msgstr "" #: uchaines.rspositionnezl47 msgctxt "uchaines.rspositionnezl47" msgid "Positionnez le premier bord du miroir (point 1) et cliquez..." msgstr "" #: uchaines.rspositionnezl48 msgctxt "uchaines.rspositionnezl48" msgid "Positionnez le premier bord du miroir (point 1) et cliquez..." msgstr "" #: uchaines.rspositionnezl49 msgid "Positionnez le bord supérieur gauche du texte et cliquez..." msgstr "" #: uchaines.rspositionnezl5 msgid "Positionnez le sommet d'arc de cercle suivant..." msgstr "" #: uchaines.rspositionnezl50 msgid "Positionnez le sommet de la 1ère face..." msgstr "" #: uchaines.rspositionnezl51 msgid "Positionnez le sommet 1 de la polysphère et cliquez..." msgstr "" #: uchaines.rspositionnezl52 msgid "Positionnez le point 1 (rétine) et cliquez..." msgstr "" #: uchaines.rspositionnezl53 msgid "Positionnez le point 1 (premier bord du réseau) et cliquez..." msgstr "" #: uchaines.rspositionnezl54 msgid "Positionnez le point 2 (autre bord du réseau) et cliquez..." msgstr "" #: uchaines.rspositionnezl6 msgid "Positionnez le point 2 (direction du rayon) et cliquez..." msgstr "" #: uchaines.rspositionnezl7 msgid "Positionnez le point D (direction du rayon) et cliquez..." msgstr "" #: uchaines.rspositionnezl8 msgid "Positionnez le point 1 (rayon1 limitant le faisceau) et cliquez..." msgstr "" #: uchaines.rspositionnezl9 msgid "Positionnez le sommet de la 2ème face..." msgstr "" #: uchaines.rspositionnezu msgid "Positionnez un point de la surface et cliquez..." msgstr "" #: uchaines.rspositionnezu2 msgid "Positionnez un foyer et cliquez." msgstr "" #: uchaines.rspouravoirunr msgctxt "uchaines.rspouravoirunr" msgid "pour avoir un repère approximativement orthonormé" msgstr "" #: uchaines.rspourchaquera msgctxt "uchaines.rspourchaquera" msgid "Pour chaque rayon, rayons enfants:" msgstr "" #: uchaines.rspourcrerunel msgctxt "uchaines.rspourcrerunel" msgid "Pour créer une lentille autre que plan-convexe, utilisez l'objet lentille épaisse..." msgstr "" #: uchaines.rspourcrerunel2 msgctxt "uchaines.rspourcrerunel2" msgid "Pour créer une lentille autre que plan-convexe, utilisez l'objet lentille épaisse..." msgstr "" #: uchaines.rspourdplacerc msgctxt "uchaines.rspourdplacerc" msgid "Pour déplacer cette palette, glissez-déposez à partir de cette zone..." msgstr "" #: uchaines.rspourfinirpos msgid "Pour finir, positionnez l'autre extrémité du miroir et cliquez." msgstr "" #: uchaines.rspourlebleu msgctxt "uchaines.rspourlebleu" msgid "Pour le bleu:" msgstr "" #: uchaines.rspourlerouge msgctxt "uchaines.rspourlerouge" msgid "Pour le rouge:" msgstr "" #: uchaines.rspourletracde msgctxt "uchaines.rspourletracde" msgid "Pour le tracé des surfaces d'onde:" msgstr "" #: uchaines.rspourlevert msgctxt "uchaines.rspourlevert" msgid "Pour le vert:" msgstr "" #: uchaines.rspourprendree msgid "Pour prendre en compte le changement de langue de l'interface, Optgeo doit maintenant être arrété. Puis relancez le." msgstr "" #: uchaines.rspourtouslesl msgctxt "uchaines.rspourtouslesl" msgid "Pour tous les éléments" msgstr "" #: uchaines.rspourtouterem msgctxt "uchaines.rspourtouterem" msgid "Pour toute remarque, cliquer sur:" msgstr "" #: uchaines.rsprfrences msgctxt "uchaines.rsprfrences" msgid "Préférences" msgstr "" #: uchaines.rsprfrencespro msgctxt "uchaines.rsprfrencespro" msgid "Préférences: propriétés par défaut à la création" msgstr "" #: uchaines.rsprisme msgctxt "uchaines.rsprisme" msgid "Prisme" msgstr "" #: uchaines.rsprismen msgid "Prisme n° %s" msgstr "" #: uchaines.rsproprits msgctxt "uchaines.rsproprits" msgid "Propriétés" msgstr "" #: uchaines.rspropritsdece msgctxt "uchaines.rspropritsdece" msgid "Propriétés de cette sphère" msgstr "" #: uchaines.rspropritsdece10 msgid "Propriétés de ce diaphragme:" msgstr "" #: uchaines.rspropritsdece11 msgid "Propriétés de cette lame semi-réfléchissante:" msgstr "" #: uchaines.rspropritsdece12 msgid "Propriétés de ce rayon:" msgstr "" #: uchaines.rspropritsdece13 msgid "Propriétés de cette source ponctuelle:" msgstr "" #: uchaines.rspropritsdece14 msgid "Propriétés de cette onde plane:" msgstr "" #: uchaines.rspropritsdece15 msgid "Propriétés de ce miroir elliptique:" msgstr "" #: uchaines.rspropritsdece16 msgid "Propriétés de ce miroir hyperbolique:" msgstr "" #: uchaines.rspropritsdece17 msgid "Propriétés de ce miroir parabolique:" msgstr "" #: uchaines.rspropritsdece18 msgid "Propriétés de ce miroir concave:" msgstr "" #: uchaines.rspropritsdece19 msgid "Propriétés de ce miroir convexe:" msgstr "" #: uchaines.rspropritsdece2 msgctxt "uchaines.rspropritsdece2" msgid "Propriétés de ce polycercle" msgstr "" #: uchaines.rspropritsdece20 msgid "Propriétés de cette lentille convergente:" msgstr "" #: uchaines.rspropritsdece21 msgid "Propriétés de cette lentille épaisse:" msgstr "" #: uchaines.rspropritsdece22 msgid "Propriétés de cette lentille divergente:" msgstr "" #: uchaines.rspropritsdece23 msgid "Propriétés de cette mesure de distance:" msgstr "" #: uchaines.rspropritsdece24 msgid "Propriétés de ce réseau" msgstr "" #: uchaines.rspropritsdece3 msgctxt "uchaines.rspropritsdece3" msgid "Propriétés de ce polygône" msgstr "" #: uchaines.rspropritsdece4 msgid "Propriétés de ce trait..." msgstr "" #: uchaines.rspropritsdece5 msgid "Propriétés de cette mesure d'angle:" msgstr "" #: uchaines.rspropritsdece6 msgid "Propriétés de ce texte:" msgstr "" #: uchaines.rspropritsdece7 msgid "Propriétés de ce miroir plan:" msgstr "" #: uchaines.rspropritsdece8 msgid "Propriétés de cet écran:" msgstr "" #: uchaines.rspropritsdece9 msgid "Propriétés de cet oeil stylisé:" msgstr "" #: uchaines.rspropritsdela msgctxt "uchaines.rspropritsdela" msgid "Propriétés de la grille" msgstr "" #: uchaines.rspropritsdele msgctxt "uchaines.rspropritsdele" msgid "Propriétés de l'empennage des rayons" msgstr "" #: uchaines.rspropritsdelo msgctxt "uchaines.rspropritsdelo" msgid "Propriétés de l'objet:" msgstr "" #: uchaines.rspropritsdelo2 msgctxt "uchaines.rspropritsdelo2" msgid "Propriétés de l'objet:" msgstr "" #: uchaines.rspropritsdesp msgctxt "uchaines.rspropritsdesp" msgid "Propriétés des points" msgstr "" #: uchaines.rspropritsdufi msgid "Propriétés du fichier Postscript" msgstr "" #: uchaines.rspropritsdunl msgctxt "uchaines.rspropritsdunl" msgid "Propriétés d'un élément existant" msgstr "" #: uchaines.rspropritsdunl2 msgctxt "uchaines.rspropritsdunl2" msgid "Propriétés d'un élément" msgstr "" #: uchaines.rsquevoulezvou msgctxt "uchaines.rsquevoulezvou" msgid "Que voulez vous faire ?" msgstr "" #: uchaines.rsquitter msgctxt "uchaines.rsquitter" msgid "Quitter" msgstr "" #: uchaines.rsr msgctxt "uchaines.rsr" msgid "R=" msgstr "" #: uchaines.rsr1 msgctxt "uchaines.rsr1" msgid "R1=" msgstr "" #: uchaines.rsr2 msgctxt "uchaines.rsr2" msgid "R2=" msgstr "" #: uchaines.rsrad msgctxt "uchaines.rsrad" msgid "rad" msgstr "" #: uchaines.rsrapport msgctxt "uchaines.rsrapport" msgid "Rapport=" msgstr "" #: uchaines.rsrapporthaute msgctxt "uchaines.rsrapporthaute" msgid "Rapport hauteur/largeur" msgstr "" #: uchaines.rsrapportidalp msgctxt "uchaines.rsrapportidalp" msgid "Rapport idéal (permettant d'occuper le maximum" msgstr "" #: uchaines.rsrayon msgid "Rayon" msgstr "" #: uchaines.rsrayondecourb msgctxt "uchaines.rsrayondecourb" msgid "Rayon de courbure" msgstr "" #: uchaines.rsrayondelasph msgid "Rayon de la sphère trop petit ou trop grand!" msgstr "" #: uchaines.rsrayonextrieu msgctxt "uchaines.rsrayonextrieu" msgid "Rayon extérieur" msgstr "" #: uchaines.rsrayonintrieu msgid "Rayon intérieur du diaphragme trop petit !" msgstr "" #: uchaines.rsrayonintrieu2 msgctxt "uchaines.rsrayonintrieu2" msgid "Rayon intérieur" msgstr "" #: uchaines.rsrayonn msgid "Rayon n° %s" msgstr "" #: uchaines.rsrayonrflchis msgctxt "uchaines.rsrayonrflchis" msgid "Rayon réfléchi (sens entrant)" msgstr "" #: uchaines.rsrayonrflchis2 msgctxt "uchaines.rsrayonrflchis2" msgid "Rayon réfléchi (sens sortant)" msgstr "" #: uchaines.rsrayonsdecour msgctxt "uchaines.rsrayonsdecour" msgid "Rayons de courbure des faces" msgstr "" #: uchaines.rsrayonsenfant msgctxt "uchaines.rsrayonsenfant" msgid "Rayons enfants" msgstr "" #: uchaines.rsrayonsfantom msgctxt "uchaines.rsrayonsfantom" msgid "Rayons fantomes" msgstr "" #: uchaines.rsrayonunique msgctxt "uchaines.rsrayonunique" msgid "Rayon unique" msgstr "" #: uchaines.rsredimensionn msgid "Redimensionnement impossible" msgstr "" #: uchaines.rsrefaire msgctxt "uchaines.rsrefaire" msgid "Refaire" msgstr "" #: uchaines.rsrelierlespoi msgid "Relier les points %s et %s par:" msgstr "" #: uchaines.rsrelierlespoi2 msgctxt "uchaines.rsrelierlespoi2" msgid "Relier les points" msgstr "" #: uchaines.rsremarqueimpo msgid "Remarque importante: ce réseau diffractant doit être éclairé par une onde plane.Un rayon unique sera diffracté selon la loi des réseaux sin i=+-sin i0+k.lambda/amais cela n'a pas de sens pour un rayon unique." msgstr "" #: uchaines.rsremarqueleno msgctxt "uchaines.rsremarqueleno" msgid "Remarque: le non respect du rapport implique que" msgstr "" #: uchaines.rsremarquesila msgctxt "uchaines.rsremarquesila" msgid "Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces" msgstr "" #: uchaines.rsremarquesila2 msgctxt "uchaines.rsremarquesila2" msgid "Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces" msgstr "" #: uchaines.rsrentrant msgid "A gauche" msgstr "" #: uchaines.rsrepertoirede msgid "Repertoire des exemples introuvable et incréable!" msgstr "" #: uchaines.rsrepertoirede2 msgid "Repertoire des simulations personnelles introuvable et incréable !" msgstr "" #: uchaines.rsrepertoirede3 msgid "Repertoire de configuration personnelle introuvable et incréable. Vous ne pourrez pas sauver vos modifications d'environnement !" msgstr "" #: uchaines.rsrepreorthono msgctxt "uchaines.rsrepreorthono" msgid "Repére orthonormé (approximativement)" msgstr "" #: uchaines.rsreprer msgctxt "uchaines.rsreprer" msgid "Repérer" msgstr "" #: uchaines.rsreseau msgctxt "uchaines.rsreseau" msgid "Réseau" msgstr "" #: uchaines.rsreseaun msgid "Réseau n° %s" msgstr "" #: uchaines.rsrespecterler msgid "Respecter le rapport hauteur/largeur de l" msgstr "" #: uchaines.rsrespecterler2 msgctxt "uchaines.rsrespecterler2" msgid "Respecter le rapport hauteur/largeur de l'écran" msgstr "" #: uchaines.rsrespecterles msgctxt "uchaines.rsrespecterles" msgid "Respecter les angles à l'impression" msgstr "" #: uchaines.rsrespecterrap msgctxt "uchaines.rsrespecterrap" msgid "Respecter rapport hauteur/largeur de l'écran" msgstr "" #: uchaines.rsrext msgctxt "uchaines.rsrext" msgid "Rext=" msgstr "" #: uchaines.rsri msgctxt "uchaines.rsri" msgid "Ri=" msgstr "" #: uchaines.rsrint msgctxt "uchaines.rsrint" msgid "Rint=" msgstr "" #: uchaines.rsrouge msgid "Rouge" msgstr "" #: uchaines.rsrpertoiredes msgctxt "uchaines.rsrpertoiredes" msgid "Répertoire des exemples" msgstr "" #: uchaines.rsrpertoiredev msgctxt "uchaines.rsrpertoiredev" msgid "Répertoire devant recevoir vos simulations personnelles" msgstr "" #: uchaines.rsrpertoiredev2 msgctxt "uchaines.rsrpertoiredev2" msgid "Répertoire devant contenir votre configuration personnelle d'OptGeo" msgstr "" #: uchaines.rsrpertoiredin msgctxt "uchaines.rsrpertoiredin" msgid "Répertoire d'installation d'OptGeo" msgstr "" #: uchaines.rsrseau msgctxt "uchaines.rsrseau" msgid "Réseau" msgstr "" #: uchaines.rsrseaudiffrac msgctxt "uchaines.rsrseaudiffrac" msgid "Réseau diffractant" msgstr "" #: uchaines.rsrsolutions msgctxt "uchaines.rsrsolutions" msgid "Résolutions" msgstr "" #: uchaines.rsrtablirlesva msgctxt "uchaines.rsrtablirlesva" msgid "&Rétablir les valeurs d'origine de tous les éléments" msgstr "" #: uchaines.rssaisieduneon msgctxt "uchaines.rssaisieduneon" msgid "Saisie d'une onde plane" msgstr "" #: uchaines.rssaisieduneso msgctxt "uchaines.rssaisieduneso" msgid "Saisie d'une source ponctuelle" msgstr "" #: uchaines.rssaisiedunray msgctxt "uchaines.rssaisiedunray" msgid "Saisie d'un rayon" msgstr "" #: uchaines.rssaisirletext msgctxt "uchaines.rssaisirletext" msgid "Saisir le texte à afficher" msgstr "" #: uchaines.rssaisissez msgctxt "uchaines.rssaisissez" msgid "Saisissez" msgstr "" #: uchaines.rssaisissezled msgid "Saisissez le diamètre de la lentille..." msgstr "" #: uchaines.rssaissezledia msgctxt "uchaines.rssaissezledia" msgid "Saissez le diamètre de la lentille" msgstr "" #: uchaines.rsseulementsil msgid "Seulement si le réfracté existe" msgstr "" #: uchaines.rsseulementsil2 msgctxt "uchaines.rsseulementsil2" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil3 msgctxt "uchaines.rsseulementsil3" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil4 msgctxt "uchaines.rsseulementsil4" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil5 msgctxt "uchaines.rsseulementsil5" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil6 msgctxt "uchaines.rsseulementsil6" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil7 msgctxt "uchaines.rsseulementsil7" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil8 msgctxt "uchaines.rsseulementsil8" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil9 msgctxt "uchaines.rsseulementsil9" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulemenxtsi msgid "Seulemenxt si le réfracté existe" msgstr "" #: uchaines.rssignesicentr msgctxt "uchaines.rssignesicentr" msgid "Signe + si centre de courbure Ci à gauche de Si" msgstr "" #: uchaines.rssiteweb msgctxt "uchaines.rssiteweb" msgid "Site Web" msgstr "" #: uchaines.rssitewebdelau msgctxt "uchaines.rssitewebdelau" msgid "Site Web de l'auteur" msgstr "" #: uchaines.rssommet msgid "Sommet %s" msgstr "" #: uchaines.rssommets1 msgctxt "uchaines.rssommets1" msgid "Sommet S1" msgstr "" #: uchaines.rssommets2 msgctxt "uchaines.rssommets2" msgid "Sommet S2" msgstr "" #: uchaines.rssommetsdecep msgctxt "uchaines.rssommetsdecep" msgid "Sommets de ce polyhèdre" msgstr "" #: uchaines.rssommetsdecet msgid "Sommets de cette polysphére" msgstr "" #: uchaines.rssommetsdecet2 msgid "Sommets de cette polysphère" msgstr "" #: uchaines.rssommetstropp msgid "Sommets trop proches !" msgstr "" #: uchaines.rssonrayondeco msgctxt "uchaines.rssonrayondeco" msgid "Son rayon de courbure vaut:" msgstr "" #: uchaines.rssortant msgid "A droite" msgstr "" #: uchaines.rssoulign msgid "Souligné" msgstr "" #: uchaines.rssource msgctxt "uchaines.rssource" msgid "Source" msgstr "" #: uchaines.rssourceponctu msgid "Source ponctuelle" msgstr "" #: uchaines.rssourceponctu2 msgid "Source ponctuelle n° %s" msgstr "" #: uchaines.rssources msgctxt "uchaines.rssources" msgid "Sources:" msgstr "" #: uchaines.rssphre msgid "Sphère" msgstr "" #: uchaines.rssphrerfracta msgctxt "uchaines.rssphrerfracta" msgid "Sphère réfractante" msgstr "" #: uchaines.rssphrerfracta2 msgid "Sphère réfractante n° %s" msgstr "" #: uchaines.rssplashscreen msgid "Splashscreen" msgstr "" #: uchaines.rsstyledespoin msgctxt "uchaines.rsstyledespoin" msgid "Style des points" msgstr "" #: uchaines.rsstyledutrait msgctxt "uchaines.rsstyledutrait" msgid "Style du trait (valable si épaisseur=1)" msgstr "" #: uchaines.rssuivant msgctxt "uchaines.rssuivant" msgid "Suivant >" msgstr "" #: uchaines.rssuperposersi msgctxt "uchaines.rssuperposersi" msgid "Superposer simulation" msgstr "" #: uchaines.rssupprimer msgctxt "uchaines.rssupprimer" msgid "Supprimer" msgstr "" #: uchaines.rssupprimerced msgctxt "uchaines.rssupprimerced" msgid "Supprimer ce diaphragme" msgstr "" #: uchaines.rssupprimercem msgctxt "uchaines.rssupprimercem" msgid "Supprimer ce miroir" msgstr "" #: uchaines.rssupprimercep msgctxt "uchaines.rssupprimercep" msgid "Supprimer ce polycercle" msgstr "" #: uchaines.rssupprimercep2 msgctxt "uchaines.rssupprimercep2" msgid "Supprimer ce prisme" msgstr "" #: uchaines.rssupprimercep3 msgctxt "uchaines.rssupprimercep3" msgid "Supprimer ce polygône" msgstr "" #: uchaines.rssupprimercer msgctxt "uchaines.rssupprimercer" msgid "Supprimer ce rayon" msgstr "" #: uchaines.rssupprimercer2 msgctxt "uchaines.rssupprimercer2" msgid "Supprimer ce réseau" msgstr "" #: uchaines.rssupprimercet msgctxt "uchaines.rssupprimercet" msgid "Supprimer cette sphère" msgstr "" #: uchaines.rssupprimercet10 msgctxt "uchaines.rssupprimercet10" msgid "Supprimer cette distance" msgstr "" #: uchaines.rssupprimercet11 msgctxt "uchaines.rssupprimercet11" msgid "Supprimer cet angle" msgstr "" #: uchaines.rssupprimercet2 msgctxt "uchaines.rssupprimercet2" msgid "Supprimer cet écran" msgstr "" #: uchaines.rssupprimercet3 msgctxt "uchaines.rssupprimercet3" msgid "Supprimer ce trait" msgstr "" #: uchaines.rssupprimercet4 msgctxt "uchaines.rssupprimercet4" msgid "Supprimer cette lame" msgstr "" #: uchaines.rssupprimercet5 msgctxt "uchaines.rssupprimercet5" msgid "Supprimer cette lentille" msgstr "" #: uchaines.rssupprimercet6 msgctxt "uchaines.rssupprimercet6" msgid "Supprimer cet oeil" msgstr "" #: uchaines.rssupprimercet7 msgctxt "uchaines.rssupprimercet7" msgid "Supprimer cette onde plane" msgstr "" #: uchaines.rssupprimercet8 msgctxt "uchaines.rssupprimercet8" msgid "Supprimer cette source ponctuelle" msgstr "" #: uchaines.rssupprimercet9 msgctxt "uchaines.rssupprimercet9" msgid "Supprimer ce texte" msgstr "" #: uchaines.rssupprimerunl msgctxt "uchaines.rssupprimerunl" msgid "Supprimer un élément existant" msgstr "" #: uchaines.rssupprimerunl2 msgctxt "uchaines.rssupprimerunl2" msgid "Supprimer un élément" msgstr "" #: uchaines.rssurfacesdond msgctxt "uchaines.rssurfacesdond" msgid "Surfaces d'onde" msgstr "" #: uchaines.rssurlaxeorien msgctxt "uchaines.rssurlaxeorien" msgid "sur l'axe orienté de S1 vers S2, signe - sinon." msgstr "" #: uchaines.rssystmeoptiqu msgctxt "uchaines.rssystmeoptiqu" msgid "Système optique idéal" msgstr "" #: uchaines.rssystmeoptiqu2 msgctxt "uchaines.rssystmeoptiqu2" msgid "Système optique réel" msgstr "" #: uchaines.rst msgctxt "uchaines.rst" msgid "t=" msgstr "" #: uchaines.rst0 msgctxt "uchaines.rst0" msgid "t0=" msgstr "" #: uchaines.rst1 msgctxt "uchaines.rst1" msgid "t1=" msgstr "" #: uchaines.rst2 msgctxt "uchaines.rst2" msgid "t2=" msgstr "" #: uchaines.rstaille msgid "Taille: %s" msgstr "" #: uchaines.rstailledelala msgid "Taille de la lame trop petite !" msgstr "" #: uchaines.rstailledelale msgid "Taille de la lentille trop petite !" msgstr "" #: uchaines.rstailledelapr msgctxt "uchaines.rstailledelapr" msgid "Taille de la première extrémité" msgstr "" #: uchaines.rstailledelase msgctxt "uchaines.rstailledelase" msgid "Taille de la seconde extrémité" msgstr "" #: uchaines.rstailledelcra msgid "Taille de l'écran trop petite !" msgstr "" #: uchaines.rstailledelemp msgctxt "uchaines.rstailledelemp" msgid "Taille de l'empennage:" msgstr "" #: uchaines.rstailledeloei msgctxt "uchaines.rstailledeloei" msgid "Taille de l'oeil trop petite !" msgstr "" #: uchaines.rstailledeloei2 msgctxt "uchaines.rstailledeloei2" msgid "Taille de l'oeil trop petite !" msgstr "" #: uchaines.rstailledespoi msgctxt "uchaines.rstailledespoi" msgid "Taille des points" msgstr "" #: uchaines.rstailledumiro msgctxt "uchaines.rstailledumiro" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro2 msgid "Taille du miroir trop petite !" msgstr "" #: uchaines.rstailledumiro3 msgctxt "uchaines.rstailledumiro3" msgid "Taille du miroir trop petite ou focale trop courte, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro4 msgctxt "uchaines.rstailledumiro4" msgid "Taille du miroir trop petite ou focale trop courte, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro5 msgctxt "uchaines.rstailledumiro5" msgid "Taille du miroir trop petite ou focale trop courte, ou miroir débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro6 msgctxt "uchaines.rstailledumiro6" msgid "Taille du miroir trop petite ou focale trop courte, ou miroir débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro7 msgctxt "uchaines.rstailledumiro7" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro8 msgctxt "uchaines.rstailledumiro8" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledupris msgid "Taille du prisme trop petite !" msgstr "" #: uchaines.rstailledursea msgid "Taille du réseau trop petite !" msgstr "" #: uchaines.rstailledursea2 msgid "Taille du réseau trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledutrai msgid "Taille du trait trop petite !" msgstr "" #: uchaines.rstailledutrai2 msgid "Taille du trait trop petite ou points hors de l'espace de travail !" msgstr "" #: uchaines.rstailleendela msgctxt "uchaines.rstailleendela" msgid "Taille (en % de la page)" msgstr "" #: uchaines.rstaillepage msgctxt "uchaines.rstaillepage" msgid "Taille page" msgstr "" #: uchaines.rstexte msgctxt "uchaines.rstexte" msgid "Texte" msgstr "" #: uchaines.rstexten msgid "Texte n° %s" msgstr "" #: uchaines.rstextesurlede msgctxt "uchaines.rstextesurlede" msgid "Texte sur le dessin" msgstr "" #: uchaines.rstirs msgid "Tirés" msgstr "" #: uchaines.rstirspoints msgid "Tirés - Points" msgstr "" #: uchaines.rstirspointspo msgid "Tirés - Points - Points" msgstr "" #: uchaines.rstoujours msgid "Toujours" msgstr "" #: uchaines.rstousleslment msgctxt "uchaines.rstousleslment" msgid "Tous les éléments" msgstr "" #: uchaines.rstracer msgctxt "uchaines.rstracer" msgid "Tracer" msgstr "" #: uchaines.rstracerdessur msgctxt "uchaines.rstracerdessur" msgid "Tracer des surfaces d'onde issues de cette onde plane" msgstr "" #: uchaines.rstracerdessur2 msgctxt "uchaines.rstracerdessur2" msgid "Tracer des surfaces d'onde issues de cette source ponctuelle" msgstr "" #: uchaines.rstracerenpoin msgctxt "uchaines.rstracerenpoin" msgid "Tracer en pointillé le prolongement des différents segments des rayons" msgstr "" #: uchaines.rstracerenpoin2 msgctxt "uchaines.rstracerenpoin2" msgid "Tracer en pointillé le prolongement des différents segments du rayon" msgstr "" #: uchaines.rstracerenpoin3 msgctxt "uchaines.rstracerenpoin3" msgid "Tracer en pointillé le prolongement des différents segments des rayons" msgstr "" #: uchaines.rstracerlesnor msgctxt "uchaines.rstracerlesnor" msgid "Tracer les normales" msgstr "" #: uchaines.rstrait msgid "Trait" msgstr "" #: uchaines.rstraitflche msgctxt "uchaines.rstraitflche" msgid "Trait, fléche..." msgstr "" #: uchaines.rstraitperpend msgid "Trait perpendiculaire" msgstr "" #: uchaines.rstrouer msgctxt "uchaines.rstrouer" msgid "Trouer" msgstr "" #: uchaines.rstrouerlemiro msgctxt "uchaines.rstrouerlemiro" msgid "Trouer le miroir en son centre" msgstr "" #: uchaines.rstypedelentil msgid "Type de lentille incompatible avec les valeurs proposées, ou lentille débordant de l'espace de travail !" msgstr "" #: uchaines.rstypederseau msgctxt "uchaines.rstypederseau" msgid "Type de réseau" msgstr "" #: uchaines.rstypedesource msgctxt "uchaines.rstypedesource" msgid "Type de source" msgstr "" #: uchaines.rstypedlment msgctxt "uchaines.rstypedlment" msgid "Type d'élément" msgstr "" #: uchaines.rsunarcdecercl msgid "Un arc de cercle" msgstr "" #: uchaines.rsunaumoinsdes msgid "Un au moins des objets actuels ne rentre pas sur ce nouvel espace de travail !" msgstr "" #: uchaines.rsunfichierpor msgid "Un fichier portant ce nom existe déjà. Voulez-vous l'écraser ?" msgstr "" #: uchaines.rsunitdelongue msgctxt "uchaines.rsunitdelongue" msgid "Unité de longueur" msgstr "" #: uchaines.rsunnouveaugro msgid "Un nouveau groupe contenant les éléments ajoutés vien d'être créé." msgstr "" #: uchaines.rsunnouveaugro2 msgid "Un nouveau groupe contenant tous les éléments vient d'être créé." msgstr "" #: uchaines.rsunsegmentded msgid "Un segment de droite" msgstr "" #: uchaines.rsvaleurdupash msgid "Valeur du pas horizontal illégale !" msgstr "" #: uchaines.rsvaleurdupash2 msgid "Valeur du pas horizontal très faible ou très forte. Etes-vous sûr ?" msgstr "" #: uchaines.rsvaleurdupasv msgid "Valeur du pas vertical illégale !" msgstr "" #: uchaines.rsvaleurdupasv2 msgid "Valeur du pas vertical très faible ou très forte. Etes-vous sûr ?" msgstr "" #: uchaines.rsvaleurillgal msgid "Valeur illégale de l'indice vert par défaut; remplacé par 1" msgstr "" #: uchaines.rsvaleurillgal2 msgid "Valeur illégale de l'indice bleu par défaut; remplacé par 1" msgstr "" #: uchaines.rsvaleurillgal3 msgid "Valeur illégale de l'indice rouge par défaut; remplacé par 1" msgstr "" #: uchaines.rsvaleurinacce msgid "Valeur inacceptable pour le rayon !" msgstr "" #: uchaines.rsvaleurinacce10 msgid "Valeur inacceptable pour Rint !" msgstr "" #: uchaines.rsvaleurinacce11 msgid "Valeur inacceptable pour Rext !" msgstr "" #: uchaines.rsvaleurinacce12 msgid "Valeur inacceptable pour t !" msgstr "" #: uchaines.rsvaleurinacce13 msgid "Valeur inacceptable pour x1 !" msgstr "" #: uchaines.rsvaleurinacce14 msgid "Valeur inacceptable pour x2 !" msgstr "" #: uchaines.rsvaleurinacce15 msgid "Valeur inacceptable pour y1 !" msgstr "" #: uchaines.rsvaleurinacce16 msgid "Valeur inacceptable pour y2 !" msgstr "" #: uchaines.rsvaleurinacce17 msgid "Valeur inacceptable pour S1x !" msgstr "" #: uchaines.rsvaleurinacce18 msgid "Valeur inacceptable pour S1y !" msgstr "" #: uchaines.rsvaleurinacce19 msgid "Valeur inacceptable pour S2x !" msgstr "" #: uchaines.rsvaleurinacce2 msgid "Valeur inacceptable pour x !" msgstr "" #: uchaines.rsvaleurinacce20 msgid "Valeur inacceptable pour S2y !" msgstr "" #: uchaines.rsvaleurinacce21 msgid "Valeur inacceptable pour R1 !" msgstr "" #: uchaines.rsvaleurinacce22 msgid "Valeur inacceptable pour R2 !" msgstr "" #: uchaines.rsvaleurinacce23 msgid "Valeur inacceptable pour le diamètre !" msgstr "" #: uchaines.rsvaleurinacce24 msgid "Valeur inacceptable pour la focale !" msgstr "" #: uchaines.rsvaleurinacce25 msgid "Valeur inacceptable pour fx !" msgstr "" #: uchaines.rsvaleurinacce26 msgid "Valeur inacceptable pour fy !" msgstr "" #: uchaines.rsvaleurinacce27 msgid "Valeur inacceptable pour e !" msgstr "" #: uchaines.rsvaleurinacce28 msgid "Valeur inacceptable pour p !" msgstr "" #: uchaines.rsvaleurinacce29 msgid "Valeur inacceptable pour t0 !" msgstr "" #: uchaines.rsvaleurinacce3 msgid "Valeur inacceptable pour y !" msgstr "" #: uchaines.rsvaleurinacce30 msgid "Valeur inacceptable pour t1 !" msgstr "" #: uchaines.rsvaleurinacce31 msgid "Valeur inacceptable pour t2 !" msgstr "" #: uchaines.rsvaleurinacce32 msgid "Valeur inacceptable pour le diametre du trou !" msgstr "" #: uchaines.rsvaleurinacce33 msgid "Valeur inacceptable pour le rayon de courbure !" msgstr "" #: uchaines.rsvaleurinacce34 msgid "Valeur inacceptable pour Dx !" msgstr "" #: uchaines.rsvaleurinacce35 msgid "Valeur inacceptable pour Dy !" msgstr "" #: uchaines.rsvaleurinacce36 msgid "Valeur inacceptable pour gx !" msgstr "" #: uchaines.rsvaleurinacce37 msgid "Valeur inacceptable pour gy !" msgstr "" #: uchaines.rsvaleurinacce38 msgid "Valeur inacceptable pour l'angle au sommet !" msgstr "" #: uchaines.rsvaleurinacce39 msgid "Valeur inacceptable pour l'angle polaire !" msgstr "" #: uchaines.rsvaleurinacce4 msgid "Valeur inacceptable pour indice rouge !" msgstr "" #: uchaines.rsvaleurinacce40 msgid "Valeur inacceptable pour la hauteur!" msgstr "" #: uchaines.rsvaleurinacce41 msgid "Valeur inacceptable pour sx !" msgstr "" #: uchaines.rsvaleurinacce42 msgid "Valeur inacceptable pour sy !" msgstr "" #: uchaines.rsvaleurinacce5 msgid "Valeur inacceptable pour indice vert !" msgstr "" #: uchaines.rsvaleurinacce6 msgid "Valeur inacceptable pour indice bleu !" msgstr "" #: uchaines.rsvaleurinacce7 msgid "Valeur inacceptable pour Ri !" msgstr "" #: uchaines.rsvaleurinacce8 msgid "Valeur inacceptable pour cx !" msgstr "" #: uchaines.rsvaleurinacce9 msgid "Valeur inacceptable pour cy !" msgstr "" #: uchaines.rsvaleurincorr msgid "Valeur incorrecte pour x" msgstr "" #: uchaines.rsvaleurincorr2 msgid "Valeur incorrecte pour y" msgstr "" #: uchaines.rsvaleurnulleo msgid "Valeur nulle ou négative interdite pour la hauteur et/ou la largeur !" msgstr "" #: uchaines.rsvaleursentre msgid "Valeurs entrées aberrantes !" msgstr "" #: uchaines.rsvaleursnonau msgid "Valeurs non autorisées pour x ou y" msgstr "" #: uchaines.rsversion200be msgctxt "uchaines.rsversion200be" msgid "Version 2.21 du 02/12/2013, écrite en Lazarus" msgstr "" #: uchaines.rsversion205du msgid "Version 2.21 du 02/12/2013" msgstr "" #: uchaines.rsverslarrire msgctxt "uchaines.rsverslarrire" msgid "Vers l'arrière:" msgstr "" #: uchaines.rsverslarrire2 msgctxt "uchaines.rsverslarrire2" msgid "Vers l'arrière:" msgstr "" #: uchaines.rsverslarrire3 msgctxt "uchaines.rsverslarrire3" msgid "Vers l'arrière:" msgstr "" #: uchaines.rsverslavant msgctxt "uchaines.rsverslavant" msgid "Vers l'avant:" msgstr "" #: uchaines.rsverslavant2 msgctxt "uchaines.rsverslavant2" msgid "Vers l'avant:" msgstr "" #: uchaines.rsverslavant3 msgctxt "uchaines.rsverslavant3" msgid "Vers l'avant:" msgstr "" #: uchaines.rsvert msgid "Vert" msgstr "" #: uchaines.rsverticale msgctxt "uchaines.rsverticale" msgid "Verticale" msgstr "" #: uchaines.rsverticale2 msgctxt "uchaines.rsverticale2" msgid "Verticale:" msgstr "" #: uchaines.rsverticalemen msgctxt "uchaines.rsverticalemen" msgid "Verticalement" msgstr "" #: uchaines.rsvotreattenti msgid "Votre attention siouplait !" msgstr "" #: uchaines.rsvoulezvous msgctxt "uchaines.rsvoulezvous" msgid "Voulez vous:" msgstr "" #: uchaines.rsvoulezvouslc msgctxt "uchaines.rsvoulezvouslc" msgid "Voulez-vous l'écraser ?" msgstr "" #: uchaines.rsvoulezvouslc2 msgctxt "uchaines.rsvoulezvouslc2" msgid "Voulez-vous l'écraser ?" msgstr "" #: uchaines.rsvouspouvezch msgctxt "uchaines.rsvouspouvezch" msgid "Vous pouvez changer les indices du milieu dans lequel s'effectue la simulation:" msgstr "" #: uchaines.rsvrifierquevo msgctxt "uchaines.rsvrifierquevo" msgid "Vérifier que vous avez la dernière version ? Cliquer sur:" msgstr "" #: uchaines.rsvudepuislece msgctxt "uchaines.rsvudepuislece" msgid "(vu depuis le centre C)" msgstr "" #: uchaines.rsx msgctxt "uchaines.rsx" msgid "x=" msgstr "" #: uchaines.rsx1 msgid "x1" msgstr "" #: uchaines.rsx10 msgid "x10" msgstr "" #: uchaines.rsx100 msgid "x100" msgstr "" #: uchaines.rsx2 msgid "x2" msgstr "" #: uchaines.rsx20 msgid "x20" msgstr "" #: uchaines.rsx5 msgid "x5" msgstr "" #: uchaines.rsx50 msgid "x50" msgstr "" #: uchaines.rsxmaxdoittres msgid "xmax doit être supérieur à xmin !" msgstr "" #: uchaines.rsy msgctxt "uchaines.rsy" msgid "y=" msgstr "" #: uchaines.rsymaxdoittres msgid "ymax doit être supérieur à ymin !" msgstr "" #: uchaines.rszoom msgctxt "uchaines.rszoom" msgid "Zoom:" msgstr "" #: un rayon unique sera diffracté selon la loi des réseaux sin i msgid "+-sin i0+k.lambda/a" msgstr "" optgeo-2.21/lang/optgeo.fr.po0000750000175000017500000041234112247333110016314 0ustar georgeskgeorgeskmsgid "mais cela n'a pas de sens pour un rayon unique.mais cela n'a pas de sens pour un rayon unique.ambian et longueurs d'onde." msgstr "Content-Type: text/plain; charset=UTF-8" #: tform1.afficherlagrille1.caption msgctxt "tform1.afficherlagrille1.caption" msgid "Afficher la grille" msgstr "" #: tform1.afficherlesangles1.caption msgctxt "tform1.afficherlesangles1.caption" msgid "Afficher les angles" msgstr "" #: tform1.aide1.caption msgctxt "tform1.aide1.caption" msgid "Aide" msgstr "" #: tform1.aidesuroptgeo1.caption msgctxt "tform1.aidesuroptgeo1.caption" msgid "Aide sur OptGeo" msgstr "" #: tform1.ajouter1.caption msgctxt "tform1.ajouter1.caption" msgid "Ajouter" msgstr "" #: tform1.ajusterautomatiquement1.caption msgctxt "tform1.ajusterautomatiquement1.caption" msgid "Ajuster automatiquement à la plus petite taille" msgstr "" #: tform1.apropos2.caption msgctxt "tform1.apropos2.caption" msgid "A propos" msgstr "" #: tform1.associerlesfichiersoptavecoptgeo1.caption msgctxt "tform1.associerlesfichiersoptavecoptgeo1.caption" msgid "Associer les fichiers .opt avec OptGeo" msgstr "" #: tform1.attractiondelagrille1.caption msgctxt "tform1.attractiondelagrille1.caption" msgid "Attraction de la grille" msgstr "" #: tform1.basederegistre1.caption msgctxt "tform1.basederegistre1.caption" msgid "Base de registre" msgstr "" #: tform1.boutonangle.hint msgctxt "tform1.boutonangle.hint" msgid "Mesurer un angle" msgstr "" #: tform1.boutonconiqueconcave.hint msgctxt "tform1.boutonconiqueconcave.hint" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) concave" msgstr "" #: tform1.boutonconiqueconvexe.hint msgctxt "tform1.boutonconiqueconvexe.hint" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) convexe" msgstr "" #: tform1.boutondia.hint msgctxt "tform1.boutondia.hint" msgid "Ajouter un diaphragme à iris" msgstr "" #: tform1.boutondistance.hint msgctxt "tform1.boutondistance.hint" msgid "Mesurer la distance entre deux points" msgstr "" #: tform1.boutonecran.hint msgctxt "tform1.boutonecran.hint" msgid "Ajouter un écran" msgstr "" #: tform1.boutonfantome.hint msgctxt "tform1.boutonfantome.hint" msgid "Cacher des segments de rayon" msgstr "" #: tform1.boutonfleche.hint msgctxt "tform1.boutonfleche.hint" msgid "Ajouter un trait, une fléche..." msgstr "" #: tform1.boutonlec.hint msgctxt "tform1.boutonlec.hint" msgid "Ajouter une lentille épaisse" msgstr "" #: tform1.boutonlmc.hint msgctxt "tform1.boutonlmc.hint" msgid "Ajouter une lentille mince convergente paraxiale" msgstr "" #: tform1.boutonlmd.hint msgctxt "tform1.boutonlmd.hint" msgid "Ajouter une lentille mince divergente paraxiale" msgstr "" #: tform1.boutonlsr.hint msgctxt "tform1.boutonlsr.hint" msgid "Ajouter une lame semi-réfléchissante" msgstr "" #: tform1.boutonmiroirplan.hint msgctxt "tform1.boutonmiroirplan.hint" msgid "Ajouter un miroir plan" msgstr "" #: tform1.boutonmscepa.hint msgctxt "tform1.boutonmscepa.hint" msgid "Ajouter un miroir sphérique convexe paraxial" msgstr "" #: tform1.boutonmscere.hint msgctxt "tform1.boutonmscere.hint" msgid "Ajouter un miroir sphérique convexe réel" msgstr "" #: tform1.boutonmscopa.hint msgctxt "tform1.boutonmscopa.hint" msgid "Ajouter un miroir sphérique concave paraxial" msgstr "" #: tform1.boutonmscore.hint msgctxt "tform1.boutonmscore.hint" msgid "Ajouter un miroir sphérique concave réel" msgstr "" #: tform1.boutonoeil.hint msgctxt "tform1.boutonoeil.hint" msgid "Ajouter un oeil stylisé" msgstr "" #: tform1.boutonondeplane.hint msgctxt "tform1.boutonondeplane.hint" msgid "Ajouter une onde plane" msgstr "" #: tform1.boutonpoly.hint msgctxt "tform1.boutonpoly.hint" msgid "Ajouter un polygône réfractant" msgstr "" #: tform1.boutonpolycercle.hint msgctxt "tform1.boutonpolycercle.hint" msgid "Ajouter une polycercle réfractant" msgstr "" #: tform1.boutonprisme.hint msgctxt "tform1.boutonprisme.hint" msgid "Ajouter un prisme isocéle" msgstr "" #: tform1.boutonrayon.hint msgctxt "tform1.boutonrayon.hint" msgid "Ajouter un rayon" msgstr "" #: tform1.boutonsourceponctuelle.hint msgctxt "tform1.boutonsourceponctuelle.hint" msgid "Ajouter un objet ponctuel réel" msgstr "" #: tform1.boutonsphere.hint msgctxt "tform1.boutonsphere.hint" msgid "Ajouter une sphère réfractante" msgstr "" #: tform1.boutonspv.hint msgctxt "tform1.boutonspv.hint" msgid "Ajouter un objet ponctuel virtuel" msgstr "" #: tform1.boutontexte.caption msgctxt "tform1.boutontexte.caption" msgid "A" msgstr "" #: tform1.boutontexte.hint msgctxt "tform1.boutontexte.hint" msgid "Ajouter un texte sur le dessin" msgstr "" #: tform1.caption msgctxt "tform1.caption" msgid "OptGeo" msgstr "" #: tform1.cocheangles.caption msgctxt "tform1.cocheangles.caption" msgid "Angles d'incid. et de réfr." msgstr "" #: tform1.cocheattraction.caption msgctxt "tform1.cocheattraction.caption" msgid "Attraction" msgstr "" #: tform1.cochegrille.caption msgctxt "tform1.cochegrille.caption" msgid "Grille" msgstr "" #: tform1.cochenormale.caption msgctxt "tform1.cochenormale.caption" msgid "Normales" msgstr "" #: tform1.combozoom.hint msgctxt "tform1.combozoom.hint" msgid "Facteur de zoom" msgstr "" #: tform1.commenatiresurlasimulation1.caption msgctxt "tform1.commenatiresurlasimulation1.caption" msgid "Commentaire sur la simulation" msgstr "" #: tform1.contacterlauteur1.caption msgctxt "tform1.contacterlauteur1.caption" msgid "Contacter l'auteur" msgstr "" #: tform1.copier1.caption msgctxt "tform1.copier1.caption" msgid "Copier simulation dans le presse papier" msgstr "" #: tform1.couleurdefond1.caption msgctxt "tform1.couleurdefond1.caption" msgid "Couleur de fond" msgstr "" #: tform1.dfinirlerpertoirepersonnel1.caption msgctxt "tform1.dfinirlerpertoirepersonnel1.caption" msgid "Définir le répertoire personnel" msgstr "" #: tform1.diaphragme1.caption msgctxt "tform1.diaphragme1.caption" msgid "Diaphragme" msgstr "" #: tform1.divers1.caption msgctxt "tform1.divers1.caption" msgid "Divers" msgstr "" #: tform1.dplacerunlment1.caption msgctxt "tform1.dplacerunlment1.caption" msgid "Déplacer un élément" msgstr "" #: tform1.dsassocier1.caption msgctxt "tform1.dsassocier1.caption" msgid "Désassocier" msgstr "" #: tform1.dudernierrpertoireutilis1.caption msgctxt "tform1.dudernierrpertoireutilis1.caption" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: tform1.dupliquerunlment1.caption msgctxt "tform1.dupliquerunlment1.caption" msgid "Dupliquer un élément" msgstr "" #: tform1.durpertoireexemples1.caption msgctxt "tform1.durpertoireexemples1.caption" msgid "de mon répertoire personnel" msgstr "" #: tform1.durpertoireexemples2.caption msgctxt "tform1.durpertoireexemples2.caption" msgid "du répertoire \"exemples\"" msgstr "" #: tform1.ecran1.caption msgctxt "tform1.ecran1.caption" msgid "Ecran" msgstr "" #: tform1.editerlecommentairedelasimulation1.caption msgctxt "tform1.editerlecommentairedelasimulation1.caption" msgid "Editer le commentaire de la simulation" msgstr "" #: tform1.edition1.caption msgctxt "tform1.edition1.caption" msgid "Edition" msgstr "" #: tform1.elementschoisir2.caption msgctxt "tform1.elementschoisir2.caption" msgid "Eléments à choisir" msgstr "" #: tform1.empennagedesrayons1.caption msgctxt "tform1.empennagedesrayons1.caption" msgid "Empennage des rayons" msgstr "" #: tform1.enregistrersimulation1.caption msgctxt "tform1.enregistrersimulation1.caption" msgid "Enregistrer simulation sous" msgstr "" #: tform1.enregistrersimulation2.caption msgctxt "tform1.enregistrersimulation2.caption" msgid "Enregistrer simulation" msgstr "" #: tform1.fichier1.caption msgctxt "tform1.fichier1.caption" msgid "Fichier" msgstr "" #: tform1.grille1.caption msgctxt "tform1.grille1.caption" msgid "Options" msgstr "" #: tform1.grouperdeslments1.caption msgctxt "tform1.grouperdeslments1.caption" msgid "Grouper des éléments" msgstr "" #: tform1.imprimer1.caption msgctxt "tform1.imprimer1.caption" msgid "Imprimer" msgstr "" #: tform1.joindreparunarcdecercle1.caption msgctxt "tform1.joindreparunarcdecercle1.caption" msgid "Joindre par un arc de cercle" msgstr "" #: tform1.joindreparunsegment1.caption msgctxt "tform1.joindreparunsegment1.caption" msgid "Joindre par un segment" msgstr "" #: tform1.lamesemirflchissante1.caption msgctxt "tform1.lamesemirflchissante1.caption" msgid "Lame semi réfléchissante" msgstr "" #: tform1.lentille1.caption msgctxt "tform1.lentille1.caption" msgid "Lentille" msgstr "" #: tform1.lentilleminceconvergente1.caption msgctxt "tform1.lentilleminceconvergente1.caption" msgid "Lentille mince convergente" msgstr "" #: tform1.lentillemincedivergente1.caption msgctxt "tform1.lentillemincedivergente1.caption" msgid "Lentille mince divergente" msgstr "" #: tform1.licensegpl1.caption msgctxt "tform1.licensegpl1.caption" msgid "License GPL" msgstr "" #: tform1.manuellement1.caption msgctxt "tform1.manuellement1.caption" msgid "Manuellement" msgstr "" #: tform1.menuitem1.caption msgctxt "tform1.menuitem1.caption" msgid "Exporter graphe" msgstr "" #: tform1.menuitem10.caption msgctxt "tform1.menuitem10.caption" msgid "de mon répertoire personnel" msgstr "" #: tform1.menuitem11.caption msgctxt "tform1.menuitem11.caption" msgid "du répertoire \"exemples\"" msgstr "" #: tform1.menuitem12.caption msgctxt "tform1.menuitem12.caption" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: tform1.menuitem14.caption msgid "Historique des versions" msgstr "" #: tform1.menuitem2.caption msgctxt "tform1.menuitem2.caption" msgid "-" msgstr "" #: tform1.menuitem3.caption msgctxt "tform1.menuitem3.caption" msgid "PNG" msgstr "" #: tform1.menuitem4.caption msgctxt "tform1.menuitem4.caption" msgid "JPG" msgstr "" #: tform1.menuitem5.caption msgctxt "tform1.menuitem5.caption" msgid "-" msgstr "" #: tform1.menuitem6.caption msgctxt "tform1.menuitem6.caption" msgid "Langue" msgstr "" #: tform1.menuitem7.caption msgctxt "tform1.menuitem7.caption" msgid "Indices du milieu ambiant" msgstr "" #: tform1.menuitem8.caption msgid "PS" msgstr "" #: tform1.menuitem9.caption msgctxt "tform1.menuitem9.caption" msgid "Superposer simulation" msgstr "" #: tform1.menuitemreseau.caption msgctxt "tform1.menuitemreseau.caption" msgid "Réseau diffractant" msgstr "" #: tform1.menuprisme.caption msgctxt "tform1.menuprisme.caption" msgid "Prisme" msgstr "" #: tform1.mesuredangle1.caption msgctxt "tform1.mesuredangle1.caption" msgid "Mesure d'angle" msgstr "" #: tform1.mesurededistance1.caption msgctxt "tform1.mesurededistance1.caption" msgid "Mesure de distance" msgstr "" #: tform1.miroircnique1.caption msgctxt "tform1.miroircnique1.caption" msgid "Miroir cônique" msgstr "" #: tform1.miroirplan2.caption msgctxt "tform1.miroirplan2.caption" msgid "Miroir plan" msgstr "" #: tform1.miroirsphriqueconcave1.caption msgctxt "tform1.miroirsphriqueconcave1.caption" msgid "Miroir sphérique concave" msgstr "" #: tform1.miroirsphriqueconvergent1.caption msgctxt "tform1.miroirsphriqueconvergent1.caption" msgid "Miroir sphérique concave" msgstr "" #: tform1.miroirsphriqueconvexe1.caption msgctxt "tform1.miroirsphriqueconvexe1.caption" msgid "Miroir sphérique convexe" msgstr "" #: tform1.miroirsphriqueconvexe2.caption msgctxt "tform1.miroirsphriqueconvexe2.caption" msgid "Miroir sphérique convexe" msgstr "" #: tform1.modifierdimensionsespacedetravail1.caption msgctxt "tform1.modifierdimensionsespacedetravail1.caption" msgid "Modifier les dimensions de l'espace de travail" msgstr "" #: tform1.n1.caption msgctxt "tform1.n1.caption" msgid "-" msgstr "" #: tform1.n10.caption msgctxt "tform1.n10.caption" msgid "-" msgstr "" #: tform1.n11.caption msgctxt "tform1.n11.caption" msgid "-" msgstr "" #: tform1.n12.caption msgctxt "tform1.n12.caption" msgid "-" msgstr "" #: tform1.n13.caption msgctxt "tform1.n13.caption" msgid "-" msgstr "" #: tform1.n14.caption msgctxt "tform1.n14.caption" msgid "-" msgstr "" #: tform1.n15.caption msgctxt "tform1.n15.caption" msgid "-" msgstr "" #: tform1.n16.caption msgctxt "tform1.n16.caption" msgid "-" msgstr "" #: tform1.n17.caption msgctxt "tform1.n17.caption" msgid "-" msgstr "" #: tform1.n18.caption msgctxt "tform1.n18.caption" msgid "-" msgstr "" #: tform1.n19.caption msgctxt "tform1.n19.caption" msgid "-" msgstr "" #: tform1.n2.caption msgctxt "tform1.n2.caption" msgid "-" msgstr "" #: tform1.n20.caption msgctxt "tform1.n20.caption" msgid "-" msgstr "" #: tform1.n21.caption msgctxt "tform1.n21.caption" msgid "-" msgstr "" #: tform1.n3.caption msgctxt "tform1.n3.caption" msgid "-" msgstr "" #: tform1.n4.caption msgctxt "tform1.n4.caption" msgid "-" msgstr "" #: tform1.n5.caption msgctxt "tform1.n5.caption" msgid "-" msgstr "" #: tform1.n6.caption msgctxt "tform1.n6.caption" msgid "-" msgstr "" #: tform1.n7.caption msgctxt "tform1.n7.caption" msgid "Afficher les normales" msgstr "" #: tform1.n8.caption msgctxt "tform1.n8.caption" msgid "-" msgstr "" #: tform1.n9.caption msgctxt "tform1.n9.caption" msgid "-" msgstr "" #: tform1.nouveau1.caption msgctxt "tform1.nouveau1.caption" msgid "Nouvelle simulation" msgstr "" #: tform1.oeilstylis1.caption msgctxt "tform1.oeilstylis1.caption" msgid "Oeil stylisé" msgstr "" #: tform1.ondeplane1.caption msgctxt "tform1.ondeplane1.caption" msgid "Onde plane" msgstr "" #: tform1.optionsdelagrille1.caption msgctxt "tform1.optionsdelagrille1.caption" msgid "Options de la grille" msgstr "" #: tform1.optionsdesnormales1.caption msgctxt "tform1.optionsdesnormales1.caption" msgid "Options des normales" msgstr "" #: tform1.ouvrirsimulation1.caption msgctxt "tform1.ouvrirsimulation1.caption" msgid "Ouvrir simulation" msgstr "" #: tform1.polyhdrerfractant1.caption msgctxt "tform1.polyhdrerfractant1.caption" msgid "Polyhèdre réfractant" msgstr "" #: tform1.polysphrerfractante1.caption msgctxt "tform1.polysphrerfractante1.caption" msgid "Polysphère réfractante" msgstr "" #: tform1.prfrences1.caption msgctxt "tform1.prfrences1.caption" msgid "Préférences" msgstr "" #: tform1.propritsdunlment1.caption msgctxt "tform1.propritsdunlment1.caption" msgid "Propriétés d'un élément" msgstr "" #: tform1.quitter1.caption msgctxt "tform1.quitter1.caption" msgid "Quitter" msgstr "" #: tform1.rayonsfantomes1.caption msgctxt "tform1.rayonsfantomes1.caption" msgid "Rayons fantomes" msgstr "" #: tform1.rayonunique1.caption msgctxt "tform1.rayonunique1.caption" msgid "Rayon unique" msgstr "" #: tform1.refaire1.caption msgctxt "tform1.refaire1.caption" msgid "Refaire" msgstr "" #: tform1.rtablir1.caption msgctxt "tform1.rtablir1.caption" msgid "Annuler" msgstr "" #: tform1.siteweb1.caption msgctxt "tform1.siteweb1.caption" msgid "Site Web" msgstr "" #: tform1.source2.caption msgctxt "tform1.source2.caption" msgid "Source" msgstr "" #: tform1.sourceponctuelle1.caption msgctxt "tform1.sourceponctuelle1.caption" msgid "Objet ponctuel réel ou virtuel" msgstr "" #: tform1.speedbutton1.hint msgctxt "tform1.speedbutton1.hint" msgid "Ajouter (ou éditer) le commentaire de la simulation" msgstr "" #: tform1.speedbutton2.caption msgctxt "tform1.speedbutton2.caption" msgid "Coord." msgstr "" #: tform1.speedbutton2.hint msgctxt "tform1.speedbutton2.hint" msgid "Afficher les coordonnées des segments" msgstr "" #: tform1.sphrerfractante1.caption msgctxt "tform1.sphrerfractante1.caption" msgid "Sphère réfractante" msgstr "" #: tform1.statictext1.caption msgctxt "tform1.statictext1.caption" msgid "Zoom:" msgstr "" #: tform1.statictext2.caption msgctxt "tform1.statictext2.caption" msgid "Miroirs:" msgstr "" #: tform1.statictext3.caption msgctxt "tform1.statictext3.caption" msgid "Sources:" msgstr "" #: tform1.statictext4.caption msgctxt "tform1.statictext4.caption" msgid "Dioptres:" msgstr "" #: tform1.statictext5.caption msgctxt "tform1.statictext5.caption" msgid "Ecrans:" msgstr "" #: tform1.statictext6.caption msgctxt "tform1.statictext6.caption" msgid "Divers:" msgstr "" #: tform1.statictext7.caption msgctxt "tform1.statictext7.caption" msgid "Afficher:" msgstr "" #: tform1.statusbar1.panels[0].text msgid "X=" msgstr "" #: tform1.statusbar1.panels[1].text msgid "Y=" msgstr "" #: tform1.supprimerunlment1.caption msgctxt "tform1.supprimerunlment1.caption" msgid "Supprimer un élément" msgstr "" #: tform1.surfacesdonde1.caption msgctxt "tform1.surfacesdonde1.caption" msgid "Surfaces d'onde" msgstr "" #: tform1.systmeoptique1.caption msgctxt "tform1.systmeoptique1.caption" msgid "Système optique idéal" msgstr "" #: tform1.systmeoptiquerel1.caption msgctxt "tform1.systmeoptiquerel1.caption" msgid "Système optique réel" msgstr "" #: tform1.textesurledessin1.caption msgctxt "tform1.textesurledessin1.caption" msgid "Texte sur le dessin" msgstr "" #: tform1.toolbutton1.caption msgid "ToolButton1" msgstr "" #: tform1.toolbutton2.caption msgid "ToolButton2" msgstr "" #: tform1.toolbutton4.caption msgid "ToolButton4" msgstr "" #: tform1.toolbutton5.caption msgid "ToolButton5" msgstr "" #: tform1.toolbutton6.caption msgid "ToolButton6" msgstr "" #: tform1.toolbutton9.caption msgid "ToolButton9" msgstr "" #: tform1.tousleslments1.caption msgctxt "tform1.tousleslments1.caption" msgid "Tous les éléments" msgstr "" #: tform1.traitflche1.caption msgctxt "tform1.traitflche1.caption" msgid "Trait, fléche..." msgstr "" #: tform_palette.boutondeplacement.caption msgctxt "tform_palette.boutondeplacement.caption" msgid "Déplacer" msgstr "" #: tform_palette.boutondeplacement.hint msgctxt "tform_palette.boutondeplacement.hint" msgid "Déplacer un élément existant: translation, rotation, changement focale ou rayon de courbure..." msgstr "" #: tform_palette.boutondupliquer.caption msgctxt "tform_palette.boutondupliquer.caption" msgid "Dupliquer" msgstr "" #: tform_palette.boutondupliquer.hint msgctxt "tform_palette.boutondupliquer.hint" msgid "Dupliquer un élément existant" msgstr "" #: tform_palette.boutongroupe.caption msgctxt "tform_palette.boutongroupe.caption" msgid "Grouper" msgstr "" #: tform_palette.boutongroupe.hint msgctxt "tform_palette.boutongroupe.hint" msgid "Grouper des éléments existants pour les translater ensemble" msgstr "" #: tform_palette.boutonprop.caption msgctxt "tform_palette.boutonprop.caption" msgid "Propriétés" msgstr "" #: tform_palette.boutonprop.hint msgctxt "tform_palette.boutonprop.hint" msgid "Propriétés d'un élément existant" msgstr "" #: tform_palette.boutonsuppression.caption msgctxt "tform_palette.boutonsuppression.caption" msgid "Supprimer" msgstr "" #: tform_palette.boutonsuppression.hint msgctxt "tform_palette.boutonsuppression.hint" msgid "Supprimer un élément existant" msgstr "" #: tform_palette.caption msgctxt "tform_palette.caption" msgid "Actions" msgstr "" #: tform_palette.speedbutton1.hint msgctxt "tform_palette.speedbutton1.hint" msgid "Pour déplacer cette palette, glissez-déposez à partir de cette zone..." msgstr "" #: tform_palette.speedbutton2.caption msgctxt "tform_palette.speedbutton2.caption" msgid "Export PS" msgstr "" #: tform_palette.speedbutton2.hint msgid "Export de la simulation au format Postscript" msgstr "" #: tform_palette.speedbutton3.caption msgctxt "tform_palette.speedbutton3.caption" msgid "Imprimer" msgstr "" #: tform_palette.speedbutton3.hint msgctxt "tform_palette.speedbutton3.hint" msgid "Imprimer la simulation" msgstr "" #: tform_palette.speedbutton4.caption msgctxt "tform_palette.speedbutton4.caption" msgid "Export PNG" msgstr "" #: tform_palette.speedbutton4.hint msgctxt "tform_palette.speedbutton4.hint" msgid "Exporter la simulation au format image PNG" msgstr "" #: tform_palette.speedbutton5.caption msgctxt "tform_palette.speedbutton5.caption" msgid "Export JPG" msgstr "" #: tform_palette.speedbutton5.hint msgctxt "tform_palette.speedbutton5.hint" msgid "Export de la simulation au format image JPG" msgstr "" #: tform_palette.speedbutton6.caption msgctxt "tform_palette.speedbutton6.caption" msgid "Copier" msgstr "" #: tform_palette.speedbutton6.hint msgctxt "tform_palette.speedbutton6.hint" msgid "Copier simulation dans le presse-papier" msgstr "" #: tform_palette.speedbutton7.caption msgctxt "tform_palette.speedbutton7.caption" msgid "Grouper tout" msgstr "" #: tsaisiechoix.bitbtn1.caption msgctxt "tsaisiechoix.bitbtn1.caption" msgid "Suivant >" msgstr "" #: tsaisiechoix.caption msgctxt "tsaisiechoix.caption" msgid "Que voulez vous faire ?" msgstr "" #: tsaisiechoix.edit_indice_bleu_par_defaut.text msgctxt "tsaisiechoix.edit_indice_bleu_par_defaut.text" msgid "1" msgstr "" #: tsaisiechoix.edit_indice_rouge_par_defaut.text msgctxt "tsaisiechoix.edit_indice_rouge_par_defaut.text" msgid "1" msgstr "" #: tsaisiechoix.edit_indice_vert_par_defaut.text msgctxt "tsaisiechoix.edit_indice_vert_par_defaut.text" msgid "1" msgstr "" #: tsaisiechoix.radiochoix.caption msgctxt "tsaisiechoix.radiochoix.caption" msgid "Voulez vous:" msgstr "" #: tsaisiechoix.statictext2.caption msgctxt "tsaisiechoix.statictext2.caption" msgid "Vous pouvez changer les indices du milieu dans lequel s'effectue la simulation:" msgstr "" #: tsaisiechoix.statictext3.caption msgctxt "tsaisiechoix.statictext3.caption" msgid "Pour le vert:" msgstr "" #: tsaisiechoix.statictext4.caption msgctxt "tsaisiechoix.statictext4.caption" msgid "Pour le rouge:" msgstr "" #: tsaisiechoix.statictext5.caption msgctxt "tsaisiechoix.statictext5.caption" msgid "Pour le bleu:" msgstr "" #: tsaisiemiroirplan.bitbtn1.caption msgctxt "tsaisiemiroirplan.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisiemiroirplan.bitbtn2.caption msgctxt "tsaisiemiroirplan.bitbtn2.caption" msgid "Annuler" msgstr "" #: tsaisiemiroirplan.boutonsup.caption msgctxt "tsaisiemiroirplan.boutonsup.caption" msgid "Supprimer ce miroir" msgstr "" #: tsaisiemiroirplan.caption msgctxt "tsaisiemiroirplan.caption" msgid "Ajout d'un miroir plan" msgstr "" #: tsaisiemiroirplan.cochehachures.caption msgctxt "tsaisiemiroirplan.cochehachures.caption" msgid "Hachures" msgstr "" #: tsaisiemiroirplan.groupbox1.caption msgctxt "tsaisiemiroirplan.groupbox1.caption" msgid "Couleur à l'écran" msgstr "" #: tsaisiemiroirplan.groupbox2.caption msgctxt "tsaisiemiroirplan.groupbox2.caption" msgid "Aspect" msgstr "" #: tsaisiemiroirplan.groupbox3.caption msgctxt "tsaisiemiroirplan.groupbox3.caption" msgid "Epaisseur trait à l'écran" msgstr "" #: tsaisiemiroirplan.groupbox4.caption msgctxt "tsaisiemiroirplan.groupbox4.caption" msgid "Point 1" msgstr "" #: tsaisiemiroirplan.groupbox5.caption msgctxt "tsaisiemiroirplan.groupbox5.caption" msgid "Point 2" msgstr "" #: tsaisiemiroirplan.log1.caption msgctxt "tsaisiemiroirplan.log1.caption" msgid "log1" msgstr "" #: tsaisiemiroirplan.log2.caption msgctxt "tsaisiemiroirplan.log2.caption" msgid "log2" msgstr "" #: tsaisiemiroirplan.log3.caption msgctxt "tsaisiemiroirplan.log3.caption" msgid "log3" msgstr "" #: tsaisiemiroirplan.log4.caption msgctxt "tsaisiemiroirplan.log4.caption" msgid "log4" msgstr "" #: tsaisiemiroirplan.statictext1.caption msgctxt "tsaisiemiroirplan.statictext1.caption" msgid "x=" msgstr "" #: tsaisiemiroirplan.statictext2.caption msgctxt "tsaisiemiroirplan.statictext2.caption" msgid "y=" msgstr "" #: tsaisiemiroirplan.statictext3.caption msgctxt "tsaisiemiroirplan.statictext3.caption" msgid "x=" msgstr "" #: tsaisiemiroirplan.statictext4.caption msgctxt "tsaisiemiroirplan.statictext4.caption" msgid "y=" msgstr "" #: tsaisiepreferences.bitbtn1.caption msgctxt "tsaisiepreferences.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisiepreferences.bitbtn2.caption msgctxt "tsaisiepreferences.bitbtn2.caption" msgid "&Ok et enregistrer sur disque" msgstr "" #: tsaisiepreferences.bitbtn3.caption msgctxt "tsaisiepreferences.bitbtn3.caption" msgid "&Rétablir les valeurs d'origine de tous les éléments" msgstr "" #: tsaisiepreferences.boutoncouleu1.caption msgctxt "tsaisiepreferences.boutoncouleu1.caption" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutoncouleur.caption msgctxt "tsaisiepreferences.boutoncouleur.caption" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutoncouleuraxe.caption msgctxt "tsaisiepreferences.boutoncouleuraxe.caption" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutoncouleuraxe1.caption msgctxt "tsaisiepreferences.boutoncouleuraxe1.caption" msgid "Modifier" msgstr "" #: tsaisiepreferences.boutonpolice.caption msgctxt "tsaisiepreferences.boutonpolice.caption" msgid "Modifier" msgstr "" #: tsaisiepreferences.button1.caption msgctxt "tsaisiepreferences.button1.caption" msgid "Modifier" msgstr "" #: tsaisiepreferences.caption msgctxt "tsaisiepreferences.caption" msgid "Préférences: propriétés par défaut à la création" msgstr "" #: tsaisiepreferences.label1.caption msgctxt "tsaisiepreferences.label1.caption" msgid "Type d'élément" msgstr "" #: tsaisiepreferences.label2.caption msgctxt "tsaisiepreferences.label2.caption" msgid "Couleur par défaut" msgstr "" #: tsaisiepreferences.label3.caption msgctxt "tsaisiepreferences.label3.caption" msgid "Epaisseur par défaut" msgstr "" #: tsaisiepreferences.label4.caption msgctxt "tsaisiepreferences.label4.caption" msgid "Couleur axe par défaut" msgstr "" #: tsaisiepreferences.label5.caption msgctxt "tsaisiepreferences.label5.caption" msgid "Police par défaut" msgstr "" #: tsaisiepreferences.label6.caption msgctxt "tsaisiepreferences.label6.caption" msgid "Indiquer ici les propriétés communes à appliquer à tous les éléments:" msgstr "" #: tsaisiepreferences.label7.caption msgctxt "tsaisiepreferences.label7.caption" msgid "Couleur rayon par défaut" msgstr "" #: tsaisiepreferences.tabsheet1.caption msgctxt "tsaisiepreferences.tabsheet1.caption" msgid "Element par élément" msgstr "" #: tsaisiepreferences.tabsheet2.caption msgctxt "tsaisiepreferences.tabsheet2.caption" msgid "Pour tous les éléments" msgstr "" #: tsaisiereseau.bitbtn1.caption msgctxt "tsaisiereseau.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisiereseau.bitbtn2.caption msgctxt "tsaisiereseau.bitbtn2.caption" msgid "Annuler" msgstr "" #: tsaisiereseau.boutonsup.caption msgctxt "tsaisiereseau.boutonsup.caption" msgid "Supprimer ce réseau" msgstr "" #: tsaisiereseau.caption msgctxt "tsaisiereseau.caption" msgid "Ajout d'un réseau" msgstr "" #: tsaisiereseau.cochehachures.caption msgctxt "tsaisiereseau.cochehachures.caption" msgid "Hachures si réseau en réflexion" msgstr "" #: tsaisiereseau.groupbox1.caption msgctxt "tsaisiereseau.groupbox1.caption" msgid "Couleur à l'écran" msgstr "" #: tsaisiereseau.groupbox2.caption msgctxt "tsaisiereseau.groupbox2.caption" msgid "Aspect" msgstr "" #: tsaisiereseau.groupbox3.caption msgctxt "tsaisiereseau.groupbox3.caption" msgid "Epaisseur trait à l'écran" msgstr "" #: tsaisiereseau.groupbox4.caption msgctxt "tsaisiereseau.groupbox4.caption" msgid "Point 1" msgstr "" #: tsaisiereseau.groupbox5.caption msgctxt "tsaisiereseau.groupbox5.caption" msgid "Point 2" msgstr "" #: tsaisiereseau.groupbox6.caption msgid "Nombre de trait par mm" msgstr "" #: tsaisiereseau.groupbox7.caption msgctxt "tsaisiereseau.groupbox7.caption" msgid "Ordres à prendre en compte" msgstr "" #: tsaisiereseau.log1.caption msgctxt "tsaisiereseau.log1.caption" msgid "log1" msgstr "" #: tsaisiereseau.log2.caption msgctxt "tsaisiereseau.log2.caption" msgid "log2" msgstr "" #: tsaisiereseau.log3.caption msgctxt "tsaisiereseau.log3.caption" msgid "log3" msgstr "" #: tsaisiereseau.log4.caption msgctxt "tsaisiereseau.log4.caption" msgid "log4" msgstr "" #: tsaisiereseau.radiogroup1.caption msgctxt "tsaisiereseau.radiogroup1.caption" msgid "Type de réseau" msgstr "" #: tsaisiereseau.statictext1.caption msgctxt "tsaisiereseau.statictext1.caption" msgid "x=" msgstr "" #: tsaisiereseau.statictext2.caption msgctxt "tsaisiereseau.statictext2.caption" msgid "y=" msgstr "" #: tsaisiereseau.statictext3.caption msgctxt "tsaisiereseau.statictext3.caption" msgid "x=" msgstr "" #: tsaisiereseau.statictext4.caption msgctxt "tsaisiereseau.statictext4.caption" msgid "y=" msgstr "" #: tsaisiereseau.statictext5.caption msgctxt "tsaisiereseau.statictext5.caption" msgid "Ordre minimum" msgstr "" #: tsaisiereseau.statictext6.caption msgctxt "tsaisiereseau.statictext6.caption" msgid "Ordre maximum" msgstr "" #: tsaisiereseau.statictext7.caption msgid "Remarque importante: ce réseau diffractant doit être éclairé par une onde plane." msgstr "" #: tsaisiereseau.statictext8.caption msgid "Les longueurs d'onde peuvent être modifiées dans le menu options, indices du milieu" msgstr "" #: tsaisie_indices_milieu_ambiant.bitbtn1.caption msgctxt "tsaisie_indices_milieu_ambiant.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisie_indices_milieu_ambiant.caption msgctxt "tsaisie_indices_milieu_ambiant.caption" msgid "Indices du milieu ambiant" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_bleu_par_defaut.text msgctxt "tsaisie_indices_milieu_ambiant.edit_indice_bleu_par_defaut.text" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_rouge_par_defaut.text msgctxt "tsaisie_indices_milieu_ambiant.edit_indice_rouge_par_defaut.text" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_vert_par_defaut.text msgctxt "tsaisie_indices_milieu_ambiant.edit_indice_vert_par_defaut.text" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext1.caption msgid "Longueur d'onde pour le vert:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext10.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext10.caption" msgid "nm" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext2.caption msgid "Longueur d'onde pour le rouge:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext3.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext3.caption" msgid "Pour le vert:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext4.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext4.caption" msgid "Pour le rouge:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext5.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext5.caption" msgid "Pour le bleu:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext6.caption msgid "Longueur d'onde pour le bleu:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext7.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext7.caption" msgid "Les valeurs de longueur d'onde sont utilisées pour les réseaux de diffraction" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext8.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext8.caption" msgid "nm" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext9.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext9.caption" msgid "nm" msgstr "" #: tsplashscreen.caption msgid "splashscreen" msgstr "" #: tsplashscreen.label1.caption msgid "Dozzzaqueux" msgstr "" #: tsplashscreen.label2.caption msgid "Logiciel libre et gratuit de simulation de courbes de dosage" msgstr "" #: tsplashscreen.label3.caption msgid "Version 3.04 du 10/08/2009, codée en Lazarus" msgstr "" #: tsplashscreen.label4.caption msgid "Par Jean-Marie Biansan, 2005 à 2009" msgstr "" #: uchaines.rs msgid "'" msgstr "" #: uchaines.rs0 msgctxt "uchaines.rs0" msgid "0" msgstr "" #: uchaines.rs15 msgctxt "uchaines.rs15" msgid "1,5" msgstr "" #: uchaines.rs15b msgid "1.5" msgstr "" #: uchaines.rs16 msgctxt "uchaines.rs16" msgid "1,6" msgstr "" #: uchaines.rs16b msgid "1.6" msgstr "" #: uchaines.rs17 msgctxt "uchaines.rs17" msgid "1,7" msgstr "" #: uchaines.rs17b msgid "1.7" msgstr "" #: uchaines.rs2 msgctxt "uchaines.rs2" msgid " " msgstr "" #: uchaines.rs3 msgctxt "uchaines.rs3" msgid " " msgstr "" #: uchaines.rsa msgctxt "uchaines.rsa" msgid "A" msgstr "" #: uchaines.rsa0 msgid "A0" msgstr "" #: uchaines.rsa1 msgid "A1" msgstr "" #: uchaines.rsa2 msgctxt "uchaines.rsa2" msgid "A=" msgstr "" #: uchaines.rsa22 msgid "A2" msgstr "" #: uchaines.rsa3 msgid "A3" msgstr "" #: uchaines.rsa4 msgctxt "uchaines.rsa4" msgid "A4" msgstr "" #: uchaines.rsa5 msgid "A5" msgstr "" #: uchaines.rsabscissemax msgctxt "uchaines.rsabscissemax" msgid "Abscisse max.:" msgstr "" #: uchaines.rsabscissemaxi msgctxt "uchaines.rsabscissemaxi" msgid "Abscisse maximale" msgstr "" #: uchaines.rsabscissemin msgctxt "uchaines.rsabscissemin" msgid "Abscisse min.:" msgstr "" #: uchaines.rsabscissemini msgctxt "uchaines.rsabscissemini" msgid "Abscisse minimale" msgstr "" #: uchaines.rsactions msgctxt "uchaines.rsactions" msgid "Actions" msgstr "" #: uchaines.rsafficher msgctxt "uchaines.rsafficher" msgid "Afficher:" msgstr "" #: uchaines.rsafficher2 msgctxt "uchaines.rsafficher2" msgid "Afficher" msgstr "" #: uchaines.rsafficherlagr msgctxt "uchaines.rsafficherlagr" msgid "Afficher la grille" msgstr "" #: uchaines.rsafficherlesa msgctxt "uchaines.rsafficherlesa" msgid "Afficher les angles" msgstr "" #: uchaines.rsafficherlesc msgctxt "uchaines.rsafficherlesc" msgid "Afficher les coordonnées des segments" msgstr "" #: uchaines.rsafficherlesn msgctxt "uchaines.rsafficherlesn" msgid "Afficher les normales" msgstr "" #: uchaines.rsaffichervale msgctxt "uchaines.rsaffichervale" msgid "Afficher valeurs angles (en degrés)" msgstr "" #: uchaines.rsaide msgctxt "uchaines.rsaide" msgid "Aide" msgstr "" #: uchaines.rsaidesuroptge msgctxt "uchaines.rsaidesuroptge" msgid "Aide sur OptGeo" msgstr "" #: uchaines.rsajoutaugroup msgid "%s ajouté au groupe n°%s en cours de constitution." msgstr "" #: uchaines.rsajoutduncran msgid "Ajout d'un écran:" msgstr "" #: uchaines.rsajoutduncran2 msgctxt "uchaines.rsajoutduncran2" msgid "Ajout d'un écran" msgstr "" #: uchaines.rsajoutdundiap msgid "Ajout d'un diaphragme:" msgstr "" #: uchaines.rsajoutdundiap2 msgctxt "uchaines.rsajoutdundiap2" msgid "Ajout d'un diaphragme" msgstr "" #: uchaines.rsajoutdunecet msgid "Ajout d'une cette onde plane:" msgstr "" #: uchaines.rsajoutdunelam msgid "Ajout d'une lame semi-réfléchissante:" msgstr "" #: uchaines.rsajoutdunelam2 msgctxt "uchaines.rsajoutdunelam2" msgid "Ajout d'une lame semi-réfléchissante" msgstr "" #: uchaines.rsajoutdunelen msgid "Ajout d'une lentille convergente:" msgstr "" #: uchaines.rsajoutdunelen2 msgid "Ajout d'une lentille divergente:" msgstr "" #: uchaines.rsajoutdunelen3 msgid "Ajout d'une lentille épaisse:" msgstr "" #: uchaines.rsajoutdunelen4 msgctxt "uchaines.rsajoutdunelen4" msgid "Ajout d'une lentille épaisse" msgstr "" #: uchaines.rsajoutdunelen5 msgctxt "uchaines.rsajoutdunelen5" msgid "Ajout d'une lentille mince convergente paraxiale" msgstr "" #: uchaines.rsajoutdunelen6 msgctxt "uchaines.rsajoutdunelen6" msgid "Ajout d'une lentille mince divergente paraxiale" msgstr "" #: uchaines.rsajoutdunemes msgid "Ajout d'une mesure de distance:" msgstr "" #: uchaines.rsajoutdunemes2 msgid "Ajout d'une mesure d'angle:" msgstr "" #: uchaines.rsajoutdunesou msgid "Ajout d'une source ponctuelle:" msgstr "" #: uchaines.rsajoutdunmiro msgid "Ajout d'un miroir plan:" msgstr "" #: uchaines.rsajoutdunmiro10 msgctxt "uchaines.rsajoutdunmiro10" msgid "Ajout d'un miroir sphérique convexe réel" msgstr "" #: uchaines.rsajoutdunmiro11 msgctxt "uchaines.rsajoutdunmiro11" msgid "Ajout d'un miroir sphérique concave paraxial" msgstr "" #: uchaines.rsajoutdunmiro12 msgctxt "uchaines.rsajoutdunmiro12" msgid "Ajout d'un miroir sphérique concave réel" msgstr "" #: uchaines.rsajoutdunmiro2 msgctxt "uchaines.rsajoutdunmiro2" msgid "Ajout d'un miroir concave:" msgstr "" #: uchaines.rsajoutdunmiro3 msgctxt "uchaines.rsajoutdunmiro3" msgid "Ajout d'un miroir convexe:" msgstr "" #: uchaines.rsajoutdunmiro4 msgctxt "uchaines.rsajoutdunmiro4" msgid "Ajout d'un miroir concave:" msgstr "" #: uchaines.rsajoutdunmiro5 msgctxt "uchaines.rsajoutdunmiro5" msgid "Ajout d'un miroir convexe:" msgstr "" #: uchaines.rsajoutdunmiro6 msgid "Ajout d'un miroir cônique:" msgstr "" #: uchaines.rsajoutdunmiro7 msgctxt "uchaines.rsajoutdunmiro7" msgid "Ajout d'un miroir parabolique, elliptique ou hyperbolique" msgstr "" #: uchaines.rsajoutdunmiro8 msgctxt "uchaines.rsajoutdunmiro8" msgid "Ajout d'un miroir plan" msgstr "" #: uchaines.rsajoutdunmiro9 msgctxt "uchaines.rsajoutdunmiro9" msgid "Ajout d'un miroir sphérique convexe paraxial" msgstr "" #: uchaines.rsajoutdunoeil msgid "Ajout d'un oeil stylisé:" msgstr "" #: uchaines.rsajoutdunoeil2 msgctxt "uchaines.rsajoutdunoeil2" msgid "Ajout d'un oeil" msgstr "" #: uchaines.rsajoutdunpris msgctxt "uchaines.rsajoutdunpris" msgid "Ajout d'un prisme" msgstr "" #: uchaines.rsajoutdunrayo msgid "Ajout d'un rayon:" msgstr "" #: uchaines.rsajoutdunrsea msgctxt "uchaines.rsajoutdunrsea" msgid "Ajout d'un réseau" msgstr "" #: uchaines.rsajoutdunrsea2 msgid "Ajout d'un réseau diffractant" msgstr "" #: uchaines.rsajoutduntext msgid "Ajout d'un texte:" msgstr "" #: uchaines.rsajoutduntrai msgid "Ajout d'un trait..." msgstr "" #: uchaines.rsajoutduntrai2 msgctxt "uchaines.rsajoutduntrai2" msgid "Ajout d'un trait, fléche..." msgstr "" #: uchaines.rsajouter msgctxt "uchaines.rsajouter" msgid "Ajouter" msgstr "" #: uchaines.rsajouteroudit msgctxt "uchaines.rsajouteroudit" msgid "Ajouter (ou éditer) le commentaire de la simulation" msgstr "" #: uchaines.rsajouteruncra msgctxt "uchaines.rsajouteruncra" msgid "Ajouter un écran" msgstr "" #: uchaines.rsajouterundia msgctxt "uchaines.rsajouterundia" msgid "Ajouter un diaphragme à iris" msgstr "" #: uchaines.rsajouterunela msgctxt "uchaines.rsajouterunela" msgid "Ajouter une lame semi-réfléchissante" msgstr "" #: uchaines.rsajouterunele msgctxt "uchaines.rsajouterunele" msgid "Ajouter une lentille épaisse" msgstr "" #: uchaines.rsajouterunele2 msgctxt "uchaines.rsajouterunele2" msgid "Ajouter une lentille mince convergente paraxiale" msgstr "" #: uchaines.rsajouterunele3 msgctxt "uchaines.rsajouterunele3" msgid "Ajouter une lentille mince divergente paraxiale" msgstr "" #: uchaines.rsajouteruneon msgctxt "uchaines.rsajouteruneon" msgid "Ajouter une onde plane" msgstr "" #: uchaines.rsajouterunepo msgctxt "uchaines.rsajouterunepo" msgid "Ajouter une polycercle réfractant" msgstr "" #: uchaines.rsajouterunesp msgctxt "uchaines.rsajouterunesp" msgid "Ajouter une sphère réfractante" msgstr "" #: uchaines.rsajouterunmir msgctxt "uchaines.rsajouterunmir" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) concave" msgstr "" #: uchaines.rsajouterunmir2 msgctxt "uchaines.rsajouterunmir2" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) convexe" msgstr "" #: uchaines.rsajouterunmir3 msgctxt "uchaines.rsajouterunmir3" msgid "Ajouter un miroir plan" msgstr "" #: uchaines.rsajouterunmir4 msgctxt "uchaines.rsajouterunmir4" msgid "Ajouter un miroir sphérique convexe paraxial" msgstr "" #: uchaines.rsajouterunmir5 msgctxt "uchaines.rsajouterunmir5" msgid "Ajouter un miroir sphérique convexe réel" msgstr "" #: uchaines.rsajouterunmir6 msgctxt "uchaines.rsajouterunmir6" msgid "Ajouter un miroir sphérique concave paraxial" msgstr "" #: uchaines.rsajouterunmir7 msgctxt "uchaines.rsajouterunmir7" msgid "Ajouter un miroir sphérique concave réel" msgstr "" #: uchaines.rsajouterunobj msgctxt "uchaines.rsajouterunobj" msgid "Ajouter un objet ponctuel réel" msgstr "" #: uchaines.rsajouterunobj2 msgctxt "uchaines.rsajouterunobj2" msgid "Ajouter un objet ponctuel virtuel" msgstr "" #: uchaines.rsajouterunoei msgctxt "uchaines.rsajouterunoei" msgid "Ajouter un oeil stylisé" msgstr "" #: uchaines.rsajouterunpol msgctxt "uchaines.rsajouterunpol" msgid "Ajouter un polygône réfractant" msgstr "" #: uchaines.rsajouterunpri msgctxt "uchaines.rsajouterunpri" msgid "Ajouter un prisme isocéle" msgstr "" #: uchaines.rsajouterunray msgctxt "uchaines.rsajouterunray" msgid "Ajouter un rayon" msgstr "" #: uchaines.rsajouterunrse msgid "Ajouter un réseau diffractant" msgstr "" #: uchaines.rsajouteruntex msgctxt "uchaines.rsajouteruntex" msgid "Ajouter un texte sur le dessin" msgstr "" #: uchaines.rsajouteruntra msgctxt "uchaines.rsajouteruntra" msgid "Ajouter un trait, une fléche..." msgstr "" #: uchaines.rsajusterautom msgctxt "uchaines.rsajusterautom" msgid "Ajuster automatiquement à la plus petite taille" msgstr "" #: uchaines.rsangleausomme msgctxt "uchaines.rsangleausomme" msgid "Angle au sommet" msgstr "" #: uchaines.rsangledouvert msgctxt "uchaines.rsangledouvert" msgid "Angle d'ouverture" msgstr "" #: uchaines.rsangledouvert2 msgctxt "uchaines.rsangledouvert2" msgid "Angle d'ouverture" msgstr "" #: uchaines.rsanglepolaire msgctxt "uchaines.rsanglepolaire" msgid "Angle polaire du diaphragme" msgstr "" #: uchaines.rsanglepolaire2 msgctxt "uchaines.rsanglepolaire2" msgid "Angle polaire de l'axe focal" msgstr "" #: uchaines.rsanglepolaire3 msgctxt "uchaines.rsanglepolaire3" msgid "Angle polaire de la hauteur principale" msgstr "" #: uchaines.rsanglesdincid msgctxt "uchaines.rsanglesdincid" msgid "Angles d'incid. et de réfr." msgstr "" #: uchaines.rsanglespolair msgctxt "uchaines.rsanglespolair" msgid "Angles polaires FMi (extrémités)" msgstr "" #: uchaines.rsannuler msgctxt "uchaines.rsannuler" msgid "Annuler" msgstr "" #: uchaines.rsapropos msgctxt "uchaines.rsapropos" msgid "A propos" msgstr "" #: uchaines.rsaproposdecel msgctxt "uchaines.rsaproposdecel" msgid "A propos de ce logiciel" msgstr "" #: uchaines.rsaspect msgctxt "uchaines.rsaspect" msgid "Aspect" msgstr "" #: uchaines.rsaspectlcran msgctxt "uchaines.rsaspectlcran" msgid "Aspect à l'écran" msgstr "" #: uchaines.rsassocierlesf msgctxt "uchaines.rsassocierlesf" msgid "Associer les fichiers .opt avec OptGeo" msgstr "" #: uchaines.rsattention msgid "Attention !" msgstr "" #: uchaines.rsattention2 msgid "Attention !!" msgstr "" #: uchaines.rsattention3 msgid "Attention" msgstr "" #: uchaines.rsattention4 msgid "Attention !!!" msgstr "" #: uchaines.rsattraction msgctxt "uchaines.rsattraction" msgid "Attraction" msgstr "" #: uchaines.rsattractionde msgctxt "uchaines.rsattractionde" msgid "Attraction de la grille" msgstr "" #: uchaines.rsauteurjeanma msgid "Auteur: Jean-Marie Biansan" msgstr "" #: uchaines.rsaxedesymtrie msgctxt "uchaines.rsaxedesymtrie" msgid "Axe de symétrie" msgstr "" #: uchaines.rsaxefocal msgctxt "uchaines.rsaxefocal" msgid "Axe focal" msgstr "" #: uchaines.rsaxeoptique msgctxt "uchaines.rsaxeoptique" msgid "Axe optique" msgstr "" #: uchaines.rsbarr msgid "Barré" msgstr "" #: uchaines.rsbas msgid "Bas" msgstr "" #: uchaines.rsbasederegist msgctxt "uchaines.rsbasederegist" msgid "Base de registre" msgstr "" #: uchaines.rsbienvenue msgid "Bienvenue..." msgstr "" #: uchaines.rsblanc msgid "Blanc" msgstr "" #: uchaines.rsbleu msgid "Bleu" msgstr "" #: uchaines.rscacherdesseg msgctxt "uchaines.rscacherdesseg" msgid "Cacher des segments de rayon" msgstr "" #: uchaines.rscecinestpasu msgid "Ceci n'est pas une valeur numérique acceptable !" msgstr "" #: uchaines.rscediaphragme msgid "ce diaphragme" msgstr "" #: uchaines.rscefichierexi msgid "Ce fichier existe déjà." msgstr "" #: uchaines.rscegroupe msgid "ce groupe" msgstr "" #: uchaines.rscemiroircniq msgid "ce miroir cônique" msgstr "" #: uchaines.rscemiroirconc msgid "ce miroir concave paraxial" msgstr "" #: uchaines.rscemiroirconi msgid "ce miroir conique" msgstr "" #: uchaines.rscemiroirconv msgid "ce miroir convexe paraxial" msgstr "" #: uchaines.rscemiroirplan msgid "ce miroir plan" msgstr "" #: uchaines.rscemiroirsphr msgid "ce miroir sphérique concave" msgstr "" #: uchaines.rscemiroirsphr2 msgid "ce miroir sphérique convexe" msgstr "" #: uchaines.rscemiroirsphr3 msgid "ce miroir sphèrique" msgstr "" #: uchaines.rscemiroirsphr4 msgid "ce miroir sphérique" msgstr "" #: uchaines.rscentr msgid "Centré" msgstr "" #: uchaines.rscentrec msgctxt "uchaines.rscentrec" msgid "Centre C" msgstr "" #: uchaines.rscentredinert msgctxt "uchaines.rscentredinert" msgid "Centre d'inertie" msgstr "" #: uchaines.rscepolycercle msgid "ce polycercle" msgstr "" #: uchaines.rscepolygne msgid "ce polygône" msgstr "" #: uchaines.rscepolygone msgid "ce polygone" msgstr "" #: uchaines.rsceprisme msgid "ce prisme" msgstr "" #: uchaines.rscerayon msgid "ce rayon" msgstr "" #: uchaines.rscerayonlumin msgid "ce rayon lumineux" msgstr "" #: uchaines.rscercle msgctxt "uchaines.rscercle" msgid "Cercle" msgstr "" #: uchaines.rscereseau msgid "ce réseau" msgstr "" #: uchaines.rscesommetestr msgctxt "uchaines.rscesommetestr" msgid "Ce sommet est relié au suivant par:" msgstr "" #: uchaines.rscetangle msgid "cet angle" msgstr "" #: uchaines.rscetarcdecerc msgctxt "uchaines.rscetarcdecerc" msgid "En allant de Ai vers Ai+1, le sommet de l'arc de cercle est:" msgstr "" #: uchaines.rscetcran msgid "cet écran" msgstr "" #: uchaines.rscetexte msgid "ce texte" msgstr "" #: uchaines.rscetoeil msgid "cet oeil" msgstr "" #: uchaines.rscetrait msgid "ce trait" msgstr "" #: uchaines.rscettelamesem msgid "cette lame semi-réfléchissante" msgstr "" #: uchaines.rscettelentill msgid "cette lentille mince convergente" msgstr "" #: uchaines.rscettelentill2 msgid "cette lentille épaisse" msgstr "" #: uchaines.rscettelentill3 msgid "cette lentille mince divergente" msgstr "" #: uchaines.rscettelentill4 msgid "cette lentille" msgstr "" #: uchaines.rscettemesured msgid "cette mesure de distance" msgstr "" #: uchaines.rscettemesured2 msgctxt "uchaines.rscettemesured2" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured3 msgctxt "uchaines.rscettemesured3" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured4 msgctxt "uchaines.rscettemesured4" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured5 msgctxt "uchaines.rscettemesured5" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured6 msgctxt "uchaines.rscettemesured6" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscettemesured7 msgctxt "uchaines.rscettemesured7" msgid "cette mesure d'angle" msgstr "" #: uchaines.rscetteondepla msgid "cette onde plane" msgstr "" #: uchaines.rscettesourcep msgid "cette source ponctuelle" msgstr "" #: uchaines.rscettesphre msgid "cette sphère" msgstr "" #: uchaines.rscettestructu msgid "Cette structure serait un segment..." msgstr "" #: uchaines.rschangementde msgid "Changement de langue" msgstr "" #: uchaines.rschoisissezau msgctxt "uchaines.rschoisissezau" msgid "Choisissez aussi éventuellement:" msgstr "" #: uchaines.rschoisissezlo msgid "Choisissez l'objet à supprimer:" msgstr "" #: uchaines.rschoixdelobje msgid "Choix de l'objet:" msgstr "" #: uchaines.rschoixduspara msgctxt "uchaines.rschoixduspara" msgid "Choix du séparateur décimal" msgstr "" #: uchaines.rsclicgauchepo msgid "Clic gauche pour ajouter %s au groupe..." msgstr "" #: uchaines.rsclicgauchepo2 msgctxt "uchaines.rsclicgauchepo2" msgid "Clic gauche pour sélectionner l'élément..." msgstr "" #: uchaines.rsclicgauchepo3 msgctxt "uchaines.rsclicgauchepo3" msgid "Clic gauche pour sélectionner l'élément..." msgstr "" #: uchaines.rsclicgauchepo4 msgid "Clic gauche pour sélectionner ce centre..." msgstr "" #: uchaines.rsclicgauchepo5 msgid "Clic gauche pour sélectionner ce foyer..." msgstr "" #: uchaines.rsclicgauchepo6 msgid "Clic gauche pour sélectionner ce bord de trou..." msgstr "" #: uchaines.rsclicgauchepo7 msgid "Clic gauche pour sélectionner ce sommet de prisme..." msgstr "" #: uchaines.rsclicgauchepo8 msgid "Clic gauche pour sélectionner ce sommet d'arc de cercle..." msgstr "" #: uchaines.rsclicgauchepo9 msgid "Clic gauche pour supprimer %s..." msgstr "" #: uchaines.rscliquersurle msgid "Cliquer sur le centre (intersection des droites)..." msgstr "" #: uchaines.rscliquersurlo msgid "Cliquer sur l'origine du segment..." msgstr "" #: uchaines.rscliquezpoura msgid "Cliquez pour afficher les propriétés de cet élément..." msgstr "" #: uchaines.rscliquezpourd msgid "Cliquez pour dupliquer cet élément..." msgstr "" #: uchaines.rscliquezsurle msgid "Cliquez sur les croix violettes des éléments à grouper, puis sur Fin..." msgstr "" #: uchaines.rscm msgid "cm" msgstr "" #: uchaines.rscommentaires msgid "Commentaires sur la simulation de titre non précisé..." msgstr "" #: uchaines.rscommentaires2 msgctxt "uchaines.rscommentaires2" msgid "Commentaire sur la simulation" msgstr "" #: uchaines.rscommentaires3 msgid "Commentaires sur la simulation de nom non précisé..." msgstr "" #: uchaines.rscommentaires4 msgid "Commentaires sur la simulation %s" msgstr "" #: uchaines.rscommentaires5 msgid "Commentaires sur la simulation %sopt" msgstr "" #: uchaines.rsconcave msgctxt "uchaines.rsconcave" msgid "Concave" msgstr "" #: uchaines.rsconcaveoucon msgctxt "uchaines.rsconcaveoucon" msgid "Concave ou convexe ?" msgstr "" #: uchaines.rsconfiguratio msgctxt "uchaines.rsconfiguratio" msgid "Configuration de la page pour l'impression" msgstr "" #: uchaines.rsconfiguratio2 msgctxt "uchaines.rsconfiguratio2" msgid "Configuration primaire d'OptGeo" msgstr "" #: uchaines.rscontacterlau msgctxt "uchaines.rscontacterlau" msgid "Contacter l'auteur" msgstr "" #: uchaines.rscoord msgctxt "uchaines.rscoord" msgid "Coord." msgstr "" #: uchaines.rscoordonnesde msgctxt "uchaines.rscoordonnesde" msgid "Coordonnées des segments" msgstr "" #: uchaines.rscoordonnesde2 msgctxt "uchaines.rscoordonnesde2" msgid "Coordonnées de ce sommet" msgstr "" #: uchaines.rscoordonnesde3 msgctxt "uchaines.rscoordonnesde3" msgid "Coordonnées des sommets des faces" msgstr "" #: uchaines.rscoordonnesde4 msgctxt "uchaines.rscoordonnesde4" msgid "Coordonnées de C" msgstr "" #: uchaines.rscoordonnesdu msgctxt "uchaines.rscoordonnesdu" msgid "Coordonnées du centre" msgstr "" #: uchaines.rscoordonnesdu2 msgctxt "uchaines.rscoordonnesdu2" msgid "Coordonnées du point supérieur gauche du texte" msgstr "" #: uchaines.rscoordonnesdu3 msgctxt "uchaines.rscoordonnesdu3" msgid "Coordonnées du 1er point" msgstr "" #: uchaines.rscoordonnesdu4 msgctxt "uchaines.rscoordonnesdu4" msgid "Coordonnées du 2nd point" msgstr "" #: uchaines.rscoordonnespo msgctxt "uchaines.rscoordonnespo" msgid "Coordonnées point 1" msgstr "" #: uchaines.rscoordonnespo2 msgctxt "uchaines.rscoordonnespo2" msgid "Coordonnées point 2" msgstr "" #: uchaines.rscopier msgctxt "uchaines.rscopier" msgid "Copier" msgstr "" #: uchaines.rscopiersimula msgctxt "uchaines.rscopiersimula" msgid "Copier simulation dans le presse-papier" msgstr "" #: uchaines.rscopiersimula2 msgctxt "uchaines.rscopiersimula2" msgid "Copier simulation dans le presse papier" msgstr "" #: uchaines.rscopyrightjea msgid "Copyright Jean-Marie Biansan, 2004, 2013" msgstr "" #: uchaines.rscouleur msgctxt "uchaines.rscouleur" msgid "Couleur:" msgstr "" #: uchaines.rscouleur2 msgctxt "uchaines.rscouleur2" msgid "Couleur" msgstr "" #: uchaines.rscouleuraxepa msgctxt "uchaines.rscouleuraxepa" msgid "Couleur axe par défaut" msgstr "" #: uchaines.rscouleurdefon msgctxt "uchaines.rscouleurdefon" msgid "Couleur de fond" msgstr "" #: uchaines.rscouleurdelal msgctxt "uchaines.rscouleurdelal" msgid "Couleur de la lentille" msgstr "" #: uchaines.rscouleurdelas msgctxt "uchaines.rscouleurdelas" msgid "Couleur de la source" msgstr "" #: uchaines.rscouleurdelat msgctxt "uchaines.rscouleurdelat" msgid "Couleur de la trace" msgstr "" #: uchaines.rscouleurdelax msgctxt "uchaines.rscouleurdelax" msgid "Couleur de l'axe optique" msgstr "" #: uchaines.rscouleurdelax2 msgctxt "uchaines.rscouleurdelax2" msgid "Couleur de l'axe optique" msgstr "" #: uchaines.rscouleurdelax3 msgctxt "uchaines.rscouleurdelax3" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax4 msgctxt "uchaines.rscouleurdelax4" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax5 msgctxt "uchaines.rscouleurdelax5" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax6 msgctxt "uchaines.rscouleurdelax6" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdelax7 msgctxt "uchaines.rscouleurdelax7" msgid "Couleur de l'axe" msgstr "" #: uchaines.rscouleurdeloe msgctxt "uchaines.rscouleurdeloe" msgid "Couleur de l'oeil" msgstr "" #: uchaines.rscouleurdespo msgctxt "uchaines.rscouleurdespo" msgid "Couleur des points" msgstr "" #: uchaines.rscouleurdesra msgctxt "uchaines.rscouleurdesra" msgid "Couleur des rayons" msgstr "" #: uchaines.rscouleurdudia msgctxt "uchaines.rscouleurdudia" msgid "Couleur du diaphragme" msgstr "" #: uchaines.rscouleurdumir msgctxt "uchaines.rscouleurdumir" msgid "Couleur du miroir" msgstr "" #: uchaines.rscouleurdupri msgctxt "uchaines.rscouleurdupri" msgid "Couleur du prisme" msgstr "" #: uchaines.rscouleurduray msgctxt "uchaines.rscouleurduray" msgid "Couleur du rayon" msgstr "" #: uchaines.rscouleurdutra msgctxt "uchaines.rscouleurdutra" msgid "Couleur du trait" msgstr "" #: uchaines.rscouleurlcran msgctxt "uchaines.rscouleurlcran" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran2 msgctxt "uchaines.rscouleurlcran2" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran3 msgctxt "uchaines.rscouleurlcran3" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran4 msgctxt "uchaines.rscouleurlcran4" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran5 msgctxt "uchaines.rscouleurlcran5" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran6 msgctxt "uchaines.rscouleurlcran6" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurlcran7 msgctxt "uchaines.rscouleurlcran7" msgid "Couleur à l'écran" msgstr "" #: uchaines.rscouleurpardf msgctxt "uchaines.rscouleurpardf" msgid "Couleur par défaut" msgstr "" #: uchaines.rscouleurrayon msgctxt "uchaines.rscouleurrayon" msgid "Couleur rayon par défaut" msgstr "" #: uchaines.rscration msgid "Création ?" msgstr "" #: uchaines.rscrationrussi msgid "Création réussie." msgstr "" #: uchaines.rscrerungroupe msgid "Créer un groupe contenant tous les éléments" msgstr "" #: uchaines.rscroix msgid "Croix +" msgstr "" #: uchaines.rscroixdroite msgctxt "uchaines.rscroixdroite" msgid "Croix droite" msgstr "" #: uchaines.rscroixoblique msgctxt "uchaines.rscroixoblique" msgid "Croix oblique" msgstr "" #: uchaines.rscroixx msgid "Croix x" msgstr "" #: uchaines.rscrrunenouvel msgid "Créér une nouvelle simulation" msgstr "" #: uchaines.rscrrunenouvel2 msgid "Créér une nouvelle simulation en choisissant les dimensions de l'espace de travail" msgstr "" #: uchaines.rsd msgctxt "uchaines.rsd" msgid "D=" msgstr "" #: uchaines.rsdam msgid "dam" msgstr "" #: uchaines.rsdefaire msgid "Défaire" msgstr "" #: uchaines.rsdelalicenseg msgctxt "uchaines.rsdelalicenseg" msgid "de la license GNU GPL" msgstr "" #: uchaines.rsdelespacedet msgctxt "uchaines.rsdelespacedet" msgid "de l'espace de travail" msgstr "" #: uchaines.rsdelespacedet2 msgctxt "uchaines.rsdelespacedet2" msgid "de l'espace de travail" msgstr "" #: uchaines.rsdemonrpertoi msgctxt "uchaines.rsdemonrpertoi" msgid "de mon répertoire personnel" msgstr "" #: uchaines.rsdernierpoint msgid "Dernier point pour l'angle au sommet..." msgstr "" #: uchaines.rsdesurfacedcr msgctxt "uchaines.rsdesurfacedcr" msgid "de surface d'écran avec repére orthonormé)=" msgstr "" #: uchaines.rsdeuxdimensio msgctxt "uchaines.rsdeuxdimensio" msgid "à deux dimensions, libre et gratuit, sous license GPL." msgstr "" #: uchaines.rsdeuxsommetsc msgid "Deux sommets consécutifs confondus..." msgstr "" #: uchaines.rsdfinirlerper msgctxt "uchaines.rsdfinirlerper" msgid "Définir le répertoire personnel" msgstr "" #: uchaines.rsdiamtre msgctxt "uchaines.rsdiamtre" msgid "Diamètre" msgstr "" #: uchaines.rsdiamtre2 msgctxt "uchaines.rsdiamtre2" msgid "Diamètre=" msgstr "" #: uchaines.rsdiamtreangul msgctxt "uchaines.rsdiamtreangul" msgid "Diamètre angulaire du trou:" msgstr "" #: uchaines.rsdiamtredutro msgctxt "uchaines.rsdiamtredutro" msgid "Diamètre du trou:" msgstr "" #: uchaines.rsdiaphragme msgctxt "uchaines.rsdiaphragme" msgid "Diaphragme" msgstr "" #: uchaines.rsdiaphragmen msgid "Diaphragme n° %s" msgstr "" #: uchaines.rsdimensionsde msgctxt "uchaines.rsdimensionsde" msgid "Dimensions de l'espace de travail" msgstr "" #: uchaines.rsdioptres msgctxt "uchaines.rsdioptres" msgid "Dioptres:" msgstr "" #: uchaines.rsdisque msgctxt "uchaines.rsdisque" msgid "Disque" msgstr "" #: uchaines.rsdivers msgctxt "uchaines.rsdivers" msgid "Divers" msgstr "" #: uchaines.rsdivers2 msgctxt "uchaines.rsdivers2" msgid "Divers:" msgstr "" #: uchaines.rsdm msgid "dm" msgstr "" #: uchaines.rsdoisjecrerle msgid "Dois je créer le groupe n°%s en y mettant tous les éléments présents ?" msgstr "" #: uchaines.rsdondesparezc msgctxt "uchaines.rsdondesparezc" msgid "d'onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)" msgstr "" #: uchaines.rsdondesparezc2 msgctxt "uchaines.rsdondesparezc2" msgid "d'onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)" msgstr "" #: uchaines.rsdonnerlesval msgctxt "uchaines.rsdonnerlesval" msgid "Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces" msgstr "" #: uchaines.rsdonnerlesval2 msgctxt "uchaines.rsdonnerlesval2" msgid "Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces" msgstr "" #: uchaines.rsdonnesaberra msgid "Données aberrantes!" msgstr "" #: uchaines.rsdonnesaberra2 msgid "Données aberrantes !" msgstr "" #: uchaines.rsdonnesdecons msgid "Données de construction de la conique aberrantes !" msgstr "" #: uchaines.rsdonnesdecons2 msgid "Données de construction du miroir aberrantes !" msgstr "" #: uchaines.rsdplacer msgctxt "uchaines.rsdplacer" msgid "Déplacer" msgstr "" #: uchaines.rsdplacerlebor msgid "Déplacer le bord, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerlecen msgid "Déplacer le centre, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerlefoy msgid "Déplacer le foyer, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerlesom msgid "Déplacer le sommet, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerllmen msgctxt "uchaines.rsdplacerllmen" msgid "Déplacer l'élément, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerllmen2 msgctxt "uchaines.rsdplacerllmen2" msgid "Déplacer l'élément, puis clic gauche pour le poser..." msgstr "" #: uchaines.rsdplacerunlme msgctxt "uchaines.rsdplacerunlme" msgid "Déplacer un élément existant: translation, rotation, changement focale ou rayon de courbure..." msgstr "" #: uchaines.rsdplacerunlme2 msgctxt "uchaines.rsdplacerunlme2" msgid "Déplacer un élément" msgstr "" #: uchaines.rsdroite msgid "Droite" msgstr "" #: uchaines.rsdsassocier msgctxt "uchaines.rsdsassocier" msgid "Désassocier" msgstr "" #: uchaines.rsdudernierrpe msgctxt "uchaines.rsdudernierrpe" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: uchaines.rsdudernierrpe2 msgctxt "uchaines.rsdudernierrpe2" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "" #: uchaines.rsdupliquer msgctxt "uchaines.rsdupliquer" msgid "Dupliquer" msgstr "" #: uchaines.rsdupliquerunl msgctxt "uchaines.rsdupliquerunl" msgid "Dupliquer un élément existant" msgstr "" #: uchaines.rsdupliquerunl2 msgctxt "uchaines.rsdupliquerunl2" msgid "Dupliquer un élément" msgstr "" #: uchaines.rsdurpertoiree msgid "du répertoire %sexemples%s" msgstr "" #: uchaines.rse msgctxt "uchaines.rse" msgid "e=" msgstr "" #: uchaines.rsecran msgctxt "uchaines.rsecran" msgid "Ecran" msgstr "" #: uchaines.rsecrann msgid "Ecran n° %s" msgstr "" #: uchaines.rsecrans msgctxt "uchaines.rsecrans" msgid "Ecrans:" msgstr "" #: uchaines.rsediterlecomm msgctxt "uchaines.rsediterlecomm" msgid "Editer le commentaire de la simulation" msgstr "" #: uchaines.rsediteurdetex msgctxt "uchaines.rsediteurdetex" msgid "Editeur de texte" msgstr "" #: uchaines.rsedition msgctxt "uchaines.rsedition" msgid "Edition" msgstr "" #: uchaines.rselementparlm msgctxt "uchaines.rselementparlm" msgid "Element par élément" msgstr "" #: uchaines.rselmentschois msgctxt "uchaines.rselmentschois" msgid "Eléments à choisir" msgstr "" #: uchaines.rsempennagedes msgctxt "uchaines.rsempennagedes" msgid "Empennage des rayons" msgstr "" #: uchaines.rsen1000medela msgctxt "uchaines.rsen1000medela" msgid "(en 1000éme de la taille du segment)" msgstr "" #: uchaines.rsen1000medela2 msgctxt "uchaines.rsen1000medela2" msgid "(en 1000éme de la diagonale de l'espace de travail)" msgstr "" #: uchaines.rsen11000delad msgctxt "uchaines.rsen11000delad" msgid "en 1/1000 de la diagonale" msgstr "" #: uchaines.rsencliquantsu msgid "En cliquant sur le bouton %sOK%s, vous déclarez accepter les termes" msgstr "" #: uchaines.rsenregistrers msgctxt "uchaines.rsenregistrers" msgid "Enregistrer simulation sous" msgstr "" #: uchaines.rsenregistrers2 msgctxt "uchaines.rsenregistrers2" msgid "Enregistrer simulation" msgstr "" #: uchaines.rsenrflexion msgid "En réflexion" msgstr "" #: uchaines.rsentransmissi msgid "En transmission" msgstr "" #: uchaines.rsentreparenth msgctxt "uchaines.rsentreparenth" msgid "(entre parenthéses et séparés par des virgules" msgstr "" #: uchaines.rsepaisseurdel msgctxt "uchaines.rsepaisseurdel" msgid "Epaisseur de la trace" msgstr "" #: uchaines.rsepaisseurdud msgid "Epaisseur du diaphragme trop petite, ou diaphragme débordant de l'écran !" msgstr "" #: uchaines.rsepaisseurdut msgctxt "uchaines.rsepaisseurdut" msgid "Epaisseur du trait" msgstr "" #: uchaines.rsepaisseurlcr msgctxt "uchaines.rsepaisseurlcr" msgid "Epaisseur à l'écran" msgstr "" #: uchaines.rsepaisseurlcr2 msgctxt "uchaines.rsepaisseurlcr2" msgid "Epaisseur à l'écran" msgstr "" #: uchaines.rsepaisseurlcr3 msgctxt "uchaines.rsepaisseurlcr3" msgid "Epaisseur à l'écran" msgstr "" #: uchaines.rsepaisseurpar msgctxt "uchaines.rsepaisseurpar" msgid "Epaisseur par défaut" msgstr "" #: uchaines.rsepaisseurtra msgctxt "uchaines.rsepaisseurtra" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra10 msgctxt "uchaines.rsepaisseurtra10" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra2 msgctxt "uchaines.rsepaisseurtra2" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra3 msgctxt "uchaines.rsepaisseurtra3" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra4 msgctxt "uchaines.rsepaisseurtra4" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra5 msgctxt "uchaines.rsepaisseurtra5" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra6 msgctxt "uchaines.rsepaisseurtra6" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra7 msgctxt "uchaines.rsepaisseurtra7" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra8 msgctxt "uchaines.rsepaisseurtra8" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rsepaisseurtra9 msgctxt "uchaines.rsepaisseurtra9" msgid "Epaisseur trait à l'écran" msgstr "" #: uchaines.rserreur msgid "Erreur !!!" msgstr "" #: uchaines.rserreurcritiq msgid "Erreur critique !" msgstr "" #: uchaines.rserreurdcritu msgid "Erreur d'écriture sur le disque" msgstr "" #: uchaines.rsespacedetrav msgid "Espace de travail: horiz: [%s,%s]; vert: [%s,%s] " msgstr "" #: uchaines.rsespacedetrav2 msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] " msgstr "" #: uchaines.rsespacedetrav3 msgctxt "uchaines.rsespacedetrav3" msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - Simulation: %s" msgstr "" #: uchaines.rsespacedetrav4 msgctxt "uchaines.rsespacedetrav4" msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - Simulation: %s" msgstr "" #: uchaines.rsetesvoussurd msgid "Etes-vous sur de vouloir supprimer %s ?" msgstr "" #: uchaines.rsetsansespace msgctxt "uchaines.rsetsansespace" msgid "et sans espaces); exemple: (1,4,10)" msgstr "" #: uchaines.rsexcentricit msgctxt "uchaines.rsexcentricit" msgid "Excentricité" msgstr "" #: uchaines.rsexemple12014 msgctxt "uchaines.rsexemple12014" msgid "(exemple: 120 145 276)" msgstr "" #: uchaines.rsexportdelasi msgctxt "uchaines.rsexportdelasi" msgid "Export de la simulation au format image JPG" msgstr "" #: uchaines.rsexportergrap msgctxt "uchaines.rsexportergrap" msgid "Exporter graphe" msgstr "" #: uchaines.rsexporterlasi msgctxt "uchaines.rsexporterlasi" msgid "Exporter la simulation au format image PNG" msgstr "" #: uchaines.rsexporterlasi2 msgid "Exporter la simulation au format Poscscript" msgstr "" #: uchaines.rsexportjpg msgctxt "uchaines.rsexportjpg" msgid "Export JPG" msgstr "" #: uchaines.rsexportpng msgctxt "uchaines.rsexportpng" msgid "Export PNG" msgstr "" #: uchaines.rsexportps msgctxt "uchaines.rsexportps" msgid "Export PS" msgstr "" #: uchaines.rsexpressionil msgid "Expression illégale pour la l'abscisse minimale !" msgstr "" #: uchaines.rsexpressionil2 msgid "Expression illégale pour la l'abscisse maximale !" msgstr "" #: uchaines.rsexpressionil3 msgctxt "uchaines.rsexpressionil3" msgid "Expression illégale pour la l'ordonnée minimale !" msgstr "" #: uchaines.rsexpressionil4 msgctxt "uchaines.rsexpressionil4" msgid "Expression illégale pour la l'ordonnée maximale !" msgstr "" #: uchaines.rsexpressionil5 msgid "Expression illégale pour la l'abcisse minimale !" msgstr "" #: uchaines.rsexpressionil6 msgctxt "uchaines.rsexpressionil6" msgid "Expression illégale pour la l'ordonnée minimale !" msgstr "" #: uchaines.rsexpressionil7 msgid "Expression illégale pour la l'abcisse maximale !" msgstr "" #: uchaines.rsexpressionil8 msgctxt "uchaines.rsexpressionil8" msgid "Expression illégale pour la l'ordonnée maximale !" msgstr "" #: uchaines.rsextrmitpoint msgctxt "uchaines.rsextrmitpoint" msgid "Extrémité (point 2)" msgstr "" #: uchaines.rsextrmitrayon msgctxt "uchaines.rsextrmitrayon" msgid "Extrémité rayon 1 (point D)" msgstr "" #: uchaines.rsf msgctxt "uchaines.rsf" msgid "|f|=" msgstr "" #: uchaines.rsfacteurdezoo msgctxt "uchaines.rsfacteurdezoo" msgid "Facteur de zoom" msgstr "" #: uchaines.rsfait msgid "Fait !" msgstr "" #: uchaines.rsfaitespasser msgid "Faites passer la souris sur une des croix violettes, ou cliquez sur Fin..." msgstr "" #: uchaines.rsfaitespasser2 msgid "Faites passer la souris sur un des éléments colorés..." msgstr "" #: uchaines.rsfaitespasser3 msgid "Faites passer la souris sur un des cercles rouges..." msgstr "" #: uchaines.rsfaitespasser4 msgid "Faites passer la souris sur un point cerclé..." msgstr "" #: uchaines.rsfichier msgctxt "uchaines.rsfichier" msgid "Fichier" msgstr "" #: uchaines.rsfichierdesin msgid "Fichier des indices de réfraction non trouvé !" msgstr "" #: uchaines.rsfichierendom msgid "Fichier endommagé!!!" msgstr "" #: uchaines.rsfichierinacc msgid "Fichier inaccessible !" msgstr "" #: uchaines.rsfichierinacc2 msgid "Fichier inaccessible en lecture!" msgstr "" #: uchaines.rsfindelacrati msgid "Fin de la création d'un groupe" msgstr "" #: uchaines.rsfindpl msgid "Fin dépl." msgstr "" #: uchaines.rsfindupl msgid "Fin dupl." msgstr "" #: uchaines.rsfingroupemen msgid "Fin groupement" msgstr "" #: uchaines.rsfinprop msgid "Fin prop." msgstr "" #: uchaines.rsfinsup msgid "Fin sup." msgstr "" #: uchaines.rsflche msgid "Fléche" msgstr "" #: uchaines.rsflchen msgid "Fléche n° %s" msgstr "" #: uchaines.rsfocale msgctxt "uchaines.rsfocale" msgid "Focale" msgstr "" #: uchaines.rsfocalevaleur msgctxt "uchaines.rsfocalevaleur" msgid "Focale (valeur absolue)" msgstr "" #: uchaines.rsformedelapre msgctxt "uchaines.rsformedelapre" msgid "Forme de la première extrémité" msgstr "" #: uchaines.rsformedelasec msgctxt "uchaines.rsformedelasec" msgid "Forme de la seconde extrémité" msgstr "" #: uchaines.rsfoyerf msgctxt "uchaines.rsfoyerf" msgid "Foyer F" msgstr "" #: uchaines.rsgauche msgid "Gauche" msgstr "" #: uchaines.rsgr msgid "Gr" msgstr "" #: uchaines.rsgras msgid "Gras" msgstr "" #: uchaines.rsgrille msgctxt "uchaines.rsgrille" msgid "Grille" msgstr "" #: uchaines.rsgrillederepr msgctxt "uchaines.rsgrillederepr" msgid "Grille de repérage" msgstr "" #: uchaines.rsgroupen msgid "Groupe n° %s" msgstr "" #: uchaines.rsgrouper msgctxt "uchaines.rsgrouper" msgid "Grouper" msgstr "" #: uchaines.rsgrouperdeslm msgctxt "uchaines.rsgrouperdeslm" msgid "Grouper des éléments" msgstr "" #: uchaines.rsgrouperdeslm2 msgctxt "uchaines.rsgrouperdeslm2" msgid "Grouper des éléments existants pour les translater ensemble" msgstr "" #: uchaines.rsgroupertout msgctxt "uchaines.rsgroupertout" msgid "Grouper tout" msgstr "" #: uchaines.rshachures msgctxt "uchaines.rshachures" msgid "Hachures" msgstr "" #: uchaines.rshachuressirs msgctxt "uchaines.rshachuressirs" msgid "Hachures si réseau en réflexion" msgstr "" #: uchaines.rshaut msgid "Haut" msgstr "" #: uchaines.rshauteur msgctxt "uchaines.rshauteur" msgid "Hauteur" msgstr "" #: uchaines.rshauteur2 msgctxt "uchaines.rshauteur2" msgid "Hauteur=" msgstr "" #: uchaines.rshlas msgid "Hélas..." msgstr "" #: uchaines.rshlas2 msgid "Hélas" msgstr "" #: uchaines.rshm msgid "hm" msgstr "" #: uchaines.rshorizontale msgctxt "uchaines.rshorizontale" msgid "Horizontale" msgstr "" #: uchaines.rshorizontale2 msgctxt "uchaines.rshorizontale2" msgid "Horizontale:" msgstr "" #: uchaines.rshorizontalem msgctxt "uchaines.rshorizontalem" msgid "Horizontalement" msgstr "" #: uchaines.rsimportationr msgid "Importation réussie" msgstr "" #: uchaines.rsimpossible msgid "Impossible !" msgstr "" #: uchaines.rsimpossibledc msgid "Impossible d'écrire le fichier de configuration %s. La configuration ne sera pas sauvegardée." msgstr "" #: uchaines.rsimpossiblede msgid "Impossible de créer le fichier de configuration primaire d'OptGeo. Vérifiez que vous avez le droit d'écriture dans le répertoire d'installation d'OptGeo. Pour utiliser OptGeo sans fichier de configuration, cliquez sur OK. Sinon, cliquez sur Abandon, rendez le répertoire d'installation d'OptGeo accessible en écriture,puis relancez OptGeo" msgstr "" #: uchaines.rsimpossiblede2 msgid "Impossible de grouper moins de 2 éléments !" msgstr "" #: uchaines.rsimpossiblede3 msgid "Impossible de sauver le commentaire" msgstr "" #: uchaines.rsimprimer msgctxt "uchaines.rsimprimer" msgid "Imprimer" msgstr "" #: uchaines.rsimprimerlasi msgctxt "uchaines.rsimprimerlasi" msgid "Imprimer la simulation" msgstr "" #: uchaines.rsindicederfra msgctxt "uchaines.rsindicederfra" msgid "Indice de réfraction du milieu" msgstr "" #: uchaines.rsindicederfra2 msgctxt "uchaines.rsindicederfra2" msgid "Indice de réfraction du verre" msgstr "" #: uchaines.rsindicesdumil msgctxt "uchaines.rsindicesdumil" msgid "Indices du milieu ambiant" msgstr "" #: uchaines.rsindicesdumil2 msgctxt "uchaines.rsindicesdumil2" msgid "Indices du milieu ambiant et longueurs d'onde" msgstr "" #: uchaines.rsindicesdumil3 msgctxt "uchaines.rsindicesdumil3" msgid "Indices du milieu ambiant et longueurs d'onde" msgstr "" #: uchaines.rsindiquericil msgctxt "uchaines.rsindiquericil" msgid "Indiquer ici les propriétés communes à appliquer à tous les éléments:" msgstr "" #: uchaines.rsitalique msgid "Italique" msgstr "" #: uchaines.rsjamais msgid "Jamais" msgstr "" #: uchaines.rsjeanmariebia msgctxt "uchaines.rsjeanmariebia" msgid "jeanmarie.biansan@free.fr" msgstr "" #: uchaines.rsjeneparviens msgid "Je ne parviens pas à créer le répertoire exemples que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjeneparviens2 msgctxt "uchaines.rsjeneparviens2" msgid "Je ne parviens pas à créer le répertoire de simulations personnelles que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjeneparviens3 msgid "Je ne parviens pas à créer le répertoire de configuration personnelle que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjeneparviens4 msgctxt "uchaines.rsjeneparviens4" msgid "Je ne parviens pas à créer le répertoire de simulations personnelles que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "" #: uchaines.rsjoindrelespo msgctxt "uchaines.rsjoindrelespo" msgid "Joindre les points par:" msgstr "" #: uchaines.rsjoindreparun msgctxt "uchaines.rsjoindreparun" msgid "Joindre par un arc de cercle" msgstr "" #: uchaines.rsjoindreparun2 msgctxt "uchaines.rsjoindreparun2" msgid "Joindre par un segment" msgstr "" #: uchaines.rsjpg msgctxt "uchaines.rsjpg" msgid "JPG" msgstr "" #: uchaines.rskm msgid "km" msgstr "" #: uchaines.rsladistanceen msgid "La distance entre les points 1 et 2 doit être inférieure au double du rayon !" msgstr "" #: uchaines.rslaffichagede msgid "L'affichage des angles impose le tracé des normales" msgstr "" #: uchaines.rslafocaledoit msgid "La focale doit être non nulle !" msgstr "" #: uchaines.rslamesemirflc msgctxt "uchaines.rslamesemirflc" msgid "Lame semi réfléchissante" msgstr "" #: uchaines.rslamesemirflc2 msgid "Lame semi-réfléchissante" msgstr "" #: uchaines.rslamesemirflc3 msgid "Lame semi réfléchissante n° %s" msgstr "" #: uchaines.rslamesemirfle msgid "Lame semi-réflechissante" msgstr "" #: uchaines.rslangue msgctxt "uchaines.rslangue" msgid "Langue" msgstr "" #: uchaines.rslasimulation msgid "La simulation a été modifiée est les modifications n'ont pas été sauvegardées. Voulez vous vraiment quitter OptGéo ?" msgstr "" #: uchaines.rslasimulation2 msgid "La simulation a été modifiée et les modifications n'ont pas été sauvegardées. Voulez vous vraiment commencer une nouvelle simulation ?" msgstr "" #: uchaines.rslavirgule msgid "La virgule: ," msgstr "" #: uchaines.rsledger msgid "Ledger" msgstr "" #: uchaines.rslegal msgid "Legal" msgstr "" #: uchaines.rslegroupenqui msgctxt "uchaines.rslegroupenqui" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui10 msgctxt "uchaines.rslegroupenqui10" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui11 msgctxt "uchaines.rslegroupenqui11" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui12 msgctxt "uchaines.rslegroupenqui12" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui13 msgctxt "uchaines.rslegroupenqui13" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui14 msgctxt "uchaines.rslegroupenqui14" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui15 msgctxt "uchaines.rslegroupenqui15" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui16 msgctxt "uchaines.rslegroupenqui16" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui17 msgctxt "uchaines.rslegroupenqui17" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui18 msgctxt "uchaines.rslegroupenqui18" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui19 msgctxt "uchaines.rslegroupenqui19" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui2 msgctxt "uchaines.rslegroupenqui2" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui20 msgctxt "uchaines.rslegroupenqui20" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui21 msgctxt "uchaines.rslegroupenqui21" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui22 msgctxt "uchaines.rslegroupenqui22" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui23 msgctxt "uchaines.rslegroupenqui23" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui24 msgctxt "uchaines.rslegroupenqui24" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui3 msgctxt "uchaines.rslegroupenqui3" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui4 msgctxt "uchaines.rslegroupenqui4" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui5 msgctxt "uchaines.rslegroupenqui5" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui6 msgctxt "uchaines.rslegroupenqui6" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui7 msgctxt "uchaines.rslegroupenqui7" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui8 msgctxt "uchaines.rslegroupenqui8" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenqui9 msgctxt "uchaines.rslegroupenqui9" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "" #: uchaines.rslegroupenvie msgid "Le groupe n°%s vient d'être créé. Ses éléments pourront être translatés ensemble." msgstr "" #: uchaines.rslentille msgctxt "uchaines.rslentille" msgid "Lentille" msgstr "" #: uchaines.rslentilleminc msgctxt "uchaines.rslentilleminc" msgid "Lentille mince convergente" msgstr "" #: uchaines.rslentilleminc2 msgctxt "uchaines.rslentilleminc2" msgid "Lentille mince divergente" msgstr "" #: uchaines.rslentilleminc3 msgid "Lentille mince convergente idéale" msgstr "" #: uchaines.rslentilleminc4 msgid "Lentille mince divergente idéale" msgstr "" #: uchaines.rslentilleminc5 msgid "Lentille mince convergente n° %s" msgstr "" #: uchaines.rslentilleminc6 msgid "Lentille mince divergente n° %s" msgstr "" #: uchaines.rslentillepais msgid "Lentille épaisse" msgstr "" #: uchaines.rslentillepais2 msgid "Lentille épaisse n° %s" msgstr "" #: uchaines.rslepoint msgid "Le point: ." msgstr "" #: uchaines.rslerayondecou msgid "Le rayon de courbure doit être non nul !" msgstr "" #: uchaines.rslesangleslcr msgctxt "uchaines.rslesangleslcr" msgid "les angles à l'écran ne sont pas respectés." msgstr "" #: uchaines.rslesdeuxpoint msgid "Les deux points doivent être distincts !" msgstr "" #: uchaines.rsleslongueurs msgid "Les longueurs d'onde peuvent être modifiées dans le menu options, indices du milieuambiant et longueurs d'onde." msgstr "" #: uchaines.rslesparamtres msgid "Les paramètres de la simulation en cours de chargement doivent-ils écraser les actuels ?" msgstr "" #: uchaines.rslesvaleursde msgctxt "uchaines.rslesvaleursde" msgid "Les valeurs de longueur d'onde sont utilisées pour les réseaux de diffraction" msgstr "" #: uchaines.rsletter msgid "Letter" msgstr "" #: uchaines.rslicensegpl msgctxt "uchaines.rslicensegpl" msgid "License GPL" msgstr "" #: uchaines.rslistedessegm msgctxt "uchaines.rslistedessegm" msgid "Liste des segments concernés" msgstr "" #: uchaines.rslog1 msgctxt "uchaines.rslog1" msgid "log1" msgstr "" #: uchaines.rslog2 msgctxt "uchaines.rslog2" msgid "log2" msgstr "" #: uchaines.rslog3 msgctxt "uchaines.rslog3" msgid "log3" msgstr "" #: uchaines.rslog4 msgctxt "uchaines.rslog4" msgid "log4" msgstr "" #: uchaines.rslog5 msgctxt "uchaines.rslog5" msgid "log5" msgstr "" #: uchaines.rslog6 msgctxt "uchaines.rslog6" msgid "log6" msgstr "" #: uchaines.rslog7 msgctxt "uchaines.rslog7" msgid "log7" msgstr "" #: uchaines.rslogiciellibr msgid "Logiciel libre et gratuit de simulation d'optique géométrique plane" msgstr "" #: uchaines.rslongueurdond msgid "Longueur d'onde pour le vert" msgstr "" #: uchaines.rslongueurdond2 msgid "Longueur d'onde pour le rouge" msgstr "" #: uchaines.rslongueurdond3 msgid "Longueur d'onde pour le bleu" msgstr "" #: uchaines.rslongueurtrac msgctxt "uchaines.rslongueurtrac" msgid "Longueur trace (en % de la diagonale de l'espace de travail)" msgstr "" #: uchaines.rslumireblanch msgid "Lumière blanche" msgstr "" #: uchaines.rsm msgid "m" msgstr "" #: uchaines.rsm2 msgid "µm" msgstr "" #: uchaines.rsmaiseuh msgid "Mais euh !!" msgstr "" #: uchaines.rsmanuellement msgctxt "uchaines.rsmanuellement" msgid "Manuellement" msgstr "" #: uchaines.rsmatriau msgctxt "uchaines.rsmatriau" msgid "Matériau:" msgstr "" #: uchaines.rsmesuredangle msgctxt "uchaines.rsmesuredangle" msgid "Mesure d'angle" msgstr "" #: uchaines.rsmesuredangle2 msgctxt "uchaines.rsmesuredangle2" msgid "Mesure d'angle n° %s" msgstr "" #: uchaines.rsmesuredangle3 msgctxt "uchaines.rsmesuredangle3" msgid "Mesure d'angle n° %s" msgstr "" #: uchaines.rsmesuredangle4 msgctxt "uchaines.rsmesuredangle4" msgid "Mesure d'angle" msgstr "" #: uchaines.rsmesuredangle5 msgctxt "uchaines.rsmesuredangle5" msgid "Mesure d'angle n° %s" msgstr "" #: uchaines.rsmesurededist msgctxt "uchaines.rsmesurededist" msgid "Mesure de distance" msgstr "" #: uchaines.rsmesurededist2 msgid "Mesure de distance n° %s" msgstr "" #: uchaines.rsmesurerladis msgctxt "uchaines.rsmesurerladis" msgid "Mesurer la distance entre deux points" msgstr "" #: uchaines.rsmesurerunang msgctxt "uchaines.rsmesurerunang" msgid "Mesurer un angle" msgstr "" #: uchaines.rsmiroircnique msgctxt "uchaines.rsmiroircnique" msgid "Miroir cônique" msgstr "" #: uchaines.rsmiroircnique2 msgid "Miroir cônique n° %s" msgstr "" #: uchaines.rsmiroirconcav msgid "Miroir concave idéal n° %s" msgstr "" #: uchaines.rsmiroirconcav2 msgid "Miroir concave n° %s" msgstr "" #: uchaines.rsmiroirconcav3 msgid "Miroir concave paraxial" msgstr "" #: uchaines.rsmiroirconiqu msgid "Miroir conique" msgstr "" #: uchaines.rsmiroirconvex msgid "Miroir convexe idéal n° %s" msgstr "" #: uchaines.rsmiroirconvex2 msgid "Miroir convexe n° %s" msgstr "" #: uchaines.rsmiroirconvex3 msgid "Miroir convexe paraxial" msgstr "" #: uchaines.rsmiroirplan msgctxt "uchaines.rsmiroirplan" msgid "Miroir plan" msgstr "" #: uchaines.rsmiroirplann msgid "Miroir plan n° %s" msgstr "" #: uchaines.rsmiroirs msgctxt "uchaines.rsmiroirs" msgid "Miroirs:" msgstr "" #: uchaines.rsmiroirsphriq msgctxt "uchaines.rsmiroirsphriq" msgid "Miroir sphérique concave" msgstr "" #: uchaines.rsmiroirsphriq2 msgctxt "uchaines.rsmiroirsphriq2" msgid "Miroir sphérique convexe" msgstr "" #: uchaines.rsmiroirsphriq3 msgid "Miroir sphérique concave paraxial" msgstr "" #: uchaines.rsmiroirsphriq4 msgid "Miroir sphérique convexe paraxial" msgstr "" #: uchaines.rsmiroirsphriq5 msgid "Miroir sphérique concave réel" msgstr "" #: uchaines.rsmiroirsphriq6 msgid "Miroir sphérique convexe réel" msgstr "" #: uchaines.rsmm msgid "mm" msgstr "" #: uchaines.rsmodeajoutdun msgid "Mode: ajout d'un rayon lumineux. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun10 msgid "Mode: ajout d'un oeil. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun11 msgid "Mode: ajout d'une lame semi-réfléchissante. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun12 msgctxt "uchaines.rsmodeajoutdun12" msgid "Mode: ajout d'un miroir sphérique concave. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun13 msgctxt "uchaines.rsmodeajoutdun13" msgid "Mode: ajout d'un miroir sphérique convexe. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun14 msgid "Mode: ajout d'une lentille mince convergente. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun15 msgid "Mode: ajout d'une lentille épaisse. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun16 msgid "Mode: ajout d'une sphère réfractante. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun17 msgid "Mode: ajout d'une lentille mince divergente. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun18 msgctxt "uchaines.rsmodeajoutdun18" msgid "Mode: ajout d'un miroir sphérique concave. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun19 msgctxt "uchaines.rsmodeajoutdun19" msgid "Mode: ajout d'un miroir sphérique convexe. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun2 msgid "Mode: ajout d'un miroir plan. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun20 msgid "Mode: ajout d'une source ponctuelle. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun21 msgid "Mode: ajout d'une onde plane" msgstr "" #: uchaines.rsmodeajoutdun22 msgid "Mode: ajout d'un texte. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun23 msgid "Mode: ajout d'un diaphragme. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun24 msgid "Mode: ajout d'un groupe. Esc pour annuler. %sFin%s pour achever le groupement." msgstr "" #: uchaines.rsmodeajoutdun25 msgid "Mode: ajout d'un réseau diffractant. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun3 msgid "Mode: ajout d'un trait ou d'une fléche. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun4 msgid "Mode: ajout d'un miroir conique concave. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun5 msgid "Mode: ajout d'un miroir conique convexe. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun6 msgid "Mode: ajout d'un polyhèdre réfractant. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun7 msgid "Mode: ajout d'un prisme isocèle. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun8 msgid "Mode: ajout d'une polysphère réfractante. Esc pour annuler." msgstr "" #: uchaines.rsmodeajoutdun9 msgid "Mode: ajout d'un écran. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme msgid "Mode: changement de taille du trou. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme2 msgid "Mode: changement d'orientation du prisme. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme3 msgid "Mode: changement de la hauteur du prisme. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme4 msgid "Mode: changement de l'angle au sommet du prisme. Esc pour annuler." msgstr "" #: uchaines.rsmodechangeme5 msgid "Mode: changement focale d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodechgtrayo msgctxt "uchaines.rsmodechgtrayo" msgid "Mode: chgt rayon courbure d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodechgtrayo2 msgctxt "uchaines.rsmodechgtrayo2" msgid "Mode: chgt rayon courbure d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme msgctxt "uchaines.rsmodedplaceme" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme2 msgctxt "uchaines.rsmodedplaceme2" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme3 msgctxt "uchaines.rsmodedplaceme3" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodedplaceme4 msgctxt "uchaines.rsmodedplaceme4" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodeduplicat msgid "Mode: duplication d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodemesureda msgid "Mode: mesure d'angle. Esc pour annuler." msgstr "" #: uchaines.rsmodemesurede msgid "Mode: mesure de distance. Esc pour annuler." msgstr "" #: uchaines.rsmodeproprits msgid "Mode: propriétés d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmoderotation msgid "Mode: rotation d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodesuppress msgid "Mode: suppression d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodetranslat msgid "Mode: translation d'un élément existant. Esc pour annuler." msgstr "" #: uchaines.rsmodification msgctxt "uchaines.rsmodification" msgid "Modification d'une mesure de distance" msgstr "" #: uchaines.rsmodification2 msgctxt "uchaines.rsmodification2" msgid "Modification d'une mesure d'angle" msgstr "" #: uchaines.rsmodifier msgctxt "uchaines.rsmodifier" msgid "Modifier" msgstr "" #: uchaines.rsmodifierlesd msgctxt "uchaines.rsmodifierlesd" msgid "Modifier les dimensions de l'espace de travail" msgstr "" #: uchaines.rsmodifierlesp msgctxt "uchaines.rsmodifierlesp" msgid "Modifier l'espace de travail" msgstr "" #: uchaines.rsn msgid "n" msgstr "" #: uchaines.rsnantn msgid "Néant n° %s" msgstr "" #: uchaines.rsnepeuttreetn msgctxt "uchaines.rsnepeuttreetn" msgid "ne peut être et ne sera pas fait." msgstr "" #: uchaines.rsnm msgctxt "uchaines.rsnm" msgid "nm" msgstr "" #: uchaines.rsnom msgid "Nom: %s" msgstr "" #: uchaines.rsnombre msgctxt "uchaines.rsnombre" msgid "Nombre:" msgstr "" #: uchaines.rsnombredecopi msgctxt "uchaines.rsnombredecopi" msgid "Nombre de copies" msgstr "" #: uchaines.rsnombrededcim msgctxt "uchaines.rsnombrededcim" msgid "Nombre de décimales:" msgstr "" #: uchaines.rsnombredepoin msgctxt "uchaines.rsnombredepoin" msgid "Nombre de points calculés pour tracer une surface d'onde:" msgstr "" #: uchaines.rsnombrederayo msgid "Nombre de rayons convergents vers cet objet virtuel" msgstr "" #: uchaines.rsnombrederayo2 msgid "Nombre de rayons émis par cette source ponctuelle" msgstr "" #: uchaines.rsnombrederayo3 msgctxt "uchaines.rsnombrederayo3" msgid "Nombre de rayons" msgstr "" #: uchaines.rsnombrederayo4 msgctxt "uchaines.rsnombrederayo4" msgid "Nombre de rayons émis par cette source ponctuelle:" msgstr "" #: uchaines.rsnombredesomm msgctxt "uchaines.rsnombredesomm" msgid "Nombre de sommets" msgstr "" #: uchaines.rsnombredetrai msgid "Nombre de traits par mm" msgstr "" #: uchaines.rsnombremaxdes msgctxt "uchaines.rsnombremaxdes" msgid "Nombre max. de segments par rayon" msgstr "" #: uchaines.rsnombremaxdes2 msgctxt "uchaines.rsnombremaxdes2" msgid "Nombre max. de segments" msgstr "" #: uchaines.rsnombremaxdes3 msgctxt "uchaines.rsnombremaxdes3" msgid "Nombre max. de segment par rayon" msgstr "" #: uchaines.rsnombremaxima msgid "Nombre maximal de groupes deja atteint !" msgstr "" #: uchaines.rsnombremaxima10 msgid "Nombre maximal de polyhèdres deja atteint !" msgstr "" #: uchaines.rsnombremaxima11 msgctxt "uchaines.rsnombremaxima11" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima12 msgctxt "uchaines.rsnombremaxima12" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima13 msgctxt "uchaines.rsnombremaxima13" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima14 msgctxt "uchaines.rsnombremaxima14" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "" #: uchaines.rsnombremaxima15 msgctxt "uchaines.rsnombremaxima15" msgid "Nombre maximal de lentilles mines convergentes paraxiales deja atteint !" msgstr "" #: uchaines.rsnombremaxima16 msgctxt "uchaines.rsnombremaxima16" msgid "Nombre maximal de lentilles mines convergentes paraxiales deja atteint !" msgstr "" #: uchaines.rsnombremaxima17 msgid "Nombre maximal de sources ponctuelles deja atteint !" msgstr "" #: uchaines.rsnombremaxima18 msgid "Nombre maximal d'ondes planes deja atteint !" msgstr "" #: uchaines.rsnombremaxima19 msgid "Nombre maximal de miroirs deja atteint !" msgstr "" #: uchaines.rsnombremaxima2 msgid "Nombre maximal de prismes deja atteint !" msgstr "" #: uchaines.rsnombremaxima20 msgid "Nombre maximal de lentilles deja atteint !" msgstr "" #: uchaines.rsnombremaxima21 msgid "Nombre maximal de lames deja atteint !" msgstr "" #: uchaines.rsnombremaxima22 msgid "Nombre maximal de miroirs deja atteint !" msgstr "" #: uchaines.rsnombremaxima23 msgid "Nombre maximal de miroirs coniques deja atteint !" msgstr "" #: uchaines.rsnombremaxima24 msgid "Nombre maximal d'écrans deja atteint !" msgstr "" #: uchaines.rsnombremaxima25 msgid "Nombre maximal de diaphragmes deja atteint !" msgstr "" #: uchaines.rsnombremaxima26 msgid "Nombre maximal de polysphères deja atteint !" msgstr "" #: uchaines.rsnombremaxima27 msgid "Nombre maximal de polyhedres deja atteint !" msgstr "" #: uchaines.rsnombremaxima28 msgid "Nombre maximal de source ponctuelle deja atteint !" msgstr "" #: uchaines.rsnombremaxima29 msgid "Nombre maximal d'onde plane deja atteint !" msgstr "" #: uchaines.rsnombremaxima3 msgid "Nombre maximal de miroirs plans deja atteint !" msgstr "" #: uchaines.rsnombremaxima30 msgid "Nombre maximal de textes deja atteint !" msgstr "" #: uchaines.rsnombremaxima31 msgid "Nombre maximal de texte deja atteint !" msgstr "" #: uchaines.rsnombremaxima32 msgid "Nombre maximal de lentilles épaisses deja atteint !" msgstr "" #: uchaines.rsnombremaxima33 msgctxt "uchaines.rsnombremaxima33" msgid "Nombre maximal d'yeux deja atteint !" msgstr "" #: uchaines.rsnombremaxima34 msgctxt "uchaines.rsnombremaxima34" msgid "Nombre maximal d'yeux deja atteint !" msgstr "" #: uchaines.rsnombremaxima35 msgctxt "uchaines.rsnombremaxima35" msgid "Nombre maximal:" msgstr "" #: uchaines.rsnombremaxima36 msgid "Nombre maximal de réseau déja atteint !" msgstr "" #: uchaines.rsnombremaxima37 msgid "Nombre maximal de réseaux déja atteint !" msgstr "" #: uchaines.rsnombremaxima4 msgid "Nombre maximal de traits déjà atteint !" msgstr "" #: uchaines.rsnombremaxima5 msgctxt "uchaines.rsnombremaxima5" msgid "Nombre maximal d'écran deja atteint !" msgstr "" #: uchaines.rsnombremaxima6 msgctxt "uchaines.rsnombremaxima6" msgid "Nombre maximal d'écran deja atteint !" msgstr "" #: uchaines.rsnombremaxima7 msgctxt "uchaines.rsnombremaxima7" msgid "Nombre maximal d'écran deja atteint !" msgstr "" #: uchaines.rsnombremaxima8 msgid "Nombre maximal de rayons deja atteint !" msgstr "" #: uchaines.rsnombremaxima9 msgid "Nombre maximal de spheres deja atteint !" msgstr "" #: uchaines.rsnormale msgid "Normale" msgstr "" #: uchaines.rsnormales msgctxt "uchaines.rsnormales" msgid "Normales" msgstr "" #: uchaines.rsnouvellesimu msgctxt "uchaines.rsnouvellesimu" msgid "Nouvelle simulation" msgstr "" #: uchaines.rsobjetdupliqu msgid "Objet à dupliquer:" msgstr "" #: uchaines.rsobjetponctue msgctxt "uchaines.rsobjetponctue" msgid "Objet ponctuel réel ou virtuel" msgstr "" #: uchaines.rsobtu msgctxt "uchaines.rsobtu" msgid "Obtu" msgstr "" #: uchaines.rsoeil msgid "Oeil" msgstr "" #: uchaines.rsoeiln msgid "Oeil n° %s" msgstr "" #: uchaines.rsoeilstylis msgctxt "uchaines.rsoeilstylis" msgid "Oeil stylisé" msgstr "" #: uchaines.rsok msgctxt "uchaines.rsok" msgid "&OK" msgstr "" #: uchaines.rsok2 msgctxt "uchaines.rsok2" msgid "OK" msgstr "" #: uchaines.rsoketenregist msgctxt "uchaines.rsoketenregist" msgid "&Ok et enregistrer sur disque" msgstr "" #: uchaines.rsondeplane msgctxt "uchaines.rsondeplane" msgid "Onde plane" msgstr "" #: uchaines.rsondeplanen msgid "Onde plane n° %s" msgstr "" #: uchaines.rsoptgeo msgctxt "uchaines.rsoptgeo" msgid "OptGeo" msgstr "" #: uchaines.rsoptgeo2 msgid "Optgeo" msgstr "" #: uchaines.rsoptgeoestdif msgid "OptGeo est diffusé sous license GPL; veuillez la lire:" msgstr "" #: uchaines.rsoptgeoestexc msgid "OptGeo est exécuté pour la première fois, ou bien son fichier de configuration est corrompu: vous allez maintenant le créer !" msgstr "" #: uchaines.rsoptgeologici msgctxt "uchaines.rsoptgeologici" msgid "OptGeo, logiciel de simulation d'optique géométrique" msgstr "" #: uchaines.rsoptions msgctxt "uchaines.rsoptions" msgid "Options" msgstr "" #: uchaines.rsoptionsdelag msgctxt "uchaines.rsoptionsdelag" msgid "Options de la grille" msgstr "" #: uchaines.rsoptionsdesno msgctxt "uchaines.rsoptionsdesno" msgid "Options des normales" msgstr "" #: uchaines.rsoptionspourl msgctxt "uchaines.rsoptionspourl" msgid "Options pour le tracé des normales aux dioptres et miroirs" msgstr "" #: uchaines.rsordonnemax msgctxt "uchaines.rsordonnemax" msgid "Ordonnée max.:" msgstr "" #: uchaines.rsordonnemin msgctxt "uchaines.rsordonnemin" msgid "Ordonnée min.:" msgstr "" #: uchaines.rsordonneminim msgctxt "uchaines.rsordonneminim" msgid "Ordonnée minimale" msgstr "" #: uchaines.rsordonnesmaxi msgctxt "uchaines.rsordonnesmaxi" msgid "Ordonnées maximale" msgstr "" #: uchaines.rsordremaximum msgctxt "uchaines.rsordremaximum" msgid "Ordre maximum" msgstr "" #: uchaines.rsordreminimum msgctxt "uchaines.rsordreminimum" msgid "Ordre minimum" msgstr "" #: uchaines.rsordresprendr msgctxt "uchaines.rsordresprendr" msgid "Ordres à prendre en compte" msgstr "" #: uchaines.rsorientation msgctxt "uchaines.rsorientation" msgid "Orientation" msgstr "" #: uchaines.rsoriginepoint msgctxt "uchaines.rsoriginepoint" msgid "Origine (point 1)" msgstr "" #: uchaines.rsouvrirsimula msgctxt "uchaines.rsouvrirsimula" msgid "Ouvrir simulation" msgstr "" #: uchaines.rsouvrirunesim msgid "Ouvrir une simulation existante" msgstr "" #: uchaines.rsp msgctxt "uchaines.rsp" msgid "P=" msgstr "" #: uchaines.rsparamtre msgctxt "uchaines.rsparamtre" msgid "Paramétre" msgstr "" #: uchaines.rspasdelagrill msgctxt "uchaines.rspasdelagrill" msgid "Pas de la grille" msgstr "" #: uchaines.rspasdesimulat msgid "Pas de simulation en cours..." msgstr "" #: uchaines.rspashorizonta msgctxt "uchaines.rspashorizonta" msgid "Pas horizontal=" msgstr "" #: uchaines.rspasvertical msgctxt "uchaines.rspasvertical" msgid "Pas vertical=" msgstr "" #: uchaines.rspaysage msgid "Paysage" msgstr "" #: uchaines.rsplein msgid "Plein" msgstr "" #: uchaines.rspm msgid "pm" msgstr "" #: uchaines.rspng msgctxt "uchaines.rspng" msgid "PNG" msgstr "" #: uchaines.rspoint1 msgctxt "uchaines.rspoint1" msgid "Point 1" msgstr "" #: uchaines.rspoint2 msgctxt "uchaines.rspoint2" msgid "Point 2" msgstr "" #: uchaines.rspointcourant msgctxt "uchaines.rspointcourant" msgid "Point courant" msgstr "" #: uchaines.rspointills msgid "Pointillés" msgstr "" #: uchaines.rspointsaberra msgid "Points aberrants !" msgstr "" #: uchaines.rspointssaisis msgid "Points saisis aberrants !" msgstr "" #: uchaines.rspointstroppr msgid "Points trop proches !" msgstr "" #: uchaines.rspointstroppr2 msgctxt "uchaines.rspointstroppr2" msgid "Points trop proches ou hors de l'espace de travail !" msgstr "" #: uchaines.rspointstroppr3 msgctxt "uchaines.rspointstroppr3" msgid "Points trop proches ou hors de l'espace de travail !" msgstr "" #: uchaines.rspolice msgctxt "uchaines.rspolice" msgid "Police" msgstr "" #: uchaines.rspolicepardfa msgctxt "uchaines.rspolicepardfa" msgid "Police par défaut" msgstr "" #: uchaines.rspolycercle msgid "Polycercle" msgstr "" #: uchaines.rspolycerclerf msgid "Polycercle réfractant" msgstr "" #: uchaines.rspolycerclerf2 msgid "Polycercle réfractant n° %s" msgstr "" #: uchaines.rspolygone msgid "Polygone" msgstr "" #: uchaines.rspolyhdrerfra msgctxt "uchaines.rspolyhdrerfra" msgid "Polyhèdre réfractant" msgstr "" #: uchaines.rspolyhdrerfra2 msgid "Polyhèdre réfractant n° %s" msgstr "" #: uchaines.rspolysphrerfr msgctxt "uchaines.rspolysphrerfr" msgid "Polysphère réfractante" msgstr "" #: uchaines.rsportrait msgid "Portrait" msgstr "" #: uchaines.rsposition msgctxt "uchaines.rsposition" msgid "Position" msgstr "" #: uchaines.rspositiondele msgctxt "uchaines.rspositiondele" msgid "Position de l'empennage sur le segment:" msgstr "" #: uchaines.rspositionnezl msgid "Positionnez l'extrémité du segment et cliquez..." msgstr "" #: uchaines.rspositionnezl10 msgid "Positionnez le bord intérieur (point 1) et cliquez..." msgstr "" #: uchaines.rspositionnezl11 msgid "Positionnez le point 2 (autre bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl12 msgid "Positionnez l'autre extrémité du trait et cliquez..." msgstr "" #: uchaines.rspositionnezl13 msgid "Positionnez le foyer de la conique et cliquez..." msgstr "" #: uchaines.rspositionnezl14 msgid "Positionnez le point 2 (autre bord de l'écran) et cliquez..." msgstr "" #: uchaines.rspositionnezl15 msgid "Positionnez le point 2 (centre pupille) et cliquez..." msgstr "" #: uchaines.rspositionnezl16 msgid "Positionnez le point 2 (autre bord de la lame) et cliquez..." msgstr "" #: uchaines.rspositionnezl17 msgid "Positionnez le point A (sommet du prisme) et cliquez..." msgstr "" #: uchaines.rspositionnezl18 msgid "Positionnez le point 2 (autre bord de la lentille) et cliquez..." msgstr "" #: uchaines.rspositionnezl19 msgid "Positionnez le centre de courbure de la 1ère face puis cliquez..." msgstr "" #: uchaines.rspositionnezl2 msgid "Positionnez l'extrémité du 1er segment et cliquez..." msgstr "" #: uchaines.rspositionnezl20 msgid "Positionnez le centre de courbure de la 2ème face puis cliquez..." msgstr "" #: uchaines.rspositionnezl21 msgid "Positionnez le point 2 (rayon 2 limitant le faisceau) puis cliquez..." msgstr "" #: uchaines.rspositionnezl22 msgid "Positionnez le point 2 (extrémité du plan d'onde) puis cliquez..." msgstr "" #: uchaines.rspositionnezl23 msgid "Positionnez le bord extérieur (point 2) et cliquez.." msgstr "" #: uchaines.rspositionnezl24 msgid "Positionnez le foyer et cliquez." msgstr "" #: uchaines.rspositionnezl25 msgid "Positionnez le centre de courbure et cliquez." msgstr "" #: uchaines.rspositionnezl26 msgid "Positionnez le sommet de la conique et cliquez..." msgstr "" #: uchaines.rspositionnezl27 msgid "Positionnez le sommet de l'arc de cercle entre les points %s et %s..." msgstr "" #: uchaines.rspositionnezl28 msgid "Positionnez le sommet de l'arc de cercle entre les points %s et 1..." msgstr "" #: uchaines.rspositionnezl29 msgctxt "uchaines.rspositionnezl29" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl3 msgid "Positionnez l'extrêmité du 2nd segment..." msgstr "" #: uchaines.rspositionnezl30 msgid "Positionnez le point 1 (extrémité 1 du trait) et cliquez..." msgstr "" #: uchaines.rspositionnezl31 msgctxt "uchaines.rspositionnezl31" msgid "Positionnez le point 1 (premier bord de l'écran) et cliquez..." msgstr "" #: uchaines.rspositionnezl32 msgid "Positionnez le centre du diaphragme et cliquez..." msgstr "" #: uchaines.rspositionnezl33 msgctxt "uchaines.rspositionnezl33" msgid "Positionnez le point 1 (premier bord de l'écran) et cliquez..." msgstr "" #: uchaines.rspositionnezl34 msgid "Positionnez le point 1 (origine du rayon) et cliquez..." msgstr "" #: uchaines.rspositionnezl35 msgid "Positionnez le centre de la sphère et cliquez..." msgstr "" #: uchaines.rspositionnezl36 msgid "Positionnez le centre d'inertie G du prisme et cliquez..." msgstr "" #: uchaines.rspositionnezl37 msgid "Positionnez le point 1 du polyhèdre et cliquez..." msgstr "" #: uchaines.rspositionnezl38 msgctxt "uchaines.rspositionnezl38" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl39 msgctxt "uchaines.rspositionnezl39" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl4 msgid "Positionnez le point suivant et cliquez..." msgstr "" #: uchaines.rspositionnezl40 msgctxt "uchaines.rspositionnezl40" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl41 msgctxt "uchaines.rspositionnezl41" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "" #: uchaines.rspositionnezl42 msgctxt "uchaines.rspositionnezl42" msgid "Positionnez le point 1 (premier bord de la lentille) et cliquez..." msgstr "" #: uchaines.rspositionnezl43 msgctxt "uchaines.rspositionnezl43" msgid "Positionnez le point 1 (premier bord de la lentille) et cliquez..." msgstr "" #: uchaines.rspositionnezl44 msgid "Positionnez le point objet virtuel et cliquez..." msgstr "" #: uchaines.rspositionnezl45 msgid "Positionnez le point objet réel et cliquez..." msgstr "" #: uchaines.rspositionnezl46 msgid "Positionnez le point 1 (origine d'un rayon et du plan d'onde) et cliquez..." msgstr "" #: uchaines.rspositionnezl47 msgctxt "uchaines.rspositionnezl47" msgid "Positionnez le premier bord du miroir (point 1) et cliquez..." msgstr "" #: uchaines.rspositionnezl48 msgctxt "uchaines.rspositionnezl48" msgid "Positionnez le premier bord du miroir (point 1) et cliquez..." msgstr "" #: uchaines.rspositionnezl49 msgid "Positionnez le bord supérieur gauche du texte et cliquez..." msgstr "" #: uchaines.rspositionnezl5 msgid "Positionnez le sommet d'arc de cercle suivant..." msgstr "" #: uchaines.rspositionnezl50 msgid "Positionnez le sommet de la 1ère face..." msgstr "" #: uchaines.rspositionnezl51 msgid "Positionnez le sommet 1 de la polysphère et cliquez..." msgstr "" #: uchaines.rspositionnezl52 msgid "Positionnez le point 1 (rétine) et cliquez..." msgstr "" #: uchaines.rspositionnezl53 msgid "Positionnez le point 1 (premier bord du réseau) et cliquez..." msgstr "" #: uchaines.rspositionnezl54 msgid "Positionnez le point 2 (autre bord du réseau) et cliquez..." msgstr "" #: uchaines.rspositionnezl6 msgid "Positionnez le point 2 (direction du rayon) et cliquez..." msgstr "" #: uchaines.rspositionnezl7 msgid "Positionnez le point D (direction du rayon) et cliquez..." msgstr "" #: uchaines.rspositionnezl8 msgid "Positionnez le point 1 (rayon1 limitant le faisceau) et cliquez..." msgstr "" #: uchaines.rspositionnezl9 msgid "Positionnez le sommet de la 2ème face..." msgstr "" #: uchaines.rspositionnezu msgid "Positionnez un point de la surface et cliquez..." msgstr "" #: uchaines.rspositionnezu2 msgid "Positionnez un foyer et cliquez." msgstr "" #: uchaines.rspouravoirunr msgctxt "uchaines.rspouravoirunr" msgid "pour avoir un repère approximativement orthonormé" msgstr "" #: uchaines.rspourchaquera msgctxt "uchaines.rspourchaquera" msgid "Pour chaque rayon, rayons enfants:" msgstr "" #: uchaines.rspourcrerunel msgctxt "uchaines.rspourcrerunel" msgid "Pour créer une lentille autre que plan-convexe, utilisez l'objet lentille épaisse..." msgstr "" #: uchaines.rspourcrerunel2 msgctxt "uchaines.rspourcrerunel2" msgid "Pour créer une lentille autre que plan-convexe, utilisez l'objet lentille épaisse..." msgstr "" #: uchaines.rspourdplacerc msgctxt "uchaines.rspourdplacerc" msgid "Pour déplacer cette palette, glissez-déposez à partir de cette zone..." msgstr "" #: uchaines.rspourfinirpos msgid "Pour finir, positionnez l'autre extrémité du miroir et cliquez." msgstr "" #: uchaines.rspourlebleu msgctxt "uchaines.rspourlebleu" msgid "Pour le bleu:" msgstr "" #: uchaines.rspourlerouge msgctxt "uchaines.rspourlerouge" msgid "Pour le rouge:" msgstr "" #: uchaines.rspourletracde msgctxt "uchaines.rspourletracde" msgid "Pour le tracé des surfaces d'onde:" msgstr "" #: uchaines.rspourlevert msgctxt "uchaines.rspourlevert" msgid "Pour le vert:" msgstr "" #: uchaines.rspourprendree msgid "Pour prendre en compte le changement de langue de l'interface, Optgeo doit maintenant être arrété. Puis relancez le." msgstr "" #: uchaines.rspourtouslesl msgctxt "uchaines.rspourtouslesl" msgid "Pour tous les éléments" msgstr "" #: uchaines.rspourtouterem msgctxt "uchaines.rspourtouterem" msgid "Pour toute remarque, cliquer sur:" msgstr "" #: uchaines.rsprfrences msgctxt "uchaines.rsprfrences" msgid "Préférences" msgstr "" #: uchaines.rsprfrencespro msgctxt "uchaines.rsprfrencespro" msgid "Préférences: propriétés par défaut à la création" msgstr "" #: uchaines.rsprisme msgctxt "uchaines.rsprisme" msgid "Prisme" msgstr "" #: uchaines.rsprismen msgid "Prisme n° %s" msgstr "" #: uchaines.rsproprits msgctxt "uchaines.rsproprits" msgid "Propriétés" msgstr "" #: uchaines.rspropritsdece msgctxt "uchaines.rspropritsdece" msgid "Propriétés de cette sphère" msgstr "" #: uchaines.rspropritsdece10 msgid "Propriétés de ce diaphragme:" msgstr "" #: uchaines.rspropritsdece11 msgid "Propriétés de cette lame semi-réfléchissante:" msgstr "" #: uchaines.rspropritsdece12 msgid "Propriétés de ce rayon:" msgstr "" #: uchaines.rspropritsdece13 msgid "Propriétés de cette source ponctuelle:" msgstr "" #: uchaines.rspropritsdece14 msgid "Propriétés de cette onde plane:" msgstr "" #: uchaines.rspropritsdece15 msgid "Propriétés de ce miroir elliptique:" msgstr "" #: uchaines.rspropritsdece16 msgid "Propriétés de ce miroir hyperbolique:" msgstr "" #: uchaines.rspropritsdece17 msgid "Propriétés de ce miroir parabolique:" msgstr "" #: uchaines.rspropritsdece18 msgid "Propriétés de ce miroir concave:" msgstr "" #: uchaines.rspropritsdece19 msgid "Propriétés de ce miroir convexe:" msgstr "" #: uchaines.rspropritsdece2 msgctxt "uchaines.rspropritsdece2" msgid "Propriétés de ce polycercle" msgstr "" #: uchaines.rspropritsdece20 msgid "Propriétés de cette lentille convergente:" msgstr "" #: uchaines.rspropritsdece21 msgid "Propriétés de cette lentille épaisse:" msgstr "" #: uchaines.rspropritsdece22 msgid "Propriétés de cette lentille divergente:" msgstr "" #: uchaines.rspropritsdece23 msgid "Propriétés de cette mesure de distance:" msgstr "" #: uchaines.rspropritsdece24 msgid "Propriétés de ce réseau" msgstr "" #: uchaines.rspropritsdece3 msgctxt "uchaines.rspropritsdece3" msgid "Propriétés de ce polygône" msgstr "" #: uchaines.rspropritsdece4 msgid "Propriétés de ce trait..." msgstr "" #: uchaines.rspropritsdece5 msgid "Propriétés de cette mesure d'angle:" msgstr "" #: uchaines.rspropritsdece6 msgid "Propriétés de ce texte:" msgstr "" #: uchaines.rspropritsdece7 msgid "Propriétés de ce miroir plan:" msgstr "" #: uchaines.rspropritsdece8 msgid "Propriétés de cet écran:" msgstr "" #: uchaines.rspropritsdece9 msgid "Propriétés de cet oeil stylisé:" msgstr "" #: uchaines.rspropritsdela msgctxt "uchaines.rspropritsdela" msgid "Propriétés de la grille" msgstr "" #: uchaines.rspropritsdele msgctxt "uchaines.rspropritsdele" msgid "Propriétés de l'empennage des rayons" msgstr "" #: uchaines.rspropritsdelo msgctxt "uchaines.rspropritsdelo" msgid "Propriétés de l'objet:" msgstr "" #: uchaines.rspropritsdelo2 msgctxt "uchaines.rspropritsdelo2" msgid "Propriétés de l'objet:" msgstr "" #: uchaines.rspropritsdesp msgctxt "uchaines.rspropritsdesp" msgid "Propriétés des points" msgstr "" #: uchaines.rspropritsdufi msgid "Propriétés du fichier Postscript" msgstr "" #: uchaines.rspropritsdunl msgctxt "uchaines.rspropritsdunl" msgid "Propriétés d'un élément existant" msgstr "" #: uchaines.rspropritsdunl2 msgctxt "uchaines.rspropritsdunl2" msgid "Propriétés d'un élément" msgstr "" #: uchaines.rsquevoulezvou msgctxt "uchaines.rsquevoulezvou" msgid "Que voulez vous faire ?" msgstr "" #: uchaines.rsquitter msgctxt "uchaines.rsquitter" msgid "Quitter" msgstr "" #: uchaines.rsr msgctxt "uchaines.rsr" msgid "R=" msgstr "" #: uchaines.rsr1 msgctxt "uchaines.rsr1" msgid "R1=" msgstr "" #: uchaines.rsr2 msgctxt "uchaines.rsr2" msgid "R2=" msgstr "" #: uchaines.rsrad msgctxt "uchaines.rsrad" msgid "rad" msgstr "" #: uchaines.rsrapport msgctxt "uchaines.rsrapport" msgid "Rapport=" msgstr "" #: uchaines.rsrapporthaute msgctxt "uchaines.rsrapporthaute" msgid "Rapport hauteur/largeur" msgstr "" #: uchaines.rsrapportidalp msgctxt "uchaines.rsrapportidalp" msgid "Rapport idéal (permettant d'occuper le maximum" msgstr "" #: uchaines.rsrayon msgid "Rayon" msgstr "" #: uchaines.rsrayondecourb msgctxt "uchaines.rsrayondecourb" msgid "Rayon de courbure" msgstr "" #: uchaines.rsrayondelasph msgid "Rayon de la sphère trop petit ou trop grand!" msgstr "" #: uchaines.rsrayonextrieu msgctxt "uchaines.rsrayonextrieu" msgid "Rayon extérieur" msgstr "" #: uchaines.rsrayonintrieu msgid "Rayon intérieur du diaphragme trop petit !" msgstr "" #: uchaines.rsrayonintrieu2 msgctxt "uchaines.rsrayonintrieu2" msgid "Rayon intérieur" msgstr "" #: uchaines.rsrayonn msgid "Rayon n° %s" msgstr "" #: uchaines.rsrayonrflchis msgctxt "uchaines.rsrayonrflchis" msgid "Rayon réfléchi (sens entrant)" msgstr "" #: uchaines.rsrayonrflchis2 msgctxt "uchaines.rsrayonrflchis2" msgid "Rayon réfléchi (sens sortant)" msgstr "" #: uchaines.rsrayonsdecour msgctxt "uchaines.rsrayonsdecour" msgid "Rayons de courbure des faces" msgstr "" #: uchaines.rsrayonsenfant msgctxt "uchaines.rsrayonsenfant" msgid "Rayons enfants" msgstr "" #: uchaines.rsrayonsfantom msgctxt "uchaines.rsrayonsfantom" msgid "Rayons fantomes" msgstr "" #: uchaines.rsrayonunique msgctxt "uchaines.rsrayonunique" msgid "Rayon unique" msgstr "" #: uchaines.rsredimensionn msgid "Redimensionnement impossible" msgstr "" #: uchaines.rsrefaire msgctxt "uchaines.rsrefaire" msgid "Refaire" msgstr "" #: uchaines.rsrelierlespoi msgid "Relier les points %s et %s par:" msgstr "" #: uchaines.rsrelierlespoi2 msgctxt "uchaines.rsrelierlespoi2" msgid "Relier les points" msgstr "" #: uchaines.rsremarqueimpo msgid "Remarque importante: ce réseau diffractant doit être éclairé par une onde plane.Un rayon unique sera diffracté selon la loi des réseaux sin i=+-sin i0+k.lambda/amais cela n'a pas de sens pour un rayon unique." msgstr "" #: uchaines.rsremarqueleno msgctxt "uchaines.rsremarqueleno" msgid "Remarque: le non respect du rapport implique que" msgstr "" #: uchaines.rsremarquesila msgctxt "uchaines.rsremarquesila" msgid "Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces" msgstr "" #: uchaines.rsremarquesila2 msgctxt "uchaines.rsremarquesila2" msgid "Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces" msgstr "" #: uchaines.rsrentrant msgid "A gauche" msgstr "" #: uchaines.rsrepertoirede msgid "Repertoire des exemples introuvable et incréable!" msgstr "" #: uchaines.rsrepertoirede2 msgid "Repertoire des simulations personnelles introuvable et incréable !" msgstr "" #: uchaines.rsrepertoirede3 msgid "Repertoire de configuration personnelle introuvable et incréable. Vous ne pourrez pas sauver vos modifications d'environnement !" msgstr "" #: uchaines.rsrepreorthono msgctxt "uchaines.rsrepreorthono" msgid "Repére orthonormé (approximativement)" msgstr "" #: uchaines.rsreprer msgctxt "uchaines.rsreprer" msgid "Repérer" msgstr "" #: uchaines.rsreseau msgctxt "uchaines.rsreseau" msgid "Réseau" msgstr "" #: uchaines.rsreseaun msgid "Réseau n° %s" msgstr "" #: uchaines.rsrespecterler msgid "Respecter le rapport hauteur/largeur de l" msgstr "" #: uchaines.rsrespecterler2 msgctxt "uchaines.rsrespecterler2" msgid "Respecter le rapport hauteur/largeur de l'écran" msgstr "" #: uchaines.rsrespecterles msgctxt "uchaines.rsrespecterles" msgid "Respecter les angles à l'impression" msgstr "" #: uchaines.rsrespecterrap msgctxt "uchaines.rsrespecterrap" msgid "Respecter rapport hauteur/largeur de l'écran" msgstr "" #: uchaines.rsrext msgctxt "uchaines.rsrext" msgid "Rext=" msgstr "" #: uchaines.rsri msgctxt "uchaines.rsri" msgid "Ri=" msgstr "" #: uchaines.rsrint msgctxt "uchaines.rsrint" msgid "Rint=" msgstr "" #: uchaines.rsrouge msgid "Rouge" msgstr "" #: uchaines.rsrpertoiredes msgctxt "uchaines.rsrpertoiredes" msgid "Répertoire des exemples" msgstr "" #: uchaines.rsrpertoiredev msgctxt "uchaines.rsrpertoiredev" msgid "Répertoire devant recevoir vos simulations personnelles" msgstr "" #: uchaines.rsrpertoiredev2 msgctxt "uchaines.rsrpertoiredev2" msgid "Répertoire devant contenir votre configuration personnelle d'OptGeo" msgstr "" #: uchaines.rsrpertoiredin msgctxt "uchaines.rsrpertoiredin" msgid "Répertoire d'installation d'OptGeo" msgstr "" #: uchaines.rsrseau msgctxt "uchaines.rsrseau" msgid "Réseau" msgstr "" #: uchaines.rsrseaudiffrac msgctxt "uchaines.rsrseaudiffrac" msgid "Réseau diffractant" msgstr "" #: uchaines.rsrsolutions msgctxt "uchaines.rsrsolutions" msgid "Résolutions" msgstr "" #: uchaines.rsrtablirlesva msgctxt "uchaines.rsrtablirlesva" msgid "&Rétablir les valeurs d'origine de tous les éléments" msgstr "" #: uchaines.rssaisieduneon msgctxt "uchaines.rssaisieduneon" msgid "Saisie d'une onde plane" msgstr "" #: uchaines.rssaisieduneso msgctxt "uchaines.rssaisieduneso" msgid "Saisie d'une source ponctuelle" msgstr "" #: uchaines.rssaisiedunray msgctxt "uchaines.rssaisiedunray" msgid "Saisie d'un rayon" msgstr "" #: uchaines.rssaisirletext msgctxt "uchaines.rssaisirletext" msgid "Saisir le texte à afficher" msgstr "" #: uchaines.rssaisissez msgctxt "uchaines.rssaisissez" msgid "Saisissez" msgstr "" #: uchaines.rssaisissezled msgid "Saisissez le diamètre de la lentille..." msgstr "" #: uchaines.rssaissezledia msgctxt "uchaines.rssaissezledia" msgid "Saissez le diamètre de la lentille" msgstr "" #: uchaines.rsseulementsil msgid "Seulement si le réfracté existe" msgstr "" #: uchaines.rsseulementsil2 msgctxt "uchaines.rsseulementsil2" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil3 msgctxt "uchaines.rsseulementsil3" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil4 msgctxt "uchaines.rsseulementsil4" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil5 msgctxt "uchaines.rsseulementsil5" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil6 msgctxt "uchaines.rsseulementsil6" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil7 msgctxt "uchaines.rsseulementsil7" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil8 msgctxt "uchaines.rsseulementsil8" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulementsil9 msgctxt "uchaines.rsseulementsil9" msgid "Seulement si le réfracté n'existe pas" msgstr "" #: uchaines.rsseulemenxtsi msgid "Seulemenxt si le réfracté existe" msgstr "" #: uchaines.rssignesicentr msgctxt "uchaines.rssignesicentr" msgid "Signe + si centre de courbure Ci à gauche de Si" msgstr "" #: uchaines.rssiteweb msgctxt "uchaines.rssiteweb" msgid "Site Web" msgstr "" #: uchaines.rssitewebdelau msgctxt "uchaines.rssitewebdelau" msgid "Site Web de l'auteur" msgstr "" #: uchaines.rssommet msgid "Sommet %s" msgstr "" #: uchaines.rssommets1 msgctxt "uchaines.rssommets1" msgid "Sommet S1" msgstr "" #: uchaines.rssommets2 msgctxt "uchaines.rssommets2" msgid "Sommet S2" msgstr "" #: uchaines.rssommetsdecep msgctxt "uchaines.rssommetsdecep" msgid "Sommets de ce polyhèdre" msgstr "" #: uchaines.rssommetsdecet msgid "Sommets de cette polysphére" msgstr "" #: uchaines.rssommetsdecet2 msgid "Sommets de cette polysphère" msgstr "" #: uchaines.rssommetstropp msgid "Sommets trop proches !" msgstr "" #: uchaines.rssonrayondeco msgctxt "uchaines.rssonrayondeco" msgid "Son rayon de courbure vaut:" msgstr "" #: uchaines.rssortant msgid "A droite" msgstr "" #: uchaines.rssoulign msgid "Souligné" msgstr "" #: uchaines.rssource msgctxt "uchaines.rssource" msgid "Source" msgstr "" #: uchaines.rssourceponctu msgid "Source ponctuelle" msgstr "" #: uchaines.rssourceponctu2 msgid "Source ponctuelle n° %s" msgstr "" #: uchaines.rssources msgctxt "uchaines.rssources" msgid "Sources:" msgstr "" #: uchaines.rssphre msgid "Sphère" msgstr "" #: uchaines.rssphrerfracta msgctxt "uchaines.rssphrerfracta" msgid "Sphère réfractante" msgstr "" #: uchaines.rssphrerfracta2 msgid "Sphère réfractante n° %s" msgstr "" #: uchaines.rssplashscreen msgid "Splashscreen" msgstr "" #: uchaines.rsstyledespoin msgctxt "uchaines.rsstyledespoin" msgid "Style des points" msgstr "" #: uchaines.rsstyledutrait msgctxt "uchaines.rsstyledutrait" msgid "Style du trait (valable si épaisseur=1)" msgstr "" #: uchaines.rssuivant msgctxt "uchaines.rssuivant" msgid "Suivant >" msgstr "" #: uchaines.rssuperposersi msgctxt "uchaines.rssuperposersi" msgid "Superposer simulation" msgstr "" #: uchaines.rssupprimer msgctxt "uchaines.rssupprimer" msgid "Supprimer" msgstr "" #: uchaines.rssupprimerced msgctxt "uchaines.rssupprimerced" msgid "Supprimer ce diaphragme" msgstr "" #: uchaines.rssupprimercem msgctxt "uchaines.rssupprimercem" msgid "Supprimer ce miroir" msgstr "" #: uchaines.rssupprimercep msgctxt "uchaines.rssupprimercep" msgid "Supprimer ce polycercle" msgstr "" #: uchaines.rssupprimercep2 msgctxt "uchaines.rssupprimercep2" msgid "Supprimer ce prisme" msgstr "" #: uchaines.rssupprimercep3 msgctxt "uchaines.rssupprimercep3" msgid "Supprimer ce polygône" msgstr "" #: uchaines.rssupprimercer msgctxt "uchaines.rssupprimercer" msgid "Supprimer ce rayon" msgstr "" #: uchaines.rssupprimercer2 msgctxt "uchaines.rssupprimercer2" msgid "Supprimer ce réseau" msgstr "" #: uchaines.rssupprimercet msgctxt "uchaines.rssupprimercet" msgid "Supprimer cette sphère" msgstr "" #: uchaines.rssupprimercet10 msgctxt "uchaines.rssupprimercet10" msgid "Supprimer cette distance" msgstr "" #: uchaines.rssupprimercet11 msgctxt "uchaines.rssupprimercet11" msgid "Supprimer cet angle" msgstr "" #: uchaines.rssupprimercet2 msgctxt "uchaines.rssupprimercet2" msgid "Supprimer cet écran" msgstr "" #: uchaines.rssupprimercet3 msgctxt "uchaines.rssupprimercet3" msgid "Supprimer ce trait" msgstr "" #: uchaines.rssupprimercet4 msgctxt "uchaines.rssupprimercet4" msgid "Supprimer cette lame" msgstr "" #: uchaines.rssupprimercet5 msgctxt "uchaines.rssupprimercet5" msgid "Supprimer cette lentille" msgstr "" #: uchaines.rssupprimercet6 msgctxt "uchaines.rssupprimercet6" msgid "Supprimer cet oeil" msgstr "" #: uchaines.rssupprimercet7 msgctxt "uchaines.rssupprimercet7" msgid "Supprimer cette onde plane" msgstr "" #: uchaines.rssupprimercet8 msgctxt "uchaines.rssupprimercet8" msgid "Supprimer cette source ponctuelle" msgstr "" #: uchaines.rssupprimercet9 msgctxt "uchaines.rssupprimercet9" msgid "Supprimer ce texte" msgstr "" #: uchaines.rssupprimerunl msgctxt "uchaines.rssupprimerunl" msgid "Supprimer un élément existant" msgstr "" #: uchaines.rssupprimerunl2 msgctxt "uchaines.rssupprimerunl2" msgid "Supprimer un élément" msgstr "" #: uchaines.rssurfacesdond msgctxt "uchaines.rssurfacesdond" msgid "Surfaces d'onde" msgstr "" #: uchaines.rssurlaxeorien msgctxt "uchaines.rssurlaxeorien" msgid "sur l'axe orienté de S1 vers S2, signe - sinon." msgstr "" #: uchaines.rssystmeoptiqu msgctxt "uchaines.rssystmeoptiqu" msgid "Système optique idéal" msgstr "" #: uchaines.rssystmeoptiqu2 msgctxt "uchaines.rssystmeoptiqu2" msgid "Système optique réel" msgstr "" #: uchaines.rst msgctxt "uchaines.rst" msgid "t=" msgstr "" #: uchaines.rst0 msgctxt "uchaines.rst0" msgid "t0=" msgstr "" #: uchaines.rst1 msgctxt "uchaines.rst1" msgid "t1=" msgstr "" #: uchaines.rst2 msgctxt "uchaines.rst2" msgid "t2=" msgstr "" #: uchaines.rstaille msgid "Taille: %s" msgstr "" #: uchaines.rstailledelala msgid "Taille de la lame trop petite !" msgstr "" #: uchaines.rstailledelale msgid "Taille de la lentille trop petite !" msgstr "" #: uchaines.rstailledelapr msgctxt "uchaines.rstailledelapr" msgid "Taille de la première extrémité" msgstr "" #: uchaines.rstailledelase msgctxt "uchaines.rstailledelase" msgid "Taille de la seconde extrémité" msgstr "" #: uchaines.rstailledelcra msgid "Taille de l'écran trop petite !" msgstr "" #: uchaines.rstailledelemp msgctxt "uchaines.rstailledelemp" msgid "Taille de l'empennage:" msgstr "" #: uchaines.rstailledeloei msgctxt "uchaines.rstailledeloei" msgid "Taille de l'oeil trop petite !" msgstr "" #: uchaines.rstailledeloei2 msgctxt "uchaines.rstailledeloei2" msgid "Taille de l'oeil trop petite !" msgstr "" #: uchaines.rstailledespoi msgctxt "uchaines.rstailledespoi" msgid "Taille des points" msgstr "" #: uchaines.rstailledumiro msgctxt "uchaines.rstailledumiro" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro2 msgid "Taille du miroir trop petite !" msgstr "" #: uchaines.rstailledumiro3 msgctxt "uchaines.rstailledumiro3" msgid "Taille du miroir trop petite ou focale trop courte, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro4 msgctxt "uchaines.rstailledumiro4" msgid "Taille du miroir trop petite ou focale trop courte, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro5 msgctxt "uchaines.rstailledumiro5" msgid "Taille du miroir trop petite ou focale trop courte, ou miroir débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro6 msgctxt "uchaines.rstailledumiro6" msgid "Taille du miroir trop petite ou focale trop courte, ou miroir débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro7 msgctxt "uchaines.rstailledumiro7" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledumiro8 msgctxt "uchaines.rstailledumiro8" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledupris msgid "Taille du prisme trop petite !" msgstr "" #: uchaines.rstailledursea msgid "Taille du réseau trop petite !" msgstr "" #: uchaines.rstailledursea2 msgid "Taille du réseau trop petite, ou débordant de l'écran !" msgstr "" #: uchaines.rstailledutrai msgid "Taille du trait trop petite !" msgstr "" #: uchaines.rstailledutrai2 msgid "Taille du trait trop petite ou points hors de l'espace de travail !" msgstr "" #: uchaines.rstailleendela msgctxt "uchaines.rstailleendela" msgid "Taille (en % de la page)" msgstr "" #: uchaines.rstaillepage msgctxt "uchaines.rstaillepage" msgid "Taille page" msgstr "" #: uchaines.rstexte msgctxt "uchaines.rstexte" msgid "Texte" msgstr "" #: uchaines.rstexten msgid "Texte n° %s" msgstr "" #: uchaines.rstextesurlede msgctxt "uchaines.rstextesurlede" msgid "Texte sur le dessin" msgstr "" #: uchaines.rstirs msgid "Tirés" msgstr "" #: uchaines.rstirspoints msgid "Tirés - Points" msgstr "" #: uchaines.rstirspointspo msgid "Tirés - Points - Points" msgstr "" #: uchaines.rstoujours msgid "Toujours" msgstr "" #: uchaines.rstousleslment msgctxt "uchaines.rstousleslment" msgid "Tous les éléments" msgstr "" #: uchaines.rstracer msgctxt "uchaines.rstracer" msgid "Tracer" msgstr "" #: uchaines.rstracerdessur msgctxt "uchaines.rstracerdessur" msgid "Tracer des surfaces d'onde issues de cette onde plane" msgstr "" #: uchaines.rstracerdessur2 msgctxt "uchaines.rstracerdessur2" msgid "Tracer des surfaces d'onde issues de cette source ponctuelle" msgstr "" #: uchaines.rstracerenpoin msgctxt "uchaines.rstracerenpoin" msgid "Tracer en pointillé le prolongement des différents segments des rayons" msgstr "" #: uchaines.rstracerenpoin2 msgctxt "uchaines.rstracerenpoin2" msgid "Tracer en pointillé le prolongement des différents segments du rayon" msgstr "" #: uchaines.rstracerenpoin3 msgctxt "uchaines.rstracerenpoin3" msgid "Tracer en pointillé le prolongement des différents segments des rayons" msgstr "" #: uchaines.rstracerlesnor msgctxt "uchaines.rstracerlesnor" msgid "Tracer les normales" msgstr "" #: uchaines.rstrait msgid "Trait" msgstr "" #: uchaines.rstraitflche msgctxt "uchaines.rstraitflche" msgid "Trait, fléche..." msgstr "" #: uchaines.rstraitperpend msgid "Trait perpendiculaire" msgstr "" #: uchaines.rstrouer msgctxt "uchaines.rstrouer" msgid "Trouer" msgstr "" #: uchaines.rstrouerlemiro msgctxt "uchaines.rstrouerlemiro" msgid "Trouer le miroir en son centre" msgstr "" #: uchaines.rstypedelentil msgid "Type de lentille incompatible avec les valeurs proposées, ou lentille débordant de l'espace de travail !" msgstr "" #: uchaines.rstypederseau msgctxt "uchaines.rstypederseau" msgid "Type de réseau" msgstr "" #: uchaines.rstypedesource msgctxt "uchaines.rstypedesource" msgid "Type de source" msgstr "" #: uchaines.rstypedlment msgctxt "uchaines.rstypedlment" msgid "Type d'élément" msgstr "" #: uchaines.rsunarcdecercl msgid "Un arc de cercle" msgstr "" #: uchaines.rsunaumoinsdes msgid "Un au moins des objets actuels ne rentre pas sur ce nouvel espace de travail !" msgstr "" #: uchaines.rsunfichierpor msgid "Un fichier portant ce nom existe déjà. Voulez-vous l'écraser ?" msgstr "" #: uchaines.rsunitdelongue msgctxt "uchaines.rsunitdelongue" msgid "Unité de longueur" msgstr "" #: uchaines.rsunnouveaugro msgid "Un nouveau groupe contenant les éléments ajoutés vien d'être créé." msgstr "" #: uchaines.rsunnouveaugro2 msgid "Un nouveau groupe contenant tous les éléments vient d'être créé." msgstr "" #: uchaines.rsunsegmentded msgid "Un segment de droite" msgstr "" #: uchaines.rsvaleurdupash msgid "Valeur du pas horizontal illégale !" msgstr "" #: uchaines.rsvaleurdupash2 msgid "Valeur du pas horizontal très faible ou très forte. Etes-vous sûr ?" msgstr "" #: uchaines.rsvaleurdupasv msgid "Valeur du pas vertical illégale !" msgstr "" #: uchaines.rsvaleurdupasv2 msgid "Valeur du pas vertical très faible ou très forte. Etes-vous sûr ?" msgstr "" #: uchaines.rsvaleurillgal msgid "Valeur illégale de l'indice vert par défaut; remplacé par 1" msgstr "" #: uchaines.rsvaleurillgal2 msgid "Valeur illégale de l'indice bleu par défaut; remplacé par 1" msgstr "" #: uchaines.rsvaleurillgal3 msgid "Valeur illégale de l'indice rouge par défaut; remplacé par 1" msgstr "" #: uchaines.rsvaleurinacce msgid "Valeur inacceptable pour le rayon !" msgstr "" #: uchaines.rsvaleurinacce10 msgid "Valeur inacceptable pour Rint !" msgstr "" #: uchaines.rsvaleurinacce11 msgid "Valeur inacceptable pour Rext !" msgstr "" #: uchaines.rsvaleurinacce12 msgid "Valeur inacceptable pour t !" msgstr "" #: uchaines.rsvaleurinacce13 msgid "Valeur inacceptable pour x1 !" msgstr "" #: uchaines.rsvaleurinacce14 msgid "Valeur inacceptable pour x2 !" msgstr "" #: uchaines.rsvaleurinacce15 msgid "Valeur inacceptable pour y1 !" msgstr "" #: uchaines.rsvaleurinacce16 msgid "Valeur inacceptable pour y2 !" msgstr "" #: uchaines.rsvaleurinacce17 msgid "Valeur inacceptable pour S1x !" msgstr "" #: uchaines.rsvaleurinacce18 msgid "Valeur inacceptable pour S1y !" msgstr "" #: uchaines.rsvaleurinacce19 msgid "Valeur inacceptable pour S2x !" msgstr "" #: uchaines.rsvaleurinacce2 msgid "Valeur inacceptable pour x !" msgstr "" #: uchaines.rsvaleurinacce20 msgid "Valeur inacceptable pour S2y !" msgstr "" #: uchaines.rsvaleurinacce21 msgid "Valeur inacceptable pour R1 !" msgstr "" #: uchaines.rsvaleurinacce22 msgid "Valeur inacceptable pour R2 !" msgstr "" #: uchaines.rsvaleurinacce23 msgid "Valeur inacceptable pour le diamètre !" msgstr "" #: uchaines.rsvaleurinacce24 msgid "Valeur inacceptable pour la focale !" msgstr "" #: uchaines.rsvaleurinacce25 msgid "Valeur inacceptable pour fx !" msgstr "" #: uchaines.rsvaleurinacce26 msgid "Valeur inacceptable pour fy !" msgstr "" #: uchaines.rsvaleurinacce27 msgid "Valeur inacceptable pour e !" msgstr "" #: uchaines.rsvaleurinacce28 msgid "Valeur inacceptable pour p !" msgstr "" #: uchaines.rsvaleurinacce29 msgid "Valeur inacceptable pour t0 !" msgstr "" #: uchaines.rsvaleurinacce3 msgid "Valeur inacceptable pour y !" msgstr "" #: uchaines.rsvaleurinacce30 msgid "Valeur inacceptable pour t1 !" msgstr "" #: uchaines.rsvaleurinacce31 msgid "Valeur inacceptable pour t2 !" msgstr "" #: uchaines.rsvaleurinacce32 msgid "Valeur inacceptable pour le diametre du trou !" msgstr "" #: uchaines.rsvaleurinacce33 msgid "Valeur inacceptable pour le rayon de courbure !" msgstr "" #: uchaines.rsvaleurinacce34 msgid "Valeur inacceptable pour Dx !" msgstr "" #: uchaines.rsvaleurinacce35 msgid "Valeur inacceptable pour Dy !" msgstr "" #: uchaines.rsvaleurinacce36 msgid "Valeur inacceptable pour gx !" msgstr "" #: uchaines.rsvaleurinacce37 msgid "Valeur inacceptable pour gy !" msgstr "" #: uchaines.rsvaleurinacce38 msgid "Valeur inacceptable pour l'angle au sommet !" msgstr "" #: uchaines.rsvaleurinacce39 msgid "Valeur inacceptable pour l'angle polaire !" msgstr "" #: uchaines.rsvaleurinacce4 msgid "Valeur inacceptable pour indice rouge !" msgstr "" #: uchaines.rsvaleurinacce40 msgid "Valeur inacceptable pour la hauteur!" msgstr "" #: uchaines.rsvaleurinacce41 msgid "Valeur inacceptable pour sx !" msgstr "" #: uchaines.rsvaleurinacce42 msgid "Valeur inacceptable pour sy !" msgstr "" #: uchaines.rsvaleurinacce5 msgid "Valeur inacceptable pour indice vert !" msgstr "" #: uchaines.rsvaleurinacce6 msgid "Valeur inacceptable pour indice bleu !" msgstr "" #: uchaines.rsvaleurinacce7 msgid "Valeur inacceptable pour Ri !" msgstr "" #: uchaines.rsvaleurinacce8 msgid "Valeur inacceptable pour cx !" msgstr "" #: uchaines.rsvaleurinacce9 msgid "Valeur inacceptable pour cy !" msgstr "" #: uchaines.rsvaleurincorr msgid "Valeur incorrecte pour x" msgstr "" #: uchaines.rsvaleurincorr2 msgid "Valeur incorrecte pour y" msgstr "" #: uchaines.rsvaleurnulleo msgid "Valeur nulle ou négative interdite pour la hauteur et/ou la largeur !" msgstr "" #: uchaines.rsvaleursentre msgid "Valeurs entrées aberrantes !" msgstr "" #: uchaines.rsvaleursnonau msgid "Valeurs non autorisées pour x ou y" msgstr "" #: uchaines.rsversion200be msgctxt "uchaines.rsversion200be" msgid "Version 2.21 du 02/12/2013, écrite en Lazarus" msgstr "" #: uchaines.rsversion205du msgid "Version 2.21 du 02/12/2013" msgstr "" #: uchaines.rsverslarrire msgctxt "uchaines.rsverslarrire" msgid "Vers l'arrière:" msgstr "" #: uchaines.rsverslarrire2 msgctxt "uchaines.rsverslarrire2" msgid "Vers l'arrière:" msgstr "" #: uchaines.rsverslarrire3 msgctxt "uchaines.rsverslarrire3" msgid "Vers l'arrière:" msgstr "" #: uchaines.rsverslavant msgctxt "uchaines.rsverslavant" msgid "Vers l'avant:" msgstr "" #: uchaines.rsverslavant2 msgctxt "uchaines.rsverslavant2" msgid "Vers l'avant:" msgstr "" #: uchaines.rsverslavant3 msgctxt "uchaines.rsverslavant3" msgid "Vers l'avant:" msgstr "" #: uchaines.rsvert msgid "Vert" msgstr "" #: uchaines.rsverticale msgctxt "uchaines.rsverticale" msgid "Verticale" msgstr "" #: uchaines.rsverticale2 msgctxt "uchaines.rsverticale2" msgid "Verticale:" msgstr "" #: uchaines.rsverticalemen msgctxt "uchaines.rsverticalemen" msgid "Verticalement" msgstr "" #: uchaines.rsvotreattenti msgid "Votre attention siouplait !" msgstr "" #: uchaines.rsvoulezvous msgctxt "uchaines.rsvoulezvous" msgid "Voulez vous:" msgstr "" #: uchaines.rsvoulezvouslc msgctxt "uchaines.rsvoulezvouslc" msgid "Voulez-vous l'écraser ?" msgstr "" #: uchaines.rsvoulezvouslc2 msgctxt "uchaines.rsvoulezvouslc2" msgid "Voulez-vous l'écraser ?" msgstr "" #: uchaines.rsvouspouvezch msgctxt "uchaines.rsvouspouvezch" msgid "Vous pouvez changer les indices du milieu dans lequel s'effectue la simulation:" msgstr "" #: uchaines.rsvrifierquevo msgctxt "uchaines.rsvrifierquevo" msgid "Vérifier que vous avez la dernière version ? Cliquer sur:" msgstr "" #: uchaines.rsvudepuislece msgctxt "uchaines.rsvudepuislece" msgid "(vu depuis le centre C)" msgstr "" #: uchaines.rsx msgctxt "uchaines.rsx" msgid "x=" msgstr "" #: uchaines.rsx1 msgid "x1" msgstr "" #: uchaines.rsx10 msgid "x10" msgstr "" #: uchaines.rsx100 msgid "x100" msgstr "" #: uchaines.rsx2 msgid "x2" msgstr "" #: uchaines.rsx20 msgid "x20" msgstr "" #: uchaines.rsx5 msgid "x5" msgstr "" #: uchaines.rsx50 msgid "x50" msgstr "" #: uchaines.rsxmaxdoittres msgid "xmax doit être supérieur à xmin !" msgstr "" #: uchaines.rsy msgctxt "uchaines.rsy" msgid "y=" msgstr "" #: uchaines.rsymaxdoittres msgid "ymax doit être supérieur à ymin !" msgstr "" #: uchaines.rszoom msgctxt "uchaines.rszoom" msgid "Zoom:" msgstr "" #: un rayon unique sera diffracté selon la loi des réseaux sin i msgid "+-sin i0+k.lambda/a" msgstr "" optgeo-2.21/lang/lclstrconsts.fr.po0000750000175000017500000012006611743210472017561 0ustar georgeskgeorgeskmsgid "" msgstr "" "Last-Translator: Laurent Jacques \n" "PO-Revision-Date: 2008-09-04 11:40+0100\n" "Language-Team: Laurent Jacques \n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "MIME-Version: 1.0\n" "POT-Creation-Date: \n" "Project-Id-Version: \n" "X-Poedit-Bookmarks: -1,190,-1,-1,-1,-1,-1,-1,-1,-1\n" "X-Poedit-Language: French\n" #: lclstrconsts.hhshelpbrowsernotexecutable msgid "Browser %s%s%s not executable." msgstr "Navigateur %s%s%s non exécutable." #: lclstrconsts.hhshelpbrowsernotfound msgid "Browser %s%s%s not found." msgstr "Navigateur %s%s%s non trouvé." #: lclstrconsts.hhshelperrorwhileexecuting msgid "Error while executing %s%s%s:%s%s" msgstr "Erreur en exécutant %s%s%s : %s%s" #: lclstrconsts.hhshelpnohtmlbrowserfound msgid "Unable to find a HTML browser." msgstr "Impossible de trouver un navigateur de HTML. " #: lclstrconsts.hhshelpnohtmlbrowserfoundpleasedefineone msgid "No HTML Browser found.%sPlease define one in Tools -> Options -> Help -> Help Options" msgstr "" #: lclstrconsts.hhshelpthehelpdatabasewasunabletofindfile msgid "The help database %s%s%s was unable to find file %s%s%s." msgstr "La base de données d'aide %s%s%s ne trouve pas le fichier %s%s%s." #: lclstrconsts.hhshelpthemacrosinbrowserparamswillbereplacedbytheurl msgid "The macro %s in BrowserParams will be replaced by the URL." msgstr "La macro %s dans BrowserParams sera remplacé par l'URL." #: lclstrconsts.ifsalt msgid "Alt" msgstr "Alt" #: lclstrconsts.ifsctrl msgid "Ctrl" msgstr "Ctrl" #: lclstrconsts.ifsvk_accept msgid "Accept" msgstr "Accepter" #: lclstrconsts.ifsvk_apps msgid "application key" msgstr "Touche Application" #: lclstrconsts.ifsvk_back msgid "Backspace" msgstr "Retour arriére" #: lclstrconsts.ifsvk_cancel msgctxt "lclstrconsts.ifsvk_cancel" msgid "Cancel" msgstr "" #: lclstrconsts.ifsvk_capital msgid "Capital" msgstr "Majuscule" #: lclstrconsts.ifsvk_clear msgid "Clear" msgstr "Effacer" #: lclstrconsts.ifsvk_cmd msgid "Cmd" msgstr "" #: lclstrconsts.ifsvk_control msgid "Control" msgstr "Contrôle" #: lclstrconsts.ifsvk_convert msgid "Convert" msgstr "Convertir" #: lclstrconsts.ifsvk_delete msgctxt "lclstrconsts.ifsvk_delete" msgid "Delete" msgstr "" #: lclstrconsts.ifsvk_down msgctxt "lclstrconsts.ifsvk_down" msgid "Down" msgstr "Bas" #: lclstrconsts.ifsvk_end msgctxt "lclstrconsts.ifsvk_end" msgid "End" msgstr "Fin" #: lclstrconsts.ifsvk_escape msgid "Escape" msgstr "Echappement" #: lclstrconsts.ifsvk_execute msgid "Execute" msgstr "Exécuter" #: lclstrconsts.ifsvk_final msgid "Final" msgstr "Final" #: lclstrconsts.ifsvk_hanja msgid "Hanja" msgstr "Hanja" #: lclstrconsts.ifsvk_help msgid "Help" msgstr "Aide" #: lclstrconsts.ifsvk_home msgctxt "lclstrconsts.ifsvk_home" msgid "Home" msgstr "Maison" #: lclstrconsts.ifsvk_insert msgctxt "lclstrconsts.ifsvk_insert" msgid "Insert" msgstr "" #: lclstrconsts.ifsvk_junja msgid "Junja" msgstr "Junja" #: lclstrconsts.ifsvk_kana msgid "Kana" msgstr "Kana" #: lclstrconsts.ifsvk_lbutton msgid "Mouse Button Left" msgstr "Bouton gauche de la souris" #: lclstrconsts.ifsvk_left msgctxt "lclstrconsts.ifsvk_left" msgid "Left" msgstr "Gauche" #: lclstrconsts.ifsvk_lwin msgid "left windows key" msgstr "Touche Windows gauche" #: lclstrconsts.ifsvk_mbutton msgid "Mouse Button Middle" msgstr "Bouton central de la souris" #: lclstrconsts.ifsvk_menu msgctxt "lclstrconsts.ifsvk_menu" msgid "Menu" msgstr "Menu" #: lclstrconsts.ifsvk_meta msgid "Meta" msgstr "" #: lclstrconsts.ifsvk_modechange msgid "Mode Change" msgstr "Changement de mode" #: lclstrconsts.ifsvk_next msgctxt "lclstrconsts.ifsvk_next" msgid "Next" msgstr "" #: lclstrconsts.ifsvk_nonconvert msgid "Nonconvert" msgstr "Non converti" #: lclstrconsts.ifsvk_numlock msgid "Numlock" msgstr "Verr num." #: lclstrconsts.ifsvk_numpad msgid "Numpad %d" msgstr "%d pav num." #: lclstrconsts.ifsvk_pause msgid "Pause key" msgstr "Touche Pause" #: lclstrconsts.ifsvk_print msgid "Print" msgstr "Imprimer" #: lclstrconsts.ifsvk_prior msgctxt "lclstrconsts.ifsvk_prior" msgid "Prior" msgstr "" #: lclstrconsts.ifsvk_rbutton msgid "Mouse Button Right" msgstr "Bouton droit de la souris" #: lclstrconsts.ifsvk_return msgid "Return" msgstr "Retour" #: lclstrconsts.ifsvk_right msgctxt "lclstrconsts.ifsvk_right" msgid "Right" msgstr "Droite" #: lclstrconsts.ifsvk_rwin msgid "right windows key" msgstr "Touche Windows droite" #: lclstrconsts.ifsvk_scroll msgid "Scroll" msgstr "Défilement" #: lclstrconsts.ifsvk_select msgid "Select" msgstr "Sélectionner" #: lclstrconsts.ifsvk_shift msgid "Shift" msgstr "Maj" #: lclstrconsts.ifsvk_snapshot msgid "Snapshot" msgstr "Capture d'écran" #: lclstrconsts.ifsvk_space msgid "Space key" msgstr "Barre d'espace" #: lclstrconsts.ifsvk_super msgid "Super" msgstr "" #: lclstrconsts.ifsvk_tab msgctxt "lclstrconsts.ifsvk_tab" msgid "Tab" msgstr "Étiquette" #: lclstrconsts.ifsvk_unknown msgid "Unknown" msgstr "Inconnu" #: lclstrconsts.ifsvk_up msgctxt "lclstrconsts.ifsvk_up" msgid "Up" msgstr "Haut" #: lclstrconsts.liscannotexecute msgid "can not execute %s" msgstr "" #: lclstrconsts.liscefilter msgid "(filter)" msgstr "" #: lclstrconsts.lislclresourcesnotfound msgctxt "lclstrconsts.lislclresourcesnotfound" msgid "Resource %s not found" msgstr "Ressource %s non trouve" #: lclstrconsts.lisprogramfilenotfound msgid "program file not found %s" msgstr "" #: lclstrconsts.rs3ddkshadowcolorcaption msgid "3D Dark Shadow" msgstr "" #: lclstrconsts.rs3dlightcolorcaption msgid "3D Light" msgstr "" #: lclstrconsts.rsacontrolcannothaveitselfasparent #, fuzzy #| msgid "A control can't have itself as parent" msgid "A control can't have itself as a parent" msgstr "Un contrôle ne peut pas être son propre parent" #: lclstrconsts.rsactivebordercolorcaption msgid "Active Border" msgstr "" #: lclstrconsts.rsactivecaptioncolorcaption msgid "Active Caption" msgstr "" #: lclstrconsts.rsallfiles msgid "All files (%s)|%s|%s" msgstr "Tous les fichiers (%s)|%s|%s" #: lclstrconsts.rsappworkspacecolorcaption msgid "Application Workspace" msgstr "" #: lclstrconsts.rsaquacolorcaption msgid "Aqua" msgstr "" #: lclstrconsts.rsbackgroundcolorcaption msgid "Desktop" msgstr "" #: lclstrconsts.rsbackward msgid "Backward" msgstr "Arrière" #: lclstrconsts.rsbitmaps msgid "Bitmaps" msgstr "Images" #: lclstrconsts.rsblackcolorcaption msgid "Black" msgstr "" #: lclstrconsts.rsblank msgid "Blank" msgstr "Blanc" #: lclstrconsts.rsbluecolorcaption msgid "Blue" msgstr "" #: lclstrconsts.rsbtnfacecolorcaption msgid "Button Face" msgstr "" #: lclstrconsts.rsbtnhighlightcolorcaption msgid "Button Highlight" msgstr "" #: lclstrconsts.rsbtnshadowcolorcaption msgid "Button Shadow" msgstr "" #: lclstrconsts.rsbtntextcolorcaption msgid "Button Text" msgstr "" #: lclstrconsts.rscalculator msgid "Calculator" msgstr "Calculateur" #: lclstrconsts.rscancelrecordhint msgctxt "lclstrconsts.rscancelrecordhint" msgid "Cancel" msgstr "" #: lclstrconsts.rscannotfocus msgid "Can not focus" msgstr "Impossible de focaliser" #: lclstrconsts.rscanvasdoesnotallowdrawing msgid "Canvas does not allow drawing" msgstr "Dessin sur le Canvas non autorisé" #: lclstrconsts.rscaptiontextcolorcaption msgid "Caption Text" msgstr "" #: lclstrconsts.rscasesensitive msgid "Case sensitive" msgstr "Respecter la casse" #: lclstrconsts.rscontrolclasscantcontainchildclass msgid "Control of class '%s' can't have control of class '%s' as a child" msgstr "" #: lclstrconsts.rscontrolhasnoparentwindow msgid "Control '%s' has no parent window" msgstr "" #: lclstrconsts.rscontrolisnotaparent msgid "'%s' is not a parent of '%s'" msgstr "" #: lclstrconsts.rscreamcolorcaption msgid "Cream" msgstr "" #: lclstrconsts.rscreatinggdbcatchableerror msgid "Creating gdb catchable error:" msgstr "Créer une erreur d'arret de gdb :" #: lclstrconsts.rscursor msgid "Cursor" msgstr "Curseur" #: lclstrconsts.rscustomcolorcaption msgid "Custom ..." msgstr "" #: lclstrconsts.rsdefaultcolorcaption msgid "Default" msgstr "" #: lclstrconsts.rsdefaultfileinfovalue msgid "permissions user group size date time" msgstr "permission utilisateur groupe taille date heure" #: lclstrconsts.rsdeleterecord msgid "Delete record?" msgstr "Supprimer l'enregistrement ?" #: lclstrconsts.rsdeleterecordhint msgctxt "lclstrconsts.rsdeleterecordhint" msgid "Delete" msgstr "Supprimer" #: lclstrconsts.rsdirection msgid "Direction" msgstr "Direction" #: lclstrconsts.rsdirectory msgid "&Directory" msgstr "&Répertoire" #: lclstrconsts.rsdocking msgid "Docking" msgstr "Amarrage" #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Format icône Dupliquer." #: lclstrconsts.rseditrecordhint msgid "Edit" msgstr "" #: lclstrconsts.rsentirescope msgid "Search entire file" msgstr "" #: lclstrconsts.rserror msgctxt "lclstrconsts.rserror" msgid "Error" msgstr "" #: lclstrconsts.rserrorcreatingdevicecontext msgid "Error creating device context for %s.%s" msgstr "Erreur en écrant le contexte de dispositif pour %s.%s" #: lclstrconsts.rserrorinlcl msgid "ERROR in LCL: " msgstr "ERREUR dans LCL : " #: lclstrconsts.rserroroccurredinataddressframe msgid "Error occurred in %s at %sAddress %s%s Frame %s" msgstr "Une erreur s'est produite dans %s %s l'adresse %s%s page %s" #: lclstrconsts.rserrorreadingproperty msgid "Error reading %s%s%s: %s" msgstr "Erreur de lecture %s%s%s: %s" #: lclstrconsts.rserrorwhilesavingbitmap msgid "Error while saving bitmap." msgstr "Erreur en sauvegardent l'image." #: lclstrconsts.rsexception msgid "Exception" msgstr "Exception" #: lclstrconsts.rsfddirectorymustexist msgid "Directory must exist" msgstr "Le répertoire doit exister" #: lclstrconsts.rsfddirectorynotexist msgid "The directory \"%s\" does not exist." msgstr "Le répertoire \"%s\" n'existe pas." #: lclstrconsts.rsfdfilealreadyexists msgid "The file \"%s\" already exists. Overwrite ?" msgstr "Le fichier \"%s\" existe déjà. Ecraser ? " #: lclstrconsts.rsfdfilemustexist msgid "File must exist" msgstr "Le fichier doit exister" #: lclstrconsts.rsfdfilenotexist msgid "The file \"%s\" does not exist." msgstr "Le fichier \"%s\" n'existe pas" #: lclstrconsts.rsfdfilereadonly msgid "The file \"%s\" is not writable." msgstr "Le fichier \"%s\" est en lecture seule" #: lclstrconsts.rsfdfilereadonlytitle msgid "File is not writable" msgstr "Fichier protégé en écriture" #: lclstrconsts.rsfdfilesaveas msgid "Save file as" msgstr "Enregistrer le fichier sous" #: lclstrconsts.rsfdopenfile msgid "Open existing file" msgstr "Ouvrir un fichier existant" #: lclstrconsts.rsfdoverwritefile msgid "Overwrite file ?" msgstr "Ecraser le fichier ?" #: lclstrconsts.rsfdpathmustexist msgid "Path must exist" msgstr "Le chemin doit exister" #: lclstrconsts.rsfdpathnoexist msgid "The path \"%s\" does not exist." msgstr "Le répertoire \"%s\" n'existe pas" #: lclstrconsts.rsfdselectdirectory msgid "Select Directory" msgstr "Choisir un répertoire" #: lclstrconsts.rsfileinfofilenotfound msgid "(file not found: \"%s\")" msgstr "(Fichier \"%s\" non trouvé)" #: lclstrconsts.rsfileinformation msgid "File information" msgstr "Informations fichier" #: lclstrconsts.rsfind msgid "Find" msgstr "Chercher" #: lclstrconsts.rsfindmore msgid "Find more" msgstr "Chercher encore" #: lclstrconsts.rsfirstrecordhint msgid "First" msgstr "" #: lclstrconsts.rsfixedcolstoobig msgid "FixedCols can't be >= ColCount" msgstr "FixedCols ne peut pas être supérieur ColCount" #: lclstrconsts.rsfixedrowstoobig msgid "FixedRows can't be >= RowCount" msgstr "FixedRows ne peut pas être supérieur RowCount" #: lclstrconsts.rsformcolorcaption msgid "Form" msgstr "" #: lclstrconsts.rsformresourcesnotfoundforresourcelessformscreatenew msgid "Form resource %s not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource." msgstr "" #: lclstrconsts.rsformstreamingerror msgid "Form streaming \"%s\" error: %s" msgstr "Dans le flux de fiche \"%s\" : erreur %s" #: lclstrconsts.rsforward msgid "Forward" msgstr "Avant" #: lclstrconsts.rsfuchsiacolorcaption msgid "Fuchsia" msgstr "" #: lclstrconsts.rsgdkoptiondebug msgid "--gdk-debug flags Turn on specific GDK trace/debug messages." msgstr "--gdk-debug flags Activer les messages spécifique GDK+ trace/debug." #: lclstrconsts.rsgdkoptionnodebug msgid "--gdk-no-debug flags Turn off specific GDK trace/debug messages." msgstr "--gdk-no-debug flags Arrêter les messages spécifique GDK+ trace/debug." #: lclstrconsts.rsgif msgid "Graphics Interchange Format" msgstr "" #: lclstrconsts.rsgoptionfatalwarnings msgid "--g-fatal-warnings Warnings and errors generated by Gtk+/GDK will halt the application." msgstr "--g-fatal-warnings Les avertissements et les erreurs produits par Gtk+/GDK stopperont l'application." #: lclstrconsts.rsgradientactivecaptioncolorcaption msgid "Gradient Active Caption" msgstr "" #: lclstrconsts.rsgradientinactivecaptioncolorcaption msgid "Gradient Inactive Caption" msgstr "" #: lclstrconsts.rsgraphic msgid "Graphic" msgstr "" #: lclstrconsts.rsgraycolorcaption msgid "Gray" msgstr "" #: lclstrconsts.rsgraytextcolorcaption msgid "Gray Text" msgstr "" #: lclstrconsts.rsgreencolorcaption msgid "Green" msgstr "" #: lclstrconsts.rsgridfiledoesnotexists msgid "Grid file doesn't exists" msgstr "Le fichier Grid n'existe pas" #: lclstrconsts.rsgridindexoutofrange msgid "Grid index out of range." msgstr "Index de grille hors limite." #: lclstrconsts.rsgroupindexcannotbelessthanprevious msgid "GroupIndex cannot be less than a previous menu item's GroupIndex" msgstr "GroupIndex ne peut pas être inférieur au GroupIndex des éléments précédents" #: lclstrconsts.rsgtkfilter msgid "Filter:" msgstr "Filtre :" #: lclstrconsts.rsgtkhistory msgid "History:" msgstr "Historique" #: lclstrconsts.rsgtkoptionclass msgid "--class classname Following Xt conventions, the class of a program is the program name with the initial character capitalized. For example, the classname for gimp is \"Gimp\". If --class is specified, the class of the program will be set to \"classname\"." msgstr "--class classname Suivre la convention Xt, la classe d'un programme est le nom de programme avec le caractère initial en majuscule. Par exemple, le nom de classe pour gimp est \"Gimp\". Si --class est indiquée, la classe du programme sera réglé sur \"classname\"." #: lclstrconsts.rsgtkoptiondebug msgid "--gtk-debug flags Turn on specific Gtk+ trace/debug messages." msgstr "--gtk-debug flags Activer les messages spécifique Gtk+ trace/debug." #: lclstrconsts.rsgtkoptiondisplay msgid "--display h:s:d Connect to the specified X server, where \"h\" is the hostname, \"s\" is the server number (usually 0), and \"d\" is the display number (typically omitted). If --display is not specified, the DISPLAY environment variable is used." msgstr "--display h:s:d Se connecter à X serveur, où \"h\" est le nom d'hôte, \"s\" est le nombre de serveur (habituellement 0), et \"d\" est le nombre d'affichage (typiquement omis). Si --l'affichage n'est pas indiqué, la variable d'environnement DISPLAY est employé." #: lclstrconsts.rsgtkoptionmodule msgid "--gtk-module module Load the specified module at startup." msgstr "--gtk-module module Charger le module indiqué au démarrage." #: lclstrconsts.rsgtkoptionname msgid "--name programe Set program name to \"progname\". If not specified, program name will be set to ParamStrUTF8(0)." msgstr "--name programme Ensemble pour le nom du programme \"progname\". Si non spécifiée, le nom du programme sera fixée à ParamStrUTF8 (0)." #: lclstrconsts.rsgtkoptionnodebug msgid "--gtk-no-debug flags Turn off specific Gtk+ trace/debug messages." msgstr "--gtk-no-debug flags Arrêter les messages spécifique Gtk+ trace/debug." #: lclstrconsts.rsgtkoptionnotransient msgid "--lcl-no-transient Do not set transient order for modal forms" msgstr "--lcl-no-transient Ne mettez pas d'ordre transitoire pour les formes modales" #: lclstrconsts.rsgtkoptionnoxshm msgid "--no-xshm Disable use of the X Shared Memory Extension." msgstr "--no-xshm Désactive l'utilisation de la mémoire étendu partagée par X." #: lclstrconsts.rsgtkoptionsync #, fuzzy #| msgid "--sync Call XSynchronize (display, True) after the Xserver connection has been established. This makes debugging X protocol errors easier, because X request buffering will be disabled and X errors will be received immediatey after the protocol request that generated the error has been processed by the X server." msgid "--sync Call XSynchronize (display, True) after the Xserver connection has been established. This makes debugging X protocol errors easier, because X request buffering will be disabled and X errors will be received immediately after the protocol request that generated the error has been processed by the X server." msgstr "--sync Appel XSynchronize (affichage, Vrai) après que le raccordement au serveur X ait été établi. Ceci rend le déboguage des erreurs du protocole X plus faciles, parce que les demandes de buffer par X sont désactivé et les erreurs de X seront reçu immédiatement après la demande de protocole qui a produit l'erreur traité par le serveur X." #: lclstrconsts.rshelpalreadyregistered msgid "%s: Already registered" msgstr "%s : Déjà enregistré" #: lclstrconsts.rshelpcontextnotfound #, fuzzy #| msgid "Help Context not found" msgid "A help database was found for this topic, but this topic was not found" msgstr "Contexte d'aide non trouvé" #: lclstrconsts.rshelpdatabasenotfound #, fuzzy #| msgid "Help Database not found" msgid "There is no help database installed for this topic" msgstr "Base de données d'aide non trouvée" #: lclstrconsts.rshelperror msgid "Help Error" msgstr "Erreur d'aide" #: lclstrconsts.rshelphelpcontextnotfound msgid "Help context %s not found." msgstr "Contexte d'aide %s non trouvé." #: lclstrconsts.rshelphelpcontextnotfoundindatabase msgid "Help context %s not found in Database %s%s%s." msgstr "Contexte d'aide %s non trouvé dans la base de données %s%s%s." #: lclstrconsts.rshelphelpdatabasedidnotfoundaviewerforahelppageoftype msgid "Help Database %s%s%s did not found a viewer for a help page of type %s" msgstr "La base de données d'aide %s%s%s n'a pas trouvé une visionneuse pour une page d'aide du type %s" #: lclstrconsts.rshelphelpdatabasenotfound msgid "Help Database %s%s%s not found" msgstr "Base de données d'aide %s%s%s non trouvée" #: lclstrconsts.rshelphelpfordirectivenotfound msgid "Help for directive %s%s%s not found." msgstr "" #: lclstrconsts.rshelphelpfordirectivenotfoundindatabase msgid "Help for directive %s%s%s not found in Database %s%s%s." msgstr "" #: lclstrconsts.rshelphelpkeywordnotfound msgid "Help keyword %s%s%s not found." msgstr "Mot-clé d'aide %s%s%s non trouvé." #: lclstrconsts.rshelphelpkeywordnotfoundindatabase msgid "Help keyword %s%s%s not found in Database %s%s%s." msgstr "Mot-clé d'aide %s%s%s non trouvé dans la base de données %s%s%s. " #: lclstrconsts.rshelphelpnodehasnohelpdatabase msgid "Help node %s%s%s has no Help Database" msgstr "Le noeud d'aide %s%s%s n'a aucune base de données" #: lclstrconsts.rshelpnohelpfoundforsource msgid "No help found for line %d, column %d of %s." msgstr "Aucune aide trouvé pour la ligne %d, colonne %d de %s." #: lclstrconsts.rshelpnohelpnodesavailable #, fuzzy #| msgid "No help nodes available" msgid "No help entries available for this topic" msgstr "Aucuns noeuds d'aide disponibles" #: lclstrconsts.rshelpnotfound #, fuzzy #| msgid "Help not found" msgid "No help found for this topic" msgstr "Aide non trouvé" #: lclstrconsts.rshelpnotregistered msgid "%s: Not registered" msgstr "%s : Non enregistré" #: lclstrconsts.rshelpselectorerror msgid "Help Selector Error" msgstr "Erreur de sélecteur d'aide" #: lclstrconsts.rshelpthereisnoviewerforhelptype msgid "There is no viewer for help type %s%s%s" msgstr "Il n'y a aucune visionneuse pour ce type d'aide %s%s%s" #: lclstrconsts.rshelpviewererror msgid "Help Viewer Error" msgstr "Erreur de visionneuse d'aide" #: lclstrconsts.rshelpviewernotfound #, fuzzy #| msgid "Help Viewer not found" msgid "No viewer was found for this type of help content" msgstr "Visionneuse d'aide non trouvée" #: lclstrconsts.rshighlightcolorcaption msgid "Highlight" msgstr "" #: lclstrconsts.rshighlighttextcolorcaption msgid "Highlight Text" msgstr "" #: lclstrconsts.rshotlightcolorcaption msgid "Hot Light" msgstr "" #: lclstrconsts.rsicns #, fuzzy #| msgid "OSX Icon Resource" msgid "Mac OS X Icon" msgstr "Osx icône ressource" #: lclstrconsts.rsicon msgid "Icon" msgstr "Icône" #: lclstrconsts.rsiconimageempty msgid "Icon image cannot be empty" msgstr "L'image icône ne peut pas être vide" #: lclstrconsts.rsiconimageformat msgid "Icon image must have the same format" msgstr "L'image d'icône doit avoir le même format" #: lclstrconsts.rsiconimageformatchange msgid "Cannot change format of icon image" msgstr "Impossible de modifier le format d'image de l'icône" #: lclstrconsts.rsiconimagesize msgid "Icon image must have the same size" msgstr "L'image d'icône doit avoir la même taille" #: lclstrconsts.rsiconimagesizechange msgid "Cannot change size of icon image" msgstr "Impossible de modifier la taille d'image de l'icône" #: lclstrconsts.rsiconnocurrent msgid "Icon has no current image" msgstr "L'icône n'a pas d'image" #: lclstrconsts.rsinactivebordercolorcaption msgid "Inactive Border" msgstr "" #: lclstrconsts.rsinactivecaptioncolorcaption msgctxt "lclstrconsts.rsinactivecaptioncolorcaption" msgid "Inactive Caption" msgstr "" #: lclstrconsts.rsinactivecaptiontext msgctxt "lclstrconsts.rsinactivecaptiontext" msgid "Inactive Caption" msgstr "" #: lclstrconsts.rsindexoutofbounds msgid "%s Index %d out of bounds 0 .. %d" msgstr "%s Index %d hors des limites 0 .. %d " #: lclstrconsts.rsindexoutofrange msgid "Index Out of range Cell[Col=%d Row=%d]" msgstr "Index hors limites Cell[Col=%d Row=%d]" #: lclstrconsts.rsinfobkcolorcaption msgid "Info Background" msgstr "" #: lclstrconsts.rsinfotextcolorcaption msgid "Info Text" msgstr "" #: lclstrconsts.rsinsertrecordhint msgctxt "lclstrconsts.rsinsertrecordhint" msgid "Insert" msgstr "Insérer" #: lclstrconsts.rsinvaliddate msgid "Invalid Date : %s" msgstr "Date invalide : %s" #: lclstrconsts.rsinvaliddaterangehint msgid "Invalid Date: %s. Must be between %s and %s" msgstr "Date invalide : %s. Doit être entre %s et %s " #: lclstrconsts.rsinvalidformobjectstream msgid "invalid Form object stream" msgstr "Flux d'objet fiche invalide" #: lclstrconsts.rsinvalidpropertyvalue msgid "Invalid property value" msgstr "Valeur de propriété incorrecte" #: lclstrconsts.rsinvalidstreamformat msgid "Invalid stream format" msgstr "Format de flux incorrecte" #: lclstrconsts.rsisalreadyassociatedwith msgid "%s is already associated with %s" msgstr "%s est déjà associé avec %s" #: lclstrconsts.rsjpeg msgid "Joint Picture Expert Group" msgstr "Joint Picture Expert Group" #: lclstrconsts.rslastrecordhint msgid "Last" msgstr "" #: lclstrconsts.rslimecolorcaption msgid "Lime" msgstr "" #: lclstrconsts.rslistindexexceedsbounds msgid "List index exceeds bounds (%d)" msgstr "Index de liste hors limites (%d)" #: lclstrconsts.rslistmustbeempty msgid "List must be empty" msgstr "La liste doit être vide" #: lclstrconsts.rsmarooncolorcaption msgid "Maroon" msgstr "" #: lclstrconsts.rsmbabort msgid "Abort" msgstr "Abandonner" #: lclstrconsts.rsmball msgid "&All" msgstr "&Tout" #: lclstrconsts.rsmbcancel msgctxt "lclstrconsts.rsmbcancel" msgid "Cancel" msgstr "Annuler" #: lclstrconsts.rsmbclose msgid "&Close" msgstr "&Fermer" #: lclstrconsts.rsmbhelp msgid "&Help" msgstr "&Aide" #: lclstrconsts.rsmbignore msgid "&Ignore" msgstr "&Ignorer" #: lclstrconsts.rsmbno msgid "&No" msgstr "&Non" #: lclstrconsts.rsmbnotoall msgid "No to all" msgstr "Non pour tout" #: lclstrconsts.rsmbok msgid "&OK" msgstr "&OK" #: lclstrconsts.rsmbopen msgid "&Open" msgstr "" #: lclstrconsts.rsmbretry msgid "&Retry" msgstr "Réessayer" #: lclstrconsts.rsmbsave msgid "&Save" msgstr "" #: lclstrconsts.rsmbunlock msgid "&Unlock" msgstr "" #: lclstrconsts.rsmbyes msgid "&Yes" msgstr "&Oui" #: lclstrconsts.rsmbyestoall msgid "Yes to &All" msgstr "Oui à &tous" #: lclstrconsts.rsmedgraycolorcaption msgid "Medium Gray" msgstr "" #: lclstrconsts.rsmenubarcolorcaption msgid "Menu Bar" msgstr "" #: lclstrconsts.rsmenucolorcaption msgctxt "lclstrconsts.rsmenucolorcaption" msgid "Menu" msgstr "Menu" #: lclstrconsts.rsmenuhighlightcolorcaption msgid "Menu Highlight" msgstr "" #: lclstrconsts.rsmenutextcolorcaption msgid "Menu Text" msgstr "" #: lclstrconsts.rsmodified msgid " modified " msgstr " modifier" #: lclstrconsts.rsmoneygreencolorcaption msgid "Money Green" msgstr "" #: lclstrconsts.rsmtauthentication msgid "Authentication" msgstr "" #: lclstrconsts.rsmtconfirmation msgid "Confirmation" msgstr "Confirmation" #: lclstrconsts.rsmtcustom msgid "Custom" msgstr "Personnalisé" #: lclstrconsts.rsmterror msgctxt "lclstrconsts.rsmterror" msgid "Error" msgstr "Erreur" #: lclstrconsts.rsmtinformation msgid "Information" msgstr "Information" #: lclstrconsts.rsmtwarning msgid "Warning" msgstr "Avertissement" #: lclstrconsts.rsnavycolorcaption msgid "Navy" msgstr "" #: lclstrconsts.rsnextrecordhint msgctxt "lclstrconsts.rsnextrecordhint" msgid "Next" msgstr "Suivant" #: lclstrconsts.rsnonecolorcaption msgid "None" msgstr "" #: lclstrconsts.rsnotavalidgridfile msgid "Not a valid grid file" msgstr "N'est pas un fichier de grille correct" #: lclstrconsts.rsnowidgetset msgid "No widgetset object. Please check if the unit \"interfaces\" was added to the programs uses clause." msgstr "Aucun objet widgetset. Vérifier si l'unité \"interfaces\" est ajouté à la clause uses du programme." #: lclstrconsts.rsolivecolorcaption msgid "Olive" msgstr "" #: lclstrconsts.rspickdate msgid "Select a date" msgstr "Choisir une date" #: lclstrconsts.rspixmap msgid "Pixmap" msgstr "Pixmap" #: lclstrconsts.rsportablebitmap msgid "Portable BitMap" msgstr "Portable BitMap" #: lclstrconsts.rsportablegraymap msgid "Portable GrayMap" msgstr "Portable GrayMap" #: lclstrconsts.rsportablenetworkgraphic msgid "Portable Network Graphic" msgstr "Portable Network Graphic" #: lclstrconsts.rsportablepixmap msgid "Portable PixMap" msgstr "Portable PixMap" #: lclstrconsts.rspostrecordhint msgid "Post" msgstr "" #: lclstrconsts.rspressoktoignoreandriskdatacorruptionpresscanceltok #, fuzzy #| msgid "%s%sPress Ok to ignore and risk data corruption.%sPress Cancel to kill the program." msgid "%s%sPress OK to ignore and risk data corruption.%sPress Cancel to kill the program." msgstr "%s%s Pressez OK pour ignorer et risquer des données corruption.%s Pressez Annuler pour fermer le programme. " #: lclstrconsts.rspriorrecordhint msgctxt "lclstrconsts.rspriorrecordhint" msgid "Prior" msgstr "Précédent" #: lclstrconsts.rspromptonreplace msgid "Prompt on replace" msgstr "" #: lclstrconsts.rspropertydoesnotexist msgid "Property %s does not exist" msgstr "La propriété %s n'existe pas" #: lclstrconsts.rspurplecolorcaption msgid "Purple" msgstr "" #: lclstrconsts.rsqtoptiondograb msgid "-dograb (only under X11), running under a debugger can cause an implicit -nograb, use -dograb to override. Need QT_DEBUG." msgstr "" #: lclstrconsts.rsqtoptiongraphicsstyle msgid "-graphicssystem param, sets the backend to be used for on-screen widgets and QPixmaps. Available options are native, raster and opengl. OpenGL is still unstable." msgstr "" #: lclstrconsts.rsqtoptionnograb msgid "-nograb, tells Qt that it must never grab the mouse or the keyboard. Need QT_DEBUG." msgstr "" #: lclstrconsts.rsqtoptionreverse msgid "-reverse, sets the application's layout direction to Qt::RightToLeft." msgstr "" #: lclstrconsts.rsqtoptionsession msgid "-session session, restores the application from an earlier session." msgstr "" #: lclstrconsts.rsqtoptionstyle msgid "-style style or -style=style, sets the application GUI style. Possible values are motif, windows, and platinum. If you compiled Qt with additional styles or have additional styles as plugins these will be available to the -style command line option. NOTE: Not all styles are available on all platforms. If style param does not exist Qt will start an application with default common style (windows)." msgstr "" #: lclstrconsts.rsqtoptionstylesheet msgid "-stylesheet stylesheet or -stylesheet=stylesheet, sets the application Style Sheet. The value must be a path to a file that contains the Style Sheet. Note: Relative URLs in the Style Sheet file are relative to the Style Sheet file's path." msgstr "" #: lclstrconsts.rsqtoptionsync msgid "-sync (only under X11), switches to synchronous mode for debugging." msgstr "" #: lclstrconsts.rsqtoptionwidgetcount msgid "-widgetcount, prints debug message at the end about number of widgets left undestroyed and maximum number of widgets existed at the same time." msgstr "" #: lclstrconsts.rsqtoptionx11bgcolor msgid "-bg or -background color, sets the default background color and an application palette (light and dark shades are calculated)." msgstr "" #: lclstrconsts.rsqtoptionx11btncolor msgid "-btn or -button color, sets the default button color." msgstr "" #: lclstrconsts.rsqtoptionx11cmap msgid "-cmap, causes the application to install a private color map on an 8-bit display." msgstr "" #: lclstrconsts.rsqtoptionx11display msgid "-display display, sets the X display (default is $DISPLAY)." msgstr "" #: lclstrconsts.rsqtoptionx11fgcolor msgid "-fg or -foreground color, sets the default foreground color." msgstr "" #: lclstrconsts.rsqtoptionx11font msgid "-fn or -font font, defines the application font. The font should be specified using an X logical font description." msgstr "" #: lclstrconsts.rsqtoptionx11geometry msgid "-geometry geometry, sets the client geometry of the first window that is shown." msgstr "" #: lclstrconsts.rsqtoptionx11im msgid "-im, sets the input method server (equivalent to setting the XMODIFIERS environment variable)." msgstr "" #: lclstrconsts.rsqtoptionx11inputstyle msgid "-inputstyle, defines how the input is inserted into the given widget, e.g. onTheSpot makes the input appear directly in the widget, while overTheSpot makes the input appear in a box floating over the widget and is not inserted until the editing is done." msgstr "" #: lclstrconsts.rsqtoptionx11name msgid "-name name, sets the application name." msgstr "" #: lclstrconsts.rsqtoptionx11ncols msgid "-ncols count, limits the number of colors allocated in the color cube on an 8-bit display, if the application is using the QApplication::ManyColor color specification. If count is 216 then a 6x6x6 color cube is used (i.e. 6 levels of red, 6 of green, and 6 of blue); for other values, a cube approximately proportional to a 2x3x1 cube is used." msgstr "" #: lclstrconsts.rsqtoptionx11title msgid "-title title, sets the application title." msgstr "" #: lclstrconsts.rsqtoptionx11visual msgid "-visual TrueColor, forces the application to use a TrueColor visual on an 8-bit display." msgstr "" #: lclstrconsts.rsrasterimageendupdate msgid "Endupdate while no update in progress" msgstr "" #: lclstrconsts.rsrasterimagesaveinupdate msgid "Cannot save image while update in progress" msgstr "" #: lclstrconsts.rsrasterimageupdateall msgid "Cannot begin update all when canvas only update in progress" msgstr "" #: lclstrconsts.rsredcolorcaption msgid "Red" msgstr "" #: lclstrconsts.rsrefreshrecordshint msgid "Refresh" msgstr "" #: lclstrconsts.rsreplace msgid "Replace" msgstr "Remplacer" #: lclstrconsts.rsreplaceall msgid "Replace all" msgstr "Remplacer tous" #: lclstrconsts.rsresourcenotfound msgctxt "lclstrconsts.rsresourcenotfound" msgid "Resource %s not found" msgstr "Ressource %s non trouve" #: lclstrconsts.rsscrollbarcolorcaption msgid "ScrollBar" msgstr "" #: lclstrconsts.rsscrollbaroutofrange msgid "ScrollBar property out of range" msgstr "Propriété ScrollBar hors limites" #: lclstrconsts.rsselectcolortitle msgid "Select color" msgstr "Choisir une couleur" #: lclstrconsts.rsselectfonttitle msgid "Select a font" msgstr "Choisir une police" #: lclstrconsts.rssilvercolorcaption msgid "Silver" msgstr "" #: lclstrconsts.rssize msgid " size " msgstr " taille" #: lclstrconsts.rsskybluecolorcaption msgid "Sky Blue" msgstr "" #: lclstrconsts.rstcustomtabcontrolaccessibilitydescription msgid "A control with tabs" msgstr "" #: lclstrconsts.rstealcolorcaption msgid "Teal" msgstr "" #: lclstrconsts.rstext msgid "Text" msgstr "Texte" #: lclstrconsts.rstiff msgid "Tagged Image File Format" msgstr "" #: lclstrconsts.rstpanelaccessibilitydescription msgctxt "lclstrconsts.rstpanelaccessibilitydescription" msgid "Panel" msgstr "" #: lclstrconsts.rstsplitteraccessibilitydescription msgctxt "lclstrconsts.rstsplitteraccessibilitydescription" msgid "A grip to control how much size to give two parts of an area" msgstr "" #: lclstrconsts.rsttreeviewaccessibilitydescription msgctxt "lclstrconsts.rsttreeviewaccessibilitydescription" msgid "A tree of items" msgstr "" #: lclstrconsts.rsunabletoloaddefaultfont msgid "Unable to load default font" msgstr "Impossible de charger la police par défaut" #: lclstrconsts.rsunknownerrorpleasereportthisbug msgid "Unknown Error, please report this bug" msgstr "Erreur inconnue, rapporter ce bogue svp" #: lclstrconsts.rsunknownpictureextension msgid "Unknown picture extension" msgstr "Type d'image inconnu" #: lclstrconsts.rsunknownpictureformat msgid "Unknown picture format" msgstr "" #: lclstrconsts.rsunsupportedbitmapformat msgid "Unsupported bitmap format." msgstr "Format de bitmap non supporté." #: lclstrconsts.rsunsupportedclipboardformat msgid "Unsupported clipboard format: %s" msgstr "Format %s de presse-papiers non supporté" #: lclstrconsts.rswarningunreleaseddcsdump msgid " WARNING: There are %d unreleased DCs, a detailed dump follows:" msgstr " ATTENTION : Il y a %d DCs non libres, en voici le détail : " #: lclstrconsts.rswarningunreleasedgdiobjectsdump msgid " WARNING: There are %d unreleased GDIObjects, a detailed dump follows:" msgstr " ATTENTION : Il y a %d GDIObjects non libres, en voici le détail : " #: lclstrconsts.rswarningunreleasedmessagesinqueue msgid " WARNING: There are %d messages left in the queue! I'll free them" msgstr " ATTENTION : il y a %d messages en file d'attente ! Ils seront supprimés." #: lclstrconsts.rswarningunreleasedtimerinfos msgid " WARNING: There are %d TimerInfo structures left, I'll free them" msgstr " ATTENTION : Il y a %d structures TimerInfo, elles seront supprimés." #: lclstrconsts.rswarningunremovedpaintmessages msgid " WARNING: There are %s unremoved LM_PAINT/LM_GtkPAINT message links left." msgstr " ATTENTION : Il y a %s non enlevé LM_PAINT/LM_GtkPAINT liens de message." #: lclstrconsts.rswhitecolorcaption msgid "White" msgstr "" #: lclstrconsts.rswholewordsonly msgid "Whole words only" msgstr "Mots entiers seulement " #: lclstrconsts.rswin32error msgid "Error:" msgstr "Erreur:" #: lclstrconsts.rswin32warning msgid "Warning:" msgstr "Attention :" #: lclstrconsts.rswindowcolorcaption msgid "Window" msgstr "" #: lclstrconsts.rswindowframecolorcaption msgid "Window Frame" msgstr "" #: lclstrconsts.rswindowtextcolorcaption msgid "Window Text" msgstr "" #: lclstrconsts.rsyellowcolorcaption msgid "Yellow" msgstr "" #: lclstrconsts.scannotfocus msgid "Cannot focus a disabled or invisible window" msgstr "Impossible de focaliser une fenêtre invisible ou désactive" #: lclstrconsts.sduplicatemenus msgid "Duplicate menus" msgstr "Doublons de Menus" #: lclstrconsts.sinvalidactioncreation msgid "Invalid action creation" msgstr "Création d'action non valide" #: lclstrconsts.sinvalidactionenumeration msgid "Invalid action enumeration" msgstr "Enumration d'action non valide" #: lclstrconsts.sinvalidactionregistration msgid "Invalid action registration" msgstr "Référencement d'action non valide" #: lclstrconsts.sinvalidactionunregistration msgid "Invalid action unregistration" msgstr "Déréférencement d'action non valide" #: lclstrconsts.sinvalidcharset msgid "The char set in mask \"%s\" is not valid!" msgstr "Le caractère placer dans le masque \"%s\" n'est pas valide !" #: lclstrconsts.sinvalidimagesize msgid "Invalid image size" msgstr "Taille d'image non valide" #: lclstrconsts.sinvalidindex msgid "Invalid ImageList Index" msgstr "Index de liste d'images non valide" #: lclstrconsts.smaskeditnomatch msgid "The current text does not match the specified mask." msgstr "" #: lclstrconsts.smenuindexerror msgid "Menu index out of range" msgstr "Index de menu hors limites" #: lclstrconsts.smenuitemisnil msgid "MenuItem is nil" msgstr "MenuItem n'est pas assigné (nil)" #: lclstrconsts.smenunotfound msgid "Sub-menu is not in menu" msgstr "Le sous-menu n'est pas dans le menu" #: lclstrconsts.smkcalt msgid "Alt+" msgstr "" #: lclstrconsts.smkcbksp msgid "BkSp" msgstr "" #: lclstrconsts.smkcctrl msgid "Ctrl+" msgstr "" #: lclstrconsts.smkcdel msgid "Del" msgstr "" #: lclstrconsts.smkcdown msgctxt "lclstrconsts.smkcdown" msgid "Down" msgstr "Bas" #: lclstrconsts.smkcend msgctxt "lclstrconsts.smkcend" msgid "End" msgstr "Fin" #: lclstrconsts.smkcenter msgid "Enter" msgstr "" #: lclstrconsts.smkcesc msgid "Esc" msgstr "" #: lclstrconsts.smkchome msgctxt "lclstrconsts.smkchome" msgid "Home" msgstr "Maison" #: lclstrconsts.smkcins msgid "Ins" msgstr "" #: lclstrconsts.smkcleft msgctxt "lclstrconsts.smkcleft" msgid "Left" msgstr "Gauche" #: lclstrconsts.smkcmeta msgid "Meta+" msgstr "" #: lclstrconsts.smkcpgdn msgid "PgDn" msgstr "" #: lclstrconsts.smkcpgup msgid "PgUp" msgstr "" #: lclstrconsts.smkcright msgctxt "lclstrconsts.smkcright" msgid "Right" msgstr "Droite" #: lclstrconsts.smkcshift msgid "Shift+" msgstr "" #: lclstrconsts.smkcspace msgid "Space" msgstr "" #: lclstrconsts.smkctab msgctxt "lclstrconsts.smkctab" msgid "Tab" msgstr "Étiquette" #: lclstrconsts.smkcup msgctxt "lclstrconsts.smkcup" msgid "Up" msgstr "Haut" #: lclstrconsts.snomdiform msgid "No MDI form present." msgstr "Aucune fiche MDI présente" #: lclstrconsts.snotimers msgid "No timers available" msgstr "Aucun temporisateur disponible" #: lclstrconsts.sparexpected msgid "Wrong token type: %s expected" msgstr "" #: lclstrconsts.sparinvalidfloat msgid "Invalid floating point number: %s" msgstr "Nombre à virgule flottante non valide : %s" #: lclstrconsts.sparinvalidinteger msgid "Invalid integer number: %s" msgstr "Nombre entier non valide : %s" #: lclstrconsts.sparlocinfo msgid " (at %d,%d, stream offset %d)" msgstr "" #: lclstrconsts.sparunterminatedbinvalue msgid "Unterminated byte value" msgstr "" #: lclstrconsts.sparunterminatedstring msgid "Unterminated string" msgstr "Chaîne non terminé" #: lclstrconsts.sparwrongtokensymbol msgid "Wrong token symbol: %s expected but %s found" msgstr "" #: lclstrconsts.sparwrongtokentype msgid "Wrong token type: %s expected but %s found" msgstr "" optgeo-2.21/lang/optgeo.en.po0000750000175000017500000053231612247340104016315 0ustar georgeskgeorgeskmsgid "mais cela n'a pas de sens pour un rayon unique.mais cela n'a pas de sens pour un rayon unique.ambian et longueurs d'onde." msgstr "Content-Type: text/plain; charset=UTF-8medium and wavelength" #: tform1.afficherlagrille1.caption msgctxt "tform1.afficherlagrille1.caption" msgid "Afficher la grille" msgstr "Show grid" #: tform1.afficherlesangles1.caption msgctxt "tform1.afficherlesangles1.caption" msgid "Afficher les angles" msgstr "Show angles" #: tform1.aide1.caption msgctxt "tform1.aide1.caption" msgid "Aide" msgstr "Help" #: tform1.aidesuroptgeo1.caption msgctxt "tform1.aidesuroptgeo1.caption" msgid "Aide sur OptGeo" msgstr "Help on Optgeo" #: tform1.ajouter1.caption msgctxt "tform1.ajouter1.caption" msgid "Ajouter" msgstr "Add" #: tform1.ajusterautomatiquement1.caption msgctxt "tform1.ajusterautomatiquement1.caption" msgid "Ajuster automatiquement à la plus petite taille" msgstr "Adjust automatically to smallest size" #: tform1.apropos2.caption msgctxt "tform1.apropos2.caption" msgid "A propos" msgstr "About" #: tform1.associerlesfichiersoptavecoptgeo1.caption msgctxt "tform1.associerlesfichiersoptavecoptgeo1.caption" msgid "Associer les fichiers .opt avec OptGeo" msgstr "Associate .opt file with Optgeo" #: tform1.attractiondelagrille1.caption msgctxt "tform1.attractiondelagrille1.caption" msgid "Attraction de la grille" msgstr "Attract (snap) to grid" #: tform1.basederegistre1.caption msgctxt "tform1.basederegistre1.caption" msgid "Base de registre" msgstr "Registry" #: tform1.boutonangle.hint msgctxt "tform1.boutonangle.hint" msgid "Mesurer un angle" msgstr "Angle measurement" #: tform1.boutonconiqueconcave.hint msgctxt "tform1.boutonconiqueconcave.hint" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) concave" msgstr "Add a parabolic, elliptic or hyperbolic concave mirror" #: tform1.boutonconiqueconvexe.hint msgctxt "tform1.boutonconiqueconvexe.hint" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) convexe" msgstr "Add a parabolic, elliptic or hyperbolic convex mirror" #: tform1.boutondia.hint msgctxt "tform1.boutondia.hint" msgid "Ajouter un diaphragme à iris" msgstr "Add an iris diaphragm" #: tform1.boutondistance.hint msgctxt "tform1.boutondistance.hint" msgid "Mesurer la distance entre deux points" msgstr "Measurement of distance between two points" #: tform1.boutonecran.hint msgctxt "tform1.boutonecran.hint" msgid "Ajouter un écran" msgstr "Add a screen" #: tform1.boutonfantome.hint msgctxt "tform1.boutonfantome.hint" msgid "Cacher des segments de rayon" msgstr "Hide segments of ray" #: tform1.boutonfleche.hint msgctxt "tform1.boutonfleche.hint" msgid "Ajouter un trait, une fléche..." msgstr "Add a line, arrow..." #: tform1.boutonlec.hint msgctxt "tform1.boutonlec.hint" msgid "Ajouter une lentille épaisse" msgstr "Add a thick lens" #: tform1.boutonlmc.hint msgctxt "tform1.boutonlmc.hint" msgid "Ajouter une lentille mince convergente paraxiale" msgstr "Add a converging thin lens (paraxial approx.)" #: tform1.boutonlmd.hint msgctxt "tform1.boutonlmd.hint" msgid "Ajouter une lentille mince divergente paraxiale" msgstr "Add a diverging thin lens (paraxial approx.)" #: tform1.boutonlsr.hint msgctxt "tform1.boutonlsr.hint" msgid "Ajouter une lame semi-réfléchissante" msgstr "Add a semi-reflective mirror" #: tform1.boutonmiroirplan.hint msgctxt "tform1.boutonmiroirplan.hint" msgid "Ajouter un miroir plan" msgstr "Add a plane mirror" #: tform1.boutonmscepa.hint msgctxt "tform1.boutonmscepa.hint" msgid "Ajouter un miroir sphérique convexe paraxial" msgstr "Add a convex spherical mirror (paraxial approx.)" #: tform1.boutonmscere.hint msgctxt "tform1.boutonmscere.hint" msgid "Ajouter un miroir sphérique convexe réel" msgstr "Add a real convex spherical mirror " #: tform1.boutonmscopa.hint msgctxt "tform1.boutonmscopa.hint" msgid "Ajouter un miroir sphérique concave paraxial" msgstr "Add a concave spherical mirror (paraxial approx.)" #: tform1.boutonmscore.hint msgctxt "tform1.boutonmscore.hint" msgid "Ajouter un miroir sphérique concave réel" msgstr "Add a real concave spherical mirror" #: tform1.boutonoeil.hint msgctxt "tform1.boutonoeil.hint" msgid "Ajouter un oeil stylisé" msgstr "Add a stylistic eye" #: tform1.boutonondeplane.hint msgctxt "tform1.boutonondeplane.hint" msgid "Ajouter une onde plane" msgstr "Add a plane wave" #: tform1.boutonpoly.hint msgctxt "tform1.boutonpoly.hint" msgid "Ajouter un polygône réfractant" msgstr "Add a refractive polygone" #: tform1.boutonpolycercle.hint msgctxt "tform1.boutonpolycercle.hint" msgid "Ajouter une polycercle réfractant" msgstr "Add a refractive polycircle" #: tform1.boutonprisme.hint msgctxt "tform1.boutonprisme.hint" msgid "Ajouter un prisme isocéle" msgstr "Add a isosceles prism" #: tform1.boutonrayon.hint msgctxt "tform1.boutonrayon.hint" msgid "Ajouter un rayon" msgstr "Add a single ray" #: tform1.boutonsourceponctuelle.hint msgctxt "tform1.boutonsourceponctuelle.hint" msgid "Ajouter un objet ponctuel réel" msgstr "Add a real point object" #: tform1.boutonsphere.hint msgctxt "tform1.boutonsphere.hint" msgid "Ajouter une sphère réfractante" msgstr "Add a refractive sphere" #: tform1.boutonspv.hint msgctxt "tform1.boutonspv.hint" msgid "Ajouter un objet ponctuel virtuel" msgstr "Add a virtual point object" #: tform1.boutontexte.caption msgctxt "tform1.boutontexte.caption" msgid "A" msgstr "A" #: tform1.boutontexte.hint msgctxt "tform1.boutontexte.hint" msgid "Ajouter un texte sur le dessin" msgstr "Add text to the drawing" #: tform1.caption msgctxt "tform1.caption" msgid "OptGeo" msgstr "" #: tform1.cocheangles.caption msgctxt "tform1.cocheangles.caption" msgid "Angles d'incid. et de réfr." msgstr "Angles of inc. and refr." #: tform1.cocheattraction.caption msgctxt "tform1.cocheattraction.caption" msgid "Attraction" msgstr "Attract (snap) to grid" #: tform1.cochegrille.caption msgctxt "tform1.cochegrille.caption" msgid "Grille" msgstr "Grid" #: tform1.cochenormale.caption msgctxt "tform1.cochenormale.caption" msgid "Normales" msgstr "Normals" #: tform1.combozoom.hint msgctxt "tform1.combozoom.hint" msgid "Facteur de zoom" msgstr "Zoom factor" #: tform1.commenatiresurlasimulation1.caption msgctxt "tform1.commenatiresurlasimulation1.caption" msgid "Commentaire sur la simulation" msgstr "Comments on the simulation" #: tform1.contacterlauteur1.caption msgctxt "tform1.contacterlauteur1.caption" msgid "Contacter l'auteur" msgstr "Contact author" #: tform1.copier1.caption msgctxt "tform1.copier1.caption" msgid "Copier simulation dans le presse papier" msgstr "Copy simulation to the clipboard" #: tform1.couleurdefond1.caption msgctxt "tform1.couleurdefond1.caption" msgid "Couleur de fond" msgstr "Background color" #: tform1.dfinirlerpertoirepersonnel1.caption msgctxt "tform1.dfinirlerpertoirepersonnel1.caption" msgid "Définir le répertoire personnel" msgstr "Define personnal directory" #: tform1.diaphragme1.caption msgctxt "tform1.diaphragme1.caption" msgid "Diaphragme" msgstr "Diaphragm" #: tform1.divers1.caption msgctxt "tform1.divers1.caption" msgid "Divers" msgstr "Various" #: tform1.dplacerunlment1.caption msgctxt "tform1.dplacerunlment1.caption" msgid "Déplacer un élément" msgstr "Move an object" #: tform1.dsassocier1.caption msgctxt "tform1.dsassocier1.caption" msgid "Désassocier" msgstr "Unassociate" #: tform1.dudernierrpertoireutilis1.caption msgctxt "tform1.dudernierrpertoireutilis1.caption" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "from last directory other than those above" #: tform1.dupliquerunlment1.caption msgctxt "tform1.dupliquerunlment1.caption" msgid "Dupliquer un élément" msgstr "Duplicate an element" #: tform1.durpertoireexemples1.caption msgctxt "tform1.durpertoireexemples1.caption" msgid "de mon répertoire personnel" msgstr "from my personnal directory" #: tform1.durpertoireexemples2.caption msgctxt "tform1.durpertoireexemples2.caption" msgid "du répertoire \"exemples\"" msgstr "from \"examples\" directory" #: tform1.ecran1.caption msgctxt "tform1.ecran1.caption" msgid "Ecran" msgstr "Screen" #: tform1.editerlecommentairedelasimulation1.caption msgctxt "tform1.editerlecommentairedelasimulation1.caption" msgid "Editer le commentaire de la simulation" msgstr "Edit the comments of the simulation" #: tform1.edition1.caption msgctxt "tform1.edition1.caption" msgid "Edition" msgstr "Edit" #: tform1.elementschoisir2.caption msgctxt "tform1.elementschoisir2.caption" msgid "Eléments à choisir" msgstr "Chosen Objects" #: tform1.empennagedesrayons1.caption msgctxt "tform1.empennagedesrayons1.caption" msgid "Empennage des rayons" msgstr "Ray arrows" #: tform1.enregistrersimulation1.caption msgctxt "tform1.enregistrersimulation1.caption" msgid "Enregistrer simulation sous" msgstr "Save simulation as" #: tform1.enregistrersimulation2.caption msgctxt "tform1.enregistrersimulation2.caption" msgid "Enregistrer simulation" msgstr "Save simulation" #: tform1.fichier1.caption msgctxt "tform1.fichier1.caption" msgid "Fichier" msgstr "File" #: tform1.grille1.caption msgctxt "tform1.grille1.caption" msgid "Options" msgstr "" #: tform1.grouperdeslments1.caption msgctxt "tform1.grouperdeslments1.caption" msgid "Grouper des éléments" msgstr "Group objects together" #: tform1.imprimer1.caption msgctxt "tform1.imprimer1.caption" msgid "Imprimer" msgstr "Print" #: tform1.joindreparunarcdecercle1.caption msgctxt "tform1.joindreparunarcdecercle1.caption" msgid "Joindre par un arc de cercle" msgstr "Join by a circle arc" #: tform1.joindreparunsegment1.caption msgctxt "tform1.joindreparunsegment1.caption" msgid "Joindre par un segment" msgstr "Join by a segment" #: tform1.lamesemirflchissante1.caption msgctxt "tform1.lamesemirflchissante1.caption" msgid "Lame semi réfléchissante" msgstr "Semi reflecting mirror" #: tform1.lentille1.caption msgctxt "tform1.lentille1.caption" msgid "Lentille" msgstr "Lens" #: tform1.lentilleminceconvergente1.caption msgctxt "tform1.lentilleminceconvergente1.caption" msgid "Lentille mince convergente" msgstr "Converging thin lens" #: tform1.lentillemincedivergente1.caption msgctxt "tform1.lentillemincedivergente1.caption" msgid "Lentille mince divergente" msgstr "Diverging thin lens" #: tform1.licensegpl1.caption msgctxt "tform1.licensegpl1.caption" msgid "License GPL" msgstr "GPL Licence" #: tform1.manuellement1.caption msgctxt "tform1.manuellement1.caption" msgid "Manuellement" msgstr "Manually" #: tform1.menuitem1.caption msgctxt "tform1.menuitem1.caption" msgid "Exporter graphe" msgstr "Export graph" #: tform1.menuitem10.caption msgctxt "tform1.menuitem10.caption" msgid "de mon répertoire personnel" msgstr "from my personnal directory" #: tform1.menuitem11.caption msgctxt "tform1.menuitem11.caption" msgid "du répertoire \"exemples\"" msgstr "from \"examples\" directory" #: tform1.menuitem12.caption msgctxt "tform1.menuitem12.caption" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "from last directory other than those above" #: tform1.menuitem14.caption msgid "Historique des versions" msgstr "Version notes" #: tform1.menuitem2.caption msgctxt "tform1.menuitem2.caption" msgid "-" msgstr "" #: tform1.menuitem3.caption msgctxt "tform1.menuitem3.caption" msgid "PNG" msgstr "" #: tform1.menuitem4.caption msgctxt "tform1.menuitem4.caption" msgid "JPG" msgstr "" #: tform1.menuitem5.caption msgctxt "tform1.menuitem5.caption" msgid "-" msgstr "" #: tform1.menuitem6.caption msgctxt "tform1.menuitem6.caption" msgid "Langue" msgstr "Language" #: tform1.menuitem7.caption msgctxt "tform1.menuitem7.caption" msgid "Indices du milieu ambiant" msgstr "Medium index" #: tform1.menuitem8.caption msgid "PS" msgstr "" #: tform1.menuitem9.caption msgctxt "tform1.menuitem9.caption" msgid "Superposer simulation" msgstr "Import simulation" #: tform1.menuitemreseau.caption msgctxt "tform1.menuitemreseau.caption" msgid "Réseau diffractant" msgstr "" #: tform1.menuprisme.caption msgctxt "tform1.menuprisme.caption" msgid "Prisme" msgstr "Prism" #: tform1.mesuredangle1.caption msgctxt "tform1.mesuredangle1.caption" msgid "Mesure d'angle" msgstr "Angle measurement" #: tform1.mesurededistance1.caption msgctxt "tform1.mesurededistance1.caption" msgid "Mesure de distance" msgstr "Distance measurement" #: tform1.miroircnique1.caption msgctxt "tform1.miroircnique1.caption" msgid "Miroir cônique" msgstr "Conical mirror" #: tform1.miroirplan2.caption msgctxt "tform1.miroirplan2.caption" msgid "Miroir plan" msgstr "Plane mirror" #: tform1.miroirsphriqueconcave1.caption msgctxt "tform1.miroirsphriqueconcave1.caption" msgid "Miroir sphérique concave" msgstr "Concave spherical mirror" #: tform1.miroirsphriqueconvergent1.caption msgctxt "tform1.miroirsphriqueconvergent1.caption" msgid "Miroir sphérique concave" msgstr "Concave spherical mirror" #: tform1.miroirsphriqueconvexe1.caption msgctxt "tform1.miroirsphriqueconvexe1.caption" msgid "Miroir sphérique convexe" msgstr "Convex spherical mirror" #: tform1.miroirsphriqueconvexe2.caption msgctxt "tform1.miroirsphriqueconvexe2.caption" msgid "Miroir sphérique convexe" msgstr "Convex spherical mirror" #: tform1.modifierdimensionsespacedetravail1.caption msgctxt "tform1.modifierdimensionsespacedetravail1.caption" msgid "Modifier les dimensions de l'espace de travail" msgstr "Modify workplace's width and height" #: tform1.n1.caption msgctxt "tform1.n1.caption" msgid "-" msgstr "" #: tform1.n10.caption msgctxt "tform1.n10.caption" msgid "-" msgstr "" #: tform1.n11.caption msgctxt "tform1.n11.caption" msgid "-" msgstr "" #: tform1.n12.caption msgctxt "tform1.n12.caption" msgid "-" msgstr "" #: tform1.n13.caption msgctxt "tform1.n13.caption" msgid "-" msgstr "" #: tform1.n14.caption msgctxt "tform1.n14.caption" msgid "-" msgstr "" #: tform1.n15.caption msgctxt "tform1.n15.caption" msgid "-" msgstr "" #: tform1.n16.caption msgctxt "tform1.n16.caption" msgid "-" msgstr "" #: tform1.n17.caption msgctxt "tform1.n17.caption" msgid "-" msgstr "" #: tform1.n18.caption msgctxt "tform1.n18.caption" msgid "-" msgstr "" #: tform1.n19.caption msgctxt "tform1.n19.caption" msgid "-" msgstr "" #: tform1.n2.caption msgctxt "tform1.n2.caption" msgid "-" msgstr "" #: tform1.n20.caption msgctxt "tform1.n20.caption" msgid "-" msgstr "" #: tform1.n21.caption msgctxt "tform1.n21.caption" msgid "-" msgstr "" #: tform1.n3.caption msgctxt "tform1.n3.caption" msgid "-" msgstr "" #: tform1.n4.caption msgctxt "tform1.n4.caption" msgid "-" msgstr "" #: tform1.n5.caption msgctxt "tform1.n5.caption" msgid "-" msgstr "" #: tform1.n6.caption msgctxt "tform1.n6.caption" msgid "-" msgstr "" #: tform1.n7.caption msgctxt "tform1.n7.caption" msgid "Afficher les normales" msgstr "Show surface normals" #: tform1.n8.caption msgctxt "tform1.n8.caption" msgid "-" msgstr "" #: tform1.n9.caption msgctxt "tform1.n9.caption" msgid "-" msgstr "" #: tform1.nouveau1.caption msgctxt "tform1.nouveau1.caption" msgid "Nouvelle simulation" msgstr "New simulation" #: tform1.oeilstylis1.caption msgctxt "tform1.oeilstylis1.caption" msgid "Oeil stylisé" msgstr "Stylised eye" #: tform1.ondeplane1.caption msgctxt "tform1.ondeplane1.caption" msgid "Onde plane" msgstr "Plane wave" #: tform1.optionsdelagrille1.caption msgctxt "tform1.optionsdelagrille1.caption" msgid "Options de la grille" msgstr "Grid's options" #: tform1.optionsdesnormales1.caption msgctxt "tform1.optionsdesnormales1.caption" msgid "Options des normales" msgstr "Options for normals" #: tform1.ouvrirsimulation1.caption msgctxt "tform1.ouvrirsimulation1.caption" msgid "Ouvrir simulation" msgstr "Open simulation" #: tform1.polyhdrerfractant1.caption msgctxt "tform1.polyhdrerfractant1.caption" msgid "Polyhèdre réfractant" msgstr "Refractive polyhedron" #: tform1.polysphrerfractante1.caption msgctxt "tform1.polysphrerfractante1.caption" msgid "Polysphère réfractante" msgstr "Refractive polysphere" #: tform1.prfrences1.caption msgctxt "tform1.prfrences1.caption" msgid "Préférences" msgstr "Preferences" #: tform1.propritsdunlment1.caption msgctxt "tform1.propritsdunlment1.caption" msgid "Propriétés d'un élément" msgstr "Properties on an element" #: tform1.quitter1.caption msgctxt "tform1.quitter1.caption" msgid "Quitter" msgstr "Exit" #: tform1.rayonsfantomes1.caption msgctxt "tform1.rayonsfantomes1.caption" msgid "Rayons fantomes" msgstr "Phantom rays" #: tform1.rayonunique1.caption msgctxt "tform1.rayonunique1.caption" msgid "Rayon unique" msgstr "Single ray" #: tform1.refaire1.caption msgctxt "tform1.refaire1.caption" msgid "Refaire" msgstr "Redo" #: tform1.rtablir1.caption msgctxt "tform1.rtablir1.caption" msgid "Annuler" msgstr "Cancel" #: tform1.siteweb1.caption msgctxt "tform1.siteweb1.caption" msgid "Site Web" msgstr "Website" #: tform1.source2.caption msgctxt "tform1.source2.caption" msgid "Source" msgstr "" #: tform1.sourceponctuelle1.caption msgctxt "tform1.sourceponctuelle1.caption" msgid "Objet ponctuel réel ou virtuel" msgstr "Real or virtual point source" #: tform1.speedbutton1.hint msgctxt "tform1.speedbutton1.hint" msgid "Ajouter (ou éditer) le commentaire de la simulation" msgstr "Add (or edit) comments to the simulation " #: tform1.speedbutton2.caption msgctxt "tform1.speedbutton2.caption" msgid "Coord." msgstr "Coord." #: tform1.speedbutton2.hint msgctxt "tform1.speedbutton2.hint" msgid "Afficher les coordonnées des segments" msgstr "Show the coordinates of the segments" #: tform1.sphrerfractante1.caption msgctxt "tform1.sphrerfractante1.caption" msgid "Sphère réfractante" msgstr "Refractive sphere" #: tform1.statictext1.caption msgctxt "tform1.statictext1.caption" msgid "Zoom:" msgstr "" #: tform1.statictext2.caption msgctxt "tform1.statictext2.caption" msgid "Miroirs:" msgstr "Mirrors:" #: tform1.statictext3.caption msgctxt "tform1.statictext3.caption" msgid "Sources:" msgstr "" #: tform1.statictext4.caption msgctxt "tform1.statictext4.caption" msgid "Dioptres:" msgstr "Diopters:" #: tform1.statictext5.caption msgctxt "tform1.statictext5.caption" msgid "Ecrans:" msgstr "Screens:" #: tform1.statictext6.caption msgctxt "tform1.statictext6.caption" msgid "Divers:" msgstr "Various:" #: tform1.statictext7.caption msgctxt "tform1.statictext7.caption" msgid "Afficher:" msgstr "Show:" #: tform1.statusbar1.panels[0].text msgid "X=" msgstr "" #: tform1.statusbar1.panels[1].text msgid "Y=" msgstr "" #: tform1.supprimerunlment1.caption msgctxt "tform1.supprimerunlment1.caption" msgid "Supprimer un élément" msgstr "Delete an element" #: tform1.surfacesdonde1.caption msgctxt "tform1.surfacesdonde1.caption" msgid "Surfaces d'onde" msgstr "Wavefronts" #: tform1.systmeoptique1.caption msgctxt "tform1.systmeoptique1.caption" msgid "Système optique idéal" msgstr "Ideal optical system" #: tform1.systmeoptiquerel1.caption msgctxt "tform1.systmeoptiquerel1.caption" msgid "Système optique réel" msgstr "Real optical system" #: tform1.textesurledessin1.caption msgctxt "tform1.textesurledessin1.caption" msgid "Texte sur le dessin" msgstr "Add text" #: tform1.toolbutton1.caption msgid "ToolButton1" msgstr "" #: tform1.toolbutton2.caption msgid "ToolButton2" msgstr "" #: tform1.toolbutton4.caption msgid "ToolButton4" msgstr "" #: tform1.toolbutton5.caption msgid "ToolButton5" msgstr "" #: tform1.toolbutton6.caption msgid "ToolButton6" msgstr "" #: tform1.toolbutton9.caption msgid "ToolButton9" msgstr "" #: tform1.tousleslments1.caption msgctxt "tform1.tousleslments1.caption" msgid "Tous les éléments" msgstr "All elements" #: tform1.traitflche1.caption msgctxt "tform1.traitflche1.caption" msgid "Trait, fléche..." msgstr "Line, arrow" #: tform_palette.boutondeplacement.caption msgctxt "tform_palette.boutondeplacement.caption" msgid "Déplacer" msgstr "Move" #: tform_palette.boutondeplacement.hint msgctxt "tform_palette.boutondeplacement.hint" msgid "Déplacer un élément existant: translation, rotation, changement focale ou rayon de courbure..." msgstr "Move an object: translation, rotation, focal point or radius of curvature..." #: tform_palette.boutondupliquer.caption msgctxt "tform_palette.boutondupliquer.caption" msgid "Dupliquer" msgstr "Duplicate" #: tform_palette.boutondupliquer.hint msgctxt "tform_palette.boutondupliquer.hint" msgid "Dupliquer un élément existant" msgstr "Duplicate an existing element" #: tform_palette.boutongroupe.caption msgctxt "tform_palette.boutongroupe.caption" msgid "Grouper" msgstr "Group" #: tform_palette.boutongroupe.hint msgctxt "tform_palette.boutongroupe.hint" msgid "Grouper des éléments existants pour les translater ensemble" msgstr "Group objects together in order to translate them together" #: tform_palette.boutonprop.caption msgctxt "tform_palette.boutonprop.caption" msgid "Propriétés" msgstr "Properties" #: tform_palette.boutonprop.hint msgctxt "tform_palette.boutonprop.hint" msgid "Propriétés d'un élément existant" msgstr "Properties of an existing element" #: tform_palette.boutonsuppression.caption msgctxt "tform_palette.boutonsuppression.caption" msgid "Supprimer" msgstr "Delete" #: tform_palette.boutonsuppression.hint msgctxt "tform_palette.boutonsuppression.hint" msgid "Supprimer un élément existant" msgstr "Delete an existing element" #: tform_palette.caption msgctxt "tform_palette.caption" msgid "Actions" msgstr "Actions" #: tform_palette.speedbutton1.hint msgctxt "tform_palette.speedbutton1.hint" msgid "Pour déplacer cette palette, glissez-déposez à partir de cette zone..." msgstr "To displace this palette, click and drag within this zone..." #: tform_palette.speedbutton2.caption msgctxt "tform_palette.speedbutton2.caption" msgid "Export PS" msgstr "Export as PS" #: tform_palette.speedbutton2.hint msgid "Export de la simulation au format Postscript" msgstr "" #: tform_palette.speedbutton3.caption msgctxt "tform_palette.speedbutton3.caption" msgid "Imprimer" msgstr "Print" #: tform_palette.speedbutton3.hint msgctxt "tform_palette.speedbutton3.hint" msgid "Imprimer la simulation" msgstr "Print simulation" #: tform_palette.speedbutton4.caption msgctxt "tform_palette.speedbutton4.caption" msgid "Export PNG" msgstr "Export as PNG" #: tform_palette.speedbutton4.hint msgctxt "tform_palette.speedbutton4.hint" msgid "Exporter la simulation au format image PNG" msgstr "Export simulation as PNG picture" #: tform_palette.speedbutton5.caption msgctxt "tform_palette.speedbutton5.caption" msgid "Export JPG" msgstr "Export as JPG" #: tform_palette.speedbutton5.hint msgctxt "tform_palette.speedbutton5.hint" msgid "Export de la simulation au format image JPG" msgstr "Export simulation as JPG picture" #: tform_palette.speedbutton6.caption msgctxt "tform_palette.speedbutton6.caption" msgid "Copier" msgstr "Copy" #: tform_palette.speedbutton6.hint msgctxt "tform_palette.speedbutton6.hint" msgid "Copier simulation dans le presse-papier" msgstr "Copy simulation to the clipboard" #: tform_palette.speedbutton7.caption msgctxt "tform_palette.speedbutton7.caption" msgid "Grouper tout" msgstr "Group all" #: tsaisiechoix.bitbtn1.caption msgctxt "tsaisiechoix.bitbtn1.caption" msgid "Suivant >" msgstr "Next >" #: tsaisiechoix.caption msgctxt "tsaisiechoix.caption" msgid "Que voulez vous faire ?" msgstr "What would you like to do ?" #: tsaisiechoix.edit_indice_bleu_par_defaut.text msgctxt "tsaisiechoix.edit_indice_bleu_par_defaut.text" msgid "1" msgstr "" #: tsaisiechoix.edit_indice_rouge_par_defaut.text msgctxt "tsaisiechoix.edit_indice_rouge_par_defaut.text" msgid "1" msgstr "" #: tsaisiechoix.edit_indice_vert_par_defaut.text msgctxt "tsaisiechoix.edit_indice_vert_par_defaut.text" msgid "1" msgstr "" #: tsaisiechoix.radiochoix.caption msgctxt "tsaisiechoix.radiochoix.caption" msgid "Voulez vous:" msgstr "Would you like to:" #: tsaisiechoix.statictext2.caption msgctxt "tsaisiechoix.statictext2.caption" msgid "Vous pouvez changer les indices du milieu dans lequel s'effectue la simulation:" msgstr "You can change the default refractive index of the medium:" #: tsaisiechoix.statictext3.caption msgctxt "tsaisiechoix.statictext3.caption" msgid "Pour le vert:" msgstr "For a green ray:" #: tsaisiechoix.statictext4.caption msgctxt "tsaisiechoix.statictext4.caption" msgid "Pour le rouge:" msgstr "For a red ray:" #: tsaisiechoix.statictext5.caption msgctxt "tsaisiechoix.statictext5.caption" msgid "Pour le bleu:" msgstr "For a blue ray:" #: tsaisiemiroirplan.bitbtn1.caption msgctxt "tsaisiemiroirplan.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisiemiroirplan.bitbtn2.caption msgctxt "tsaisiemiroirplan.bitbtn2.caption" msgid "Annuler" msgstr "Cancel" #: tsaisiemiroirplan.boutonsup.caption msgctxt "tsaisiemiroirplan.boutonsup.caption" msgid "Supprimer ce miroir" msgstr "Delete this mirror" #: tsaisiemiroirplan.caption msgctxt "tsaisiemiroirplan.caption" msgid "Ajout d'un miroir plan" msgstr "Addition of a plane mirror:" #: tsaisiemiroirplan.cochehachures.caption msgctxt "tsaisiemiroirplan.cochehachures.caption" msgid "Hachures" msgstr "Hatchings" #: tsaisiemiroirplan.groupbox1.caption msgctxt "tsaisiemiroirplan.groupbox1.caption" msgid "Couleur à l'écran" msgstr "Color on screen" #: tsaisiemiroirplan.groupbox2.caption msgctxt "tsaisiemiroirplan.groupbox2.caption" msgid "Aspect" msgstr "Appearance on screen" #: tsaisiemiroirplan.groupbox3.caption msgctxt "tsaisiemiroirplan.groupbox3.caption" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: tsaisiemiroirplan.groupbox4.caption msgctxt "tsaisiemiroirplan.groupbox4.caption" msgid "Point 1" msgstr "" #: tsaisiemiroirplan.groupbox5.caption msgctxt "tsaisiemiroirplan.groupbox5.caption" msgid "Point 2" msgstr "" #: tsaisiemiroirplan.log1.caption msgctxt "tsaisiemiroirplan.log1.caption" msgid "log1" msgstr "" #: tsaisiemiroirplan.log2.caption msgctxt "tsaisiemiroirplan.log2.caption" msgid "log2" msgstr "" #: tsaisiemiroirplan.log3.caption msgctxt "tsaisiemiroirplan.log3.caption" msgid "log3" msgstr "" #: tsaisiemiroirplan.log4.caption msgctxt "tsaisiemiroirplan.log4.caption" msgid "log4" msgstr "" #: tsaisiemiroirplan.statictext1.caption msgctxt "tsaisiemiroirplan.statictext1.caption" msgid "x=" msgstr "" #: tsaisiemiroirplan.statictext2.caption msgctxt "tsaisiemiroirplan.statictext2.caption" msgid "y=" msgstr "" #: tsaisiemiroirplan.statictext3.caption msgctxt "tsaisiemiroirplan.statictext3.caption" msgid "x=" msgstr "" #: tsaisiemiroirplan.statictext4.caption msgctxt "tsaisiemiroirplan.statictext4.caption" msgid "y=" msgstr "" #: tsaisiepreferences.bitbtn1.caption msgctxt "tsaisiepreferences.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisiepreferences.bitbtn2.caption msgctxt "tsaisiepreferences.bitbtn2.caption" msgid "&Ok et enregistrer sur disque" msgstr "&Ok and save to disk" #: tsaisiepreferences.bitbtn3.caption msgctxt "tsaisiepreferences.bitbtn3.caption" msgid "&Rétablir les valeurs d'origine de tous les éléments" msgstr "Revert to default values for all elements" #: tsaisiepreferences.boutoncouleu1.caption msgctxt "tsaisiepreferences.boutoncouleu1.caption" msgid "Modifier" msgstr "Modify" #: tsaisiepreferences.boutoncouleur.caption msgctxt "tsaisiepreferences.boutoncouleur.caption" msgid "Modifier" msgstr "Modify" #: tsaisiepreferences.boutoncouleuraxe.caption msgctxt "tsaisiepreferences.boutoncouleuraxe.caption" msgid "Modifier" msgstr "Modify" #: tsaisiepreferences.boutoncouleuraxe1.caption msgctxt "tsaisiepreferences.boutoncouleuraxe1.caption" msgid "Modifier" msgstr "Modify" #: tsaisiepreferences.boutonpolice.caption msgctxt "tsaisiepreferences.boutonpolice.caption" msgid "Modifier" msgstr "Modify" #: tsaisiepreferences.button1.caption msgctxt "tsaisiepreferences.button1.caption" msgid "Modifier" msgstr "Modify" #: tsaisiepreferences.caption msgctxt "tsaisiepreferences.caption" msgid "Préférences: propriétés par défaut à la création" msgstr "Preferences: default properties upon creation" #: tsaisiepreferences.label1.caption msgctxt "tsaisiepreferences.label1.caption" msgid "Type d'élément" msgstr "Element type" #: tsaisiepreferences.label2.caption msgctxt "tsaisiepreferences.label2.caption" msgid "Couleur par défaut" msgstr "Default color" #: tsaisiepreferences.label3.caption msgctxt "tsaisiepreferences.label3.caption" msgid "Epaisseur par défaut" msgstr "Default thickness" #: tsaisiepreferences.label4.caption msgctxt "tsaisiepreferences.label4.caption" msgid "Couleur axe par défaut" msgstr "Default color of the axis" #: tsaisiepreferences.label5.caption msgctxt "tsaisiepreferences.label5.caption" msgid "Police par défaut" msgstr "Default font" #: tsaisiepreferences.label6.caption msgctxt "tsaisiepreferences.label6.caption" msgid "Indiquer ici les propriétés communes à appliquer à tous les éléments:" msgstr "Give here all common properties to apply to all objects:" #: tsaisiepreferences.label7.caption msgctxt "tsaisiepreferences.label7.caption" msgid "Couleur rayon par défaut" msgstr "Default color of the ray" #: tsaisiepreferences.tabsheet1.caption msgctxt "tsaisiepreferences.tabsheet1.caption" msgid "Element par élément" msgstr "Object by object" #: tsaisiepreferences.tabsheet2.caption msgctxt "tsaisiepreferences.tabsheet2.caption" msgid "Pour tous les éléments" msgstr "For all elements" #: tsaisiereseau.bitbtn1.caption msgctxt "tsaisiereseau.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisiereseau.bitbtn2.caption msgctxt "tsaisiereseau.bitbtn2.caption" msgid "Annuler" msgstr "Cancel" #: tsaisiereseau.boutonsup.caption msgctxt "tsaisiereseau.boutonsup.caption" msgid "Supprimer ce réseau" msgstr "" #: tsaisiereseau.caption msgctxt "tsaisiereseau.caption" msgid "Ajout d'un réseau" msgstr "" #: tsaisiereseau.cochehachures.caption msgctxt "tsaisiereseau.cochehachures.caption" msgid "Hachures si réseau en réflexion" msgstr "" #: tsaisiereseau.groupbox1.caption msgctxt "tsaisiereseau.groupbox1.caption" msgid "Couleur à l'écran" msgstr "Color on screen" #: tsaisiereseau.groupbox2.caption msgctxt "tsaisiereseau.groupbox2.caption" msgid "Aspect" msgstr "Appearance on screen" #: tsaisiereseau.groupbox3.caption msgctxt "tsaisiereseau.groupbox3.caption" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: tsaisiereseau.groupbox4.caption msgctxt "tsaisiereseau.groupbox4.caption" msgid "Point 1" msgstr "" #: tsaisiereseau.groupbox5.caption msgctxt "tsaisiereseau.groupbox5.caption" msgid "Point 2" msgstr "" #: tsaisiereseau.groupbox6.caption msgid "Nombre de trait par mm" msgstr "" #: tsaisiereseau.groupbox7.caption msgctxt "tsaisiereseau.groupbox7.caption" msgid "Ordres à prendre en compte" msgstr "" #: tsaisiereseau.log1.caption msgctxt "tsaisiereseau.log1.caption" msgid "log1" msgstr "" #: tsaisiereseau.log2.caption msgctxt "tsaisiereseau.log2.caption" msgid "log2" msgstr "" #: tsaisiereseau.log3.caption msgctxt "tsaisiereseau.log3.caption" msgid "log3" msgstr "" #: tsaisiereseau.log4.caption msgctxt "tsaisiereseau.log4.caption" msgid "log4" msgstr "" #: tsaisiereseau.radiogroup1.caption msgctxt "tsaisiereseau.radiogroup1.caption" msgid "Type de réseau" msgstr "" #: tsaisiereseau.statictext1.caption msgctxt "tsaisiereseau.statictext1.caption" msgid "x=" msgstr "" #: tsaisiereseau.statictext2.caption msgctxt "tsaisiereseau.statictext2.caption" msgid "y=" msgstr "" #: tsaisiereseau.statictext3.caption msgctxt "tsaisiereseau.statictext3.caption" msgid "x=" msgstr "" #: tsaisiereseau.statictext4.caption msgctxt "tsaisiereseau.statictext4.caption" msgid "y=" msgstr "" #: tsaisiereseau.statictext5.caption msgctxt "tsaisiereseau.statictext5.caption" msgid "Ordre minimum" msgstr "" #: tsaisiereseau.statictext6.caption msgctxt "tsaisiereseau.statictext6.caption" msgid "Ordre maximum" msgstr "" #: tsaisiereseau.statictext7.caption msgid "Remarque importante: ce réseau diffractant doit être éclairé par une onde plane." msgstr "" #: tsaisiereseau.statictext8.caption msgid "Les longueurs d'onde peuvent être modifiées dans le menu options, indices du milieu" msgstr "" #: tsaisie_indices_milieu_ambiant.bitbtn1.caption msgctxt "tsaisie_indices_milieu_ambiant.bitbtn1.caption" msgid "&OK" msgstr "" #: tsaisie_indices_milieu_ambiant.caption msgctxt "tsaisie_indices_milieu_ambiant.caption" msgid "Indices du milieu ambiant" msgstr "Medium index" #: tsaisie_indices_milieu_ambiant.edit_indice_bleu_par_defaut.text msgctxt "tsaisie_indices_milieu_ambiant.edit_indice_bleu_par_defaut.text" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_rouge_par_defaut.text msgctxt "tsaisie_indices_milieu_ambiant.edit_indice_rouge_par_defaut.text" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.edit_indice_vert_par_defaut.text msgctxt "tsaisie_indices_milieu_ambiant.edit_indice_vert_par_defaut.text" msgid "1" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext1.caption msgid "Longueur d'onde pour le vert:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext10.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext10.caption" msgid "nm" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext2.caption msgid "Longueur d'onde pour le rouge:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext3.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext3.caption" msgid "Pour le vert:" msgstr "For a green ray:" #: tsaisie_indices_milieu_ambiant.statictext4.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext4.caption" msgid "Pour le rouge:" msgstr "For a red ray:" #: tsaisie_indices_milieu_ambiant.statictext5.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext5.caption" msgid "Pour le bleu:" msgstr "For a blue ray:" #: tsaisie_indices_milieu_ambiant.statictext6.caption msgid "Longueur d'onde pour le bleu:" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext7.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext7.caption" msgid "Les valeurs de longueur d'onde sont utilisées pour les réseaux de diffraction" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext8.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext8.caption" msgid "nm" msgstr "" #: tsaisie_indices_milieu_ambiant.statictext9.caption msgctxt "tsaisie_indices_milieu_ambiant.statictext9.caption" msgid "nm" msgstr "" #: tsplashscreen.caption msgid "splashscreen" msgstr "" #: tsplashscreen.label1.caption msgid "Dozzzaqueux" msgstr "" #: tsplashscreen.label2.caption msgid "Logiciel libre et gratuit de simulation de courbes de dosage" msgstr "" #: tsplashscreen.label3.caption msgid "Version 3.04 du 10/08/2009, codée en Lazarus" msgstr "" #: tsplashscreen.label4.caption msgid "Par Jean-Marie Biansan, 2005 à 2009" msgstr "" #: uchaines.rs msgid "'" msgstr "'" #: uchaines.rs0 msgctxt "uchaines.rs0" msgid "0" msgstr "0" #: uchaines.rs15 msgctxt "uchaines.rs15" msgid "1,5" msgstr "1,5" #: uchaines.rs15b msgid "1.5" msgstr "1.5" #: uchaines.rs16 msgctxt "uchaines.rs16" msgid "1,6" msgstr "1,6" #: uchaines.rs16b msgid "1.6" msgstr "1.6" #: uchaines.rs17 msgctxt "uchaines.rs17" msgid "1,7" msgstr "1,7" #: uchaines.rs17b msgid "1.7" msgstr "1.7" #: uchaines.rs2 msgctxt "uchaines.rs2" msgid " " msgstr " " #: uchaines.rs3 msgctxt "uchaines.rs3" msgid " " msgstr " " #: uchaines.rsa msgctxt "uchaines.rsa" msgid "A" msgstr "A" #: uchaines.rsa0 msgid "A0" msgstr "" #: uchaines.rsa1 msgid "A1" msgstr "" #: uchaines.rsa2 msgctxt "uchaines.rsa2" msgid "A=" msgstr "A=" #: uchaines.rsa22 msgid "A2" msgstr "" #: uchaines.rsa3 msgid "A3" msgstr "" #: uchaines.rsa4 msgctxt "uchaines.rsa4" msgid "A4" msgstr "" #: uchaines.rsa5 msgid "A5" msgstr "" #: uchaines.rsabscissemax msgctxt "uchaines.rsabscissemax" msgid "Abscisse max.:" msgstr "Max. x-axis:" #: uchaines.rsabscissemaxi msgctxt "uchaines.rsabscissemaxi" msgid "Abscisse maximale" msgstr "Maximum x-axis" #: uchaines.rsabscissemin msgctxt "uchaines.rsabscissemin" msgid "Abscisse min.:" msgstr "Min. x-axis" #: uchaines.rsabscissemini msgctxt "uchaines.rsabscissemini" msgid "Abscisse minimale" msgstr "Minimum x-axis" #: uchaines.rsactions msgctxt "uchaines.rsactions" msgid "Actions" msgstr "Actions" #: uchaines.rsafficher msgctxt "uchaines.rsafficher" msgid "Afficher:" msgstr "Show:" #: uchaines.rsafficher2 msgctxt "uchaines.rsafficher2" msgid "Afficher" msgstr "Show" #: uchaines.rsafficherlagr msgctxt "uchaines.rsafficherlagr" msgid "Afficher la grille" msgstr "Show grid" #: uchaines.rsafficherlesa msgctxt "uchaines.rsafficherlesa" msgid "Afficher les angles" msgstr "Show angles" #: uchaines.rsafficherlesc msgctxt "uchaines.rsafficherlesc" msgid "Afficher les coordonnées des segments" msgstr "Show the coordinates of the segments" #: uchaines.rsafficherlesn msgctxt "uchaines.rsafficherlesn" msgid "Afficher les normales" msgstr "Show surface normals" #: uchaines.rsaffichervale msgctxt "uchaines.rsaffichervale" msgid "Afficher valeurs angles (en degrés)" msgstr "Show the values of the angles (in degrees)" #: uchaines.rsaide msgctxt "uchaines.rsaide" msgid "Aide" msgstr "Help" #: uchaines.rsaidesuroptge msgctxt "uchaines.rsaidesuroptge" msgid "Aide sur OptGeo" msgstr "Help on Optgeo" #: uchaines.rsajoutaugroup msgid "%s ajouté au groupe n°%s en cours de constitution." msgstr "%s added to group n° %s in process of creation." #: uchaines.rsajoutduncran msgid "Ajout d'un écran:" msgstr "Addition of a screen:" #: uchaines.rsajoutduncran2 msgctxt "uchaines.rsajoutduncran2" msgid "Ajout d'un écran" msgstr "Addition of a screen:" #: uchaines.rsajoutdundiap msgid "Ajout d'un diaphragme:" msgstr "Addition of an iris diaphragm:" #: uchaines.rsajoutdundiap2 msgctxt "uchaines.rsajoutdundiap2" msgid "Ajout d'un diaphragme" msgstr "Addition of an iris diaphragm:" #: uchaines.rsajoutdunecet #, fuzzy #| msgid "Ajout d'une onde plane:" msgid "Ajout d'une cette onde plane:" msgstr "Addition of a plane wave:" #: uchaines.rsajoutdunelam msgid "Ajout d'une lame semi-réfléchissante:" msgstr "Addition of a semi-reflective mirror:" #: uchaines.rsajoutdunelam2 msgctxt "uchaines.rsajoutdunelam2" msgid "Ajout d'une lame semi-réfléchissante" msgstr "Addition of a semi-reflective mirror:" #: uchaines.rsajoutdunelen msgid "Ajout d'une lentille convergente:" msgstr "Addition of a converging thin lens:" #: uchaines.rsajoutdunelen2 msgid "Ajout d'une lentille divergente:" msgstr "Addition of a diverging thin lens:" #: uchaines.rsajoutdunelen3 msgid "Ajout d'une lentille épaisse:" msgstr "Addition of a thick lens:" #: uchaines.rsajoutdunelen4 msgctxt "uchaines.rsajoutdunelen4" msgid "Ajout d'une lentille épaisse" msgstr "Addition of a thick lens:" #: uchaines.rsajoutdunelen5 msgctxt "uchaines.rsajoutdunelen5" msgid "Ajout d'une lentille mince convergente paraxiale" msgstr "Addition of a converging thin lens (paraxial approx.):" #: uchaines.rsajoutdunelen6 msgctxt "uchaines.rsajoutdunelen6" msgid "Ajout d'une lentille mince divergente paraxiale" msgstr "Addition of a diverging thin lens (paraxial approx.):" #: uchaines.rsajoutdunemes msgid "Ajout d'une mesure de distance:" msgstr "Addition of a distance measurement:" #: uchaines.rsajoutdunemes2 msgid "Ajout d'une mesure d'angle:" msgstr "Addition of an angle measurement:" #: uchaines.rsajoutdunesou msgid "Ajout d'une source ponctuelle:" msgstr "Addition of a point object:" #: uchaines.rsajoutdunmiro msgid "Ajout d'un miroir plan:" msgstr "Addition of a plane mirror:" #: uchaines.rsajoutdunmiro10 msgctxt "uchaines.rsajoutdunmiro10" msgid "Ajout d'un miroir sphérique convexe réel" msgstr "Addition of a real convex spherical mirror:" #: uchaines.rsajoutdunmiro11 msgctxt "uchaines.rsajoutdunmiro11" msgid "Ajout d'un miroir sphérique concave paraxial" msgstr "Addition of a concave spherical mirror (paraxial approx.):" #: uchaines.rsajoutdunmiro12 msgctxt "uchaines.rsajoutdunmiro12" msgid "Ajout d'un miroir sphérique concave réel" msgstr "Addition of a real concave spherical mirror:" #: uchaines.rsajoutdunmiro2 msgctxt "uchaines.rsajoutdunmiro2" msgid "Ajout d'un miroir concave:" msgstr "Addition of a concave mirror:" #: uchaines.rsajoutdunmiro3 msgctxt "uchaines.rsajoutdunmiro3" msgid "Ajout d'un miroir convexe:" msgstr "Addition of a convex mirror:" #: uchaines.rsajoutdunmiro4 msgctxt "uchaines.rsajoutdunmiro4" msgid "Ajout d'un miroir concave:" msgstr "Addition of a concave mirror:" #: uchaines.rsajoutdunmiro5 msgctxt "uchaines.rsajoutdunmiro5" msgid "Ajout d'un miroir convexe:" msgstr "Addition of a convex mirror:" #: uchaines.rsajoutdunmiro6 msgid "Ajout d'un miroir cônique:" msgstr "Addition of a conical mirror:" #: uchaines.rsajoutdunmiro7 msgctxt "uchaines.rsajoutdunmiro7" msgid "Ajout d'un miroir parabolique, elliptique ou hyperbolique" msgstr "Addition of a parabolic, elliptic or hyperbolic mirror:" #: uchaines.rsajoutdunmiro8 msgctxt "uchaines.rsajoutdunmiro8" msgid "Ajout d'un miroir plan" msgstr "Addition of a plane mirror:" #: uchaines.rsajoutdunmiro9 msgctxt "uchaines.rsajoutdunmiro9" msgid "Ajout d'un miroir sphérique convexe paraxial" msgstr "Addition of a convex spherical mirror (paraxial approx.)" #: uchaines.rsajoutdunoeil msgid "Ajout d'un oeil stylisé:" msgstr "Addition of a stylistic eye:" #: uchaines.rsajoutdunoeil2 msgctxt "uchaines.rsajoutdunoeil2" msgid "Ajout d'un oeil" msgstr "Addition of an eye:" #: uchaines.rsajoutdunpris msgctxt "uchaines.rsajoutdunpris" msgid "Ajout d'un prisme" msgstr "Addition of a prism:" #: uchaines.rsajoutdunrayo msgid "Ajout d'un rayon:" msgstr "Addition of a single ray:" #: uchaines.rsajoutdunrsea msgctxt "uchaines.rsajoutdunrsea" msgid "Ajout d'un réseau" msgstr "Add a diffraction grating" #: uchaines.rsajoutdunrsea2 msgid "Ajout d'un réseau diffractant" msgstr "Adding a diffraction grating" #: uchaines.rsajoutduntext msgid "Ajout d'un texte:" msgstr "Addition of text:" #: uchaines.rsajoutduntrai msgid "Ajout d'un trait..." msgstr "Addition of a line..." #: uchaines.rsajoutduntrai2 msgctxt "uchaines.rsajoutduntrai2" msgid "Ajout d'un trait, fléche..." msgstr "Addition of a line, arrow..." #: uchaines.rsajouter msgctxt "uchaines.rsajouter" msgid "Ajouter" msgstr "Add" #: uchaines.rsajouteroudit msgctxt "uchaines.rsajouteroudit" msgid "Ajouter (ou éditer) le commentaire de la simulation" msgstr "Add (or edit) comments to the simulation " #: uchaines.rsajouteruncra msgctxt "uchaines.rsajouteruncra" msgid "Ajouter un écran" msgstr "Add a screen" #: uchaines.rsajouterundia msgctxt "uchaines.rsajouterundia" msgid "Ajouter un diaphragme à iris" msgstr "Add an iris diaphragm" #: uchaines.rsajouterunela msgctxt "uchaines.rsajouterunela" msgid "Ajouter une lame semi-réfléchissante" msgstr "Add of a semi-reflective mirror" #: uchaines.rsajouterunele msgctxt "uchaines.rsajouterunele" msgid "Ajouter une lentille épaisse" msgstr "Add a thick lens" #: uchaines.rsajouterunele2 msgctxt "uchaines.rsajouterunele2" msgid "Ajouter une lentille mince convergente paraxiale" msgstr "Add a converging thin lens (paraxial approx.)" #: uchaines.rsajouterunele3 msgctxt "uchaines.rsajouterunele3" msgid "Ajouter une lentille mince divergente paraxiale" msgstr "Add a diverging thin lens (paraxial approx.)" #: uchaines.rsajouteruneon msgctxt "uchaines.rsajouteruneon" msgid "Ajouter une onde plane" msgstr "Add a plane wave" #: uchaines.rsajouterunepo msgctxt "uchaines.rsajouterunepo" msgid "Ajouter une polycercle réfractant" msgstr "Add a refractive polycircle" #: uchaines.rsajouterunesp msgctxt "uchaines.rsajouterunesp" msgid "Ajouter une sphère réfractante" msgstr "Add a refractive sphere" #: uchaines.rsajouterunmir msgctxt "uchaines.rsajouterunmir" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) concave" msgstr "Add a parabolic, elliptic or hyperbolic concave mirror" #: uchaines.rsajouterunmir2 msgctxt "uchaines.rsajouterunmir2" msgid "Ajouter un miroir parabolique (ou elliptique, hyperbolique) convexe" msgstr "Add a parabolic, elliptic or hyperbolic convex mirror" #: uchaines.rsajouterunmir3 msgctxt "uchaines.rsajouterunmir3" msgid "Ajouter un miroir plan" msgstr "Add a plane mirror" #: uchaines.rsajouterunmir4 msgctxt "uchaines.rsajouterunmir4" msgid "Ajouter un miroir sphérique convexe paraxial" msgstr "Add a convex spherical mirror (paraxial approx.)" #: uchaines.rsajouterunmir5 msgctxt "uchaines.rsajouterunmir5" msgid "Ajouter un miroir sphérique convexe réel" msgstr "Add a real convex spherical mirror " #: uchaines.rsajouterunmir6 msgctxt "uchaines.rsajouterunmir6" msgid "Ajouter un miroir sphérique concave paraxial" msgstr "Add a concave spherical mirror (paraxial approx.)" #: uchaines.rsajouterunmir7 msgctxt "uchaines.rsajouterunmir7" msgid "Ajouter un miroir sphérique concave réel" msgstr "Add a real concave spherical mirror" #: uchaines.rsajouterunobj msgctxt "uchaines.rsajouterunobj" msgid "Ajouter un objet ponctuel réel" msgstr "Add a real point object" #: uchaines.rsajouterunobj2 msgctxt "uchaines.rsajouterunobj2" msgid "Ajouter un objet ponctuel virtuel" msgstr "Add a virtual point object" #: uchaines.rsajouterunoei msgctxt "uchaines.rsajouterunoei" msgid "Ajouter un oeil stylisé" msgstr "Add a stylistic eye" #: uchaines.rsajouterunpol msgctxt "uchaines.rsajouterunpol" msgid "Ajouter un polygône réfractant" msgstr "Add a refractive polygone" #: uchaines.rsajouterunpri msgctxt "uchaines.rsajouterunpri" msgid "Ajouter un prisme isocéle" msgstr "Add a isosceles prism" #: uchaines.rsajouterunray msgctxt "uchaines.rsajouterunray" msgid "Ajouter un rayon" msgstr "Add a single ray" #: uchaines.rsajouterunrse msgid "Ajouter un réseau diffractant" msgstr "Add a diffraction grating" #: uchaines.rsajouteruntex msgctxt "uchaines.rsajouteruntex" msgid "Ajouter un texte sur le dessin" msgstr "Add text to the drawing" #: uchaines.rsajouteruntra msgctxt "uchaines.rsajouteruntra" msgid "Ajouter un trait, une fléche..." msgstr "Add a line, arrow..." #: uchaines.rsajusterautom msgctxt "uchaines.rsajusterautom" msgid "Ajuster automatiquement à la plus petite taille" msgstr "Adjust automatically to smallest size" #: uchaines.rsangleausomme msgctxt "uchaines.rsangleausomme" msgid "Angle au sommet" msgstr "Apex angle" #: uchaines.rsangledouvert msgctxt "uchaines.rsangledouvert" msgid "Angle d'ouverture" msgstr "Angle of opening" #: uchaines.rsangledouvert2 msgctxt "uchaines.rsangledouvert2" msgid "Angle d'ouverture" msgstr "Angle of opening" #: uchaines.rsanglepolaire msgctxt "uchaines.rsanglepolaire" msgid "Angle polaire du diaphragme" msgstr "Polar angle of the diaphragm" #: uchaines.rsanglepolaire2 msgctxt "uchaines.rsanglepolaire2" msgid "Angle polaire de l'axe focal" msgstr "Polar angle of the focal point axis" #: uchaines.rsanglepolaire3 msgctxt "uchaines.rsanglepolaire3" msgid "Angle polaire de la hauteur principale" msgstr "Polar angle of the principal perpendicular height" #: uchaines.rsanglesdincid msgctxt "uchaines.rsanglesdincid" msgid "Angles d'incid. et de réfr." msgstr "Angles of inc. and refr." #: uchaines.rsanglespolair msgctxt "uchaines.rsanglespolair" msgid "Angles polaires FMi (extrémités)" msgstr "Polar angle FMi (endpoints)" #: uchaines.rsannuler msgctxt "uchaines.rsannuler" msgid "Annuler" msgstr "Cancel" #: uchaines.rsapropos msgctxt "uchaines.rsapropos" msgid "A propos" msgstr "About" #: uchaines.rsaproposdecel msgctxt "uchaines.rsaproposdecel" msgid "A propos de ce logiciel" msgstr "About this software" #: uchaines.rsaspect msgctxt "uchaines.rsaspect" msgid "Aspect" msgstr "Appearance on screen" #: uchaines.rsaspectlcran msgctxt "uchaines.rsaspectlcran" msgid "Aspect à l'écran" msgstr "Appearance on screen" #: uchaines.rsassocierlesf msgctxt "uchaines.rsassocierlesf" msgid "Associer les fichiers .opt avec OptGeo" msgstr "Associate .opt file with Optgeo" #: uchaines.rsattention msgid "Attention !" msgstr "Warning !" #: uchaines.rsattention2 msgid "Attention !!" msgstr "Warning !!" #: uchaines.rsattention3 msgid "Attention" msgstr "Warning" #: uchaines.rsattention4 msgid "Attention !!!" msgstr "Warning !!!" #: uchaines.rsattraction msgctxt "uchaines.rsattraction" msgid "Attraction" msgstr "Attract (snap) to grid" #: uchaines.rsattractionde msgctxt "uchaines.rsattractionde" msgid "Attraction de la grille" msgstr "Attract (snap) to grid" #: uchaines.rsauteurjeanma msgid "Auteur: Jean-Marie Biansan" msgstr "Author: Jean-Marie Biansan " #: uchaines.rsaxedesymtrie msgctxt "uchaines.rsaxedesymtrie" msgid "Axe de symétrie" msgstr "Show symm. axis" #: uchaines.rsaxefocal msgctxt "uchaines.rsaxefocal" msgid "Axe focal" msgstr "Show focal point axis" #: uchaines.rsaxeoptique msgctxt "uchaines.rsaxeoptique" msgid "Axe optique" msgstr "Show optical axis" #: uchaines.rsbarr msgid "Barré" msgstr "Crossed out" #: uchaines.rsbas msgid "Bas" msgstr "Bottom" #: uchaines.rsbasederegist msgctxt "uchaines.rsbasederegist" msgid "Base de registre" msgstr "Registry" #: uchaines.rsbienvenue msgid "Bienvenue..." msgstr "Welcome..." #: uchaines.rsblanc msgid "Blanc" msgstr "White" #: uchaines.rsbleu msgid "Bleu" msgstr "Blue" #: uchaines.rscacherdesseg msgctxt "uchaines.rscacherdesseg" msgid "Cacher des segments de rayon" msgstr "Hide segments of ray" #: uchaines.rscecinestpasu msgid "Ceci n'est pas une valeur numérique acceptable !" msgstr "This is an inacceptable numeric value !" #: uchaines.rscediaphragme msgid "ce diaphragme" msgstr "this iris diaphragm" #: uchaines.rscefichierexi msgid "Ce fichier existe déjà." msgstr "This file already exists." #: uchaines.rscegroupe msgid "ce groupe" msgstr "this group" #: uchaines.rscemiroircniq msgid "ce miroir cônique" msgstr "this conical mirror" #: uchaines.rscemiroirconc msgid "ce miroir concave paraxial" msgstr "this concave mirror (paraxial approx.)" #: uchaines.rscemiroirconi msgid "ce miroir conique" msgstr "this conical mirror" #: uchaines.rscemiroirconv msgid "ce miroir convexe paraxial" msgstr "this convex mirror (paraxial approx.)" #: uchaines.rscemiroirplan msgid "ce miroir plan" msgstr "this plane mirror" #: uchaines.rscemiroirsphr msgid "ce miroir sphérique concave" msgstr "this concave spherical mirror" #: uchaines.rscemiroirsphr2 msgid "ce miroir sphérique convexe" msgstr "this convex spherical mirror" #: uchaines.rscemiroirsphr3 msgid "ce miroir sphèrique" msgstr "this spherical mirror" #: uchaines.rscemiroirsphr4 msgid "ce miroir sphérique" msgstr "this spherical mirror" #: uchaines.rscentr msgid "Centré" msgstr "Centred" #: uchaines.rscentrec msgctxt "uchaines.rscentrec" msgid "Centre C" msgstr "Center C" #: uchaines.rscentredinert msgctxt "uchaines.rscentredinert" msgid "Centre d'inertie" msgstr "Center of mass" #: uchaines.rscepolycercle msgid "ce polycercle" msgstr "this polycircle" #: uchaines.rscepolygne msgid "ce polygône" msgstr "this polygon" #: uchaines.rscepolygone msgid "ce polygone" msgstr "this polygon" #: uchaines.rsceprisme msgid "ce prisme" msgstr "this prism" #: uchaines.rscerayon msgid "ce rayon" msgstr "this single ray" #: uchaines.rscerayonlumin msgid "ce rayon lumineux" msgstr "this single ray" #: uchaines.rscercle msgctxt "uchaines.rscercle" msgid "Cercle" msgstr "Circle" #: uchaines.rscereseau msgid "ce réseau" msgstr "this diffraction grating" #: uchaines.rscesommetestr msgctxt "uchaines.rscesommetestr" msgid "Ce sommet est relié au suivant par:" msgstr "This vertex is linked to the next one by:" #: uchaines.rscetangle msgid "cet angle" msgstr "this angle" #: uchaines.rscetarcdecerc #, fuzzy #| msgid "Cet arc de cercle est:" msgctxt "uchaines.rscetarcdecerc" msgid "En allant de Ai vers Ai+1, le sommet de l'arc de cercle est:" msgstr "This arc of a circle is:" #: uchaines.rscetcran msgid "cet écran" msgstr "this screen" #: uchaines.rscetexte msgid "ce texte" msgstr "this text" #: uchaines.rscetoeil msgid "cet oeil" msgstr "this eye" #: uchaines.rscetrait msgid "ce trait" msgstr "this line" #: uchaines.rscettelamesem msgid "cette lame semi-réfléchissante" msgstr "this semi-reflective mirror" #: uchaines.rscettelentill msgid "cette lentille mince convergente" msgstr "this converging thin lens" #: uchaines.rscettelentill2 msgid "cette lentille épaisse" msgstr "this thick lens" #: uchaines.rscettelentill3 msgid "cette lentille mince divergente" msgstr "this diverging thin lens" #: uchaines.rscettelentill4 msgid "cette lentille" msgstr "this lens" #: uchaines.rscettemesured msgid "cette mesure de distance" msgstr "this distance measurement" #: uchaines.rscettemesured2 msgctxt "uchaines.rscettemesured2" msgid "cette mesure d'angle" msgstr "this angle mesasurement" #: uchaines.rscettemesured3 msgctxt "uchaines.rscettemesured3" msgid "cette mesure d'angle" msgstr "this angle mesasurement" #: uchaines.rscettemesured4 msgctxt "uchaines.rscettemesured4" msgid "cette mesure d'angle" msgstr "this angle mesasurement" #: uchaines.rscettemesured5 msgctxt "uchaines.rscettemesured5" msgid "cette mesure d'angle" msgstr "this angle mesasurement" #: uchaines.rscettemesured6 msgctxt "uchaines.rscettemesured6" msgid "cette mesure d'angle" msgstr "this angle mesasurement" #: uchaines.rscettemesured7 msgctxt "uchaines.rscettemesured7" msgid "cette mesure d'angle" msgstr "this angle mesasurement" #: uchaines.rscetteondepla msgid "cette onde plane" msgstr "this plane wave" #: uchaines.rscettesourcep msgid "cette source ponctuelle" msgstr "this point object" #: uchaines.rscettesphre msgid "cette sphère" msgstr "this sphere" #: uchaines.rscettestructu msgid "Cette structure serait un segment..." msgstr "This structure will be a segment..." #: uchaines.rschangementde msgid "Changement de langue" msgstr "Langage change" #: uchaines.rschoisissezau msgctxt "uchaines.rschoisissezau" msgid "Choisissez aussi éventuellement:" msgstr "Choose also optionnaly:" #: uchaines.rschoisissezlo msgid "Choisissez l'objet à supprimer:" msgstr "Choose object to be deleted" #: uchaines.rschoixdelobje msgid "Choix de l'objet:" msgstr "Choice of object:" #: uchaines.rschoixduspara msgctxt "uchaines.rschoixduspara" msgid "Choix du séparateur décimal" msgstr "Choice of decimal separator" #: uchaines.rsclicgauchepo msgid "Clic gauche pour ajouter %s au groupe..." msgstr "Left click to add %s to the group" #: uchaines.rsclicgauchepo2 msgctxt "uchaines.rsclicgauchepo2" msgid "Clic gauche pour sélectionner l'élément..." msgstr "Left click to select object..." #: uchaines.rsclicgauchepo3 msgctxt "uchaines.rsclicgauchepo3" msgid "Clic gauche pour sélectionner l'élément..." msgstr "Left click to select object..." #: uchaines.rsclicgauchepo4 msgid "Clic gauche pour sélectionner ce centre..." msgstr "Left click to select this center..." #: uchaines.rsclicgauchepo5 msgid "Clic gauche pour sélectionner ce foyer..." msgstr "Left click to select this focal point..." #: uchaines.rsclicgauchepo6 msgid "Clic gauche pour sélectionner ce bord de trou..." msgstr "Left click to select this hole edge..." #: uchaines.rsclicgauchepo7 msgid "Clic gauche pour sélectionner ce sommet de prisme..." msgstr "Left click to select this prism vertex..." #: uchaines.rsclicgauchepo8 msgid "Clic gauche pour sélectionner ce sommet d'arc de cercle..." msgstr "Left click to select this circle arc vertex..." #: uchaines.rsclicgauchepo9 msgid "Clic gauche pour supprimer %s..." msgstr "Left click to delete %s..." #: uchaines.rscliquersurle msgid "Cliquer sur le centre (intersection des droites)..." msgstr "Click on center (intersection of lines)..." #: uchaines.rscliquersurlo msgid "Cliquer sur l'origine du segment..." msgstr "Click on starting point of segment..." #: uchaines.rscliquezpoura msgid "Cliquez pour afficher les propriétés de cet élément..." msgstr "Click to show object's properties..." #: uchaines.rscliquezpourd msgid "Cliquez pour dupliquer cet élément..." msgstr "Click to duplicate this object..." #: uchaines.rscliquezsurle msgid "Cliquez sur les croix violettes des éléments à grouper, puis sur Fin..." msgstr "Click on purple cross of objects to be grouped, and then on End..." #: uchaines.rscm msgid "cm" msgstr "cm" #: uchaines.rscommentaires msgid "Commentaires sur la simulation de titre non précisé..." msgstr "Comments on the simulation (which is untitled...)" #: uchaines.rscommentaires2 msgctxt "uchaines.rscommentaires2" msgid "Commentaire sur la simulation" msgstr "Comments on the simulation" #: uchaines.rscommentaires3 msgid "Commentaires sur la simulation de nom non précisé..." msgstr "Comments on the simulation (which is untitled...)" #: uchaines.rscommentaires4 msgid "Commentaires sur la simulation %s" msgstr "Comments on the simulation %s" #: uchaines.rscommentaires5 msgid "Commentaires sur la simulation %sopt" msgstr "Comments on the simulation %sopt" #: uchaines.rsconcave msgctxt "uchaines.rsconcave" msgid "Concave" msgstr "Concave" #: uchaines.rsconcaveoucon msgctxt "uchaines.rsconcaveoucon" msgid "Concave ou convexe ?" msgstr "Concave or convex?" #: uchaines.rsconfiguratio msgctxt "uchaines.rsconfiguratio" msgid "Configuration de la page pour l'impression" msgstr "Configuration of page for printing" #: uchaines.rsconfiguratio2 msgctxt "uchaines.rsconfiguratio2" msgid "Configuration primaire d'OptGeo" msgstr "Basic Optgeo configuration" #: uchaines.rscontacterlau msgctxt "uchaines.rscontacterlau" msgid "Contacter l'auteur" msgstr "Contact author" #: uchaines.rscoord msgctxt "uchaines.rscoord" msgid "Coord." msgstr "Coord." #: uchaines.rscoordonnesde msgctxt "uchaines.rscoordonnesde" msgid "Coordonnées des segments" msgstr "Coordinates of end points of segment" #: uchaines.rscoordonnesde2 msgctxt "uchaines.rscoordonnesde2" msgid "Coordonnées de ce sommet" msgstr "Coordinates of this vertex" #: uchaines.rscoordonnesde3 msgctxt "uchaines.rscoordonnesde3" msgid "Coordonnées des sommets des faces" msgstr "Coordinates of the vertices of sides" #: uchaines.rscoordonnesde4 msgctxt "uchaines.rscoordonnesde4" msgid "Coordonnées de C" msgstr "Coordinates of C" #: uchaines.rscoordonnesdu msgctxt "uchaines.rscoordonnesdu" msgid "Coordonnées du centre" msgstr "Coordinates of the center" #: uchaines.rscoordonnesdu2 msgctxt "uchaines.rscoordonnesdu2" msgid "Coordonnées du point supérieur gauche du texte" msgstr "Coordinates of upper left corner of the text" #: uchaines.rscoordonnesdu3 msgctxt "uchaines.rscoordonnesdu3" msgid "Coordonnées du 1er point" msgstr "Coordinates of the first point" #: uchaines.rscoordonnesdu4 msgctxt "uchaines.rscoordonnesdu4" msgid "Coordonnées du 2nd point" msgstr "Coordinates of the second point" #: uchaines.rscoordonnespo msgctxt "uchaines.rscoordonnespo" msgid "Coordonnées point 1" msgstr "Coordinates point 1" #: uchaines.rscoordonnespo2 msgctxt "uchaines.rscoordonnespo2" msgid "Coordonnées point 2" msgstr "Coordinates point 2" #: uchaines.rscopier msgctxt "uchaines.rscopier" msgid "Copier" msgstr "Copy" #: uchaines.rscopiersimula msgctxt "uchaines.rscopiersimula" msgid "Copier simulation dans le presse-papier" msgstr "Copy simulation to the clipboard" #: uchaines.rscopiersimula2 msgctxt "uchaines.rscopiersimula2" msgid "Copier simulation dans le presse papier" msgstr "Copy simulation to the clipboard" #: uchaines.rscopyrightjea msgid "Copyright Jean-Marie Biansan, 2004, 2013" msgstr "" #: uchaines.rscouleur msgctxt "uchaines.rscouleur" msgid "Couleur:" msgstr "Color:" #: uchaines.rscouleur2 msgctxt "uchaines.rscouleur2" msgid "Couleur" msgstr "Color" #: uchaines.rscouleuraxepa msgctxt "uchaines.rscouleuraxepa" msgid "Couleur axe par défaut" msgstr "Default color of the axis" #: uchaines.rscouleurdefon msgctxt "uchaines.rscouleurdefon" msgid "Couleur de fond" msgstr "Background color" #: uchaines.rscouleurdelal msgctxt "uchaines.rscouleurdelal" msgid "Couleur de la lentille" msgstr "Color of the lens" #: uchaines.rscouleurdelas msgctxt "uchaines.rscouleurdelas" msgid "Couleur de la source" msgstr "Color of point object " #: uchaines.rscouleurdelat msgctxt "uchaines.rscouleurdelat" msgid "Couleur de la trace" msgstr "Color of the trace" #: uchaines.rscouleurdelax msgctxt "uchaines.rscouleurdelax" msgid "Couleur de l'axe optique" msgstr "Color of the optical axis" #: uchaines.rscouleurdelax2 msgctxt "uchaines.rscouleurdelax2" msgid "Couleur de l'axe optique" msgstr "Color of the optical axis" #: uchaines.rscouleurdelax3 msgctxt "uchaines.rscouleurdelax3" msgid "Couleur de l'axe" msgstr "Color of the axis" #: uchaines.rscouleurdelax4 msgctxt "uchaines.rscouleurdelax4" msgid "Couleur de l'axe" msgstr "Color of the axis" #: uchaines.rscouleurdelax5 msgctxt "uchaines.rscouleurdelax5" msgid "Couleur de l'axe" msgstr "Color of the axis" #: uchaines.rscouleurdelax6 msgctxt "uchaines.rscouleurdelax6" msgid "Couleur de l'axe" msgstr "Color of the axis" #: uchaines.rscouleurdelax7 msgctxt "uchaines.rscouleurdelax7" msgid "Couleur de l'axe" msgstr "Color of the axis" #: uchaines.rscouleurdeloe msgctxt "uchaines.rscouleurdeloe" msgid "Couleur de l'oeil" msgstr "Color of the eye" #: uchaines.rscouleurdespo msgctxt "uchaines.rscouleurdespo" msgid "Couleur des points" msgstr "Color of the points" #: uchaines.rscouleurdesra msgctxt "uchaines.rscouleurdesra" msgid "Couleur des rayons" msgstr "Color of rays" #: uchaines.rscouleurdudia msgctxt "uchaines.rscouleurdudia" msgid "Couleur du diaphragme" msgstr "Color of the diaphragm" #: uchaines.rscouleurdumir msgctxt "uchaines.rscouleurdumir" msgid "Couleur du miroir" msgstr "Color of the mirror" #: uchaines.rscouleurdupri msgctxt "uchaines.rscouleurdupri" msgid "Couleur du prisme" msgstr "Color of the prism" #: uchaines.rscouleurduray msgctxt "uchaines.rscouleurduray" msgid "Couleur du rayon" msgstr "Color of the ray" #: uchaines.rscouleurdutra msgctxt "uchaines.rscouleurdutra" msgid "Couleur du trait" msgstr "Color of the line" #: uchaines.rscouleurlcran msgctxt "uchaines.rscouleurlcran" msgid "Couleur à l'écran" msgstr "Color on screen" #: uchaines.rscouleurlcran2 msgctxt "uchaines.rscouleurlcran2" msgid "Couleur à l'écran" msgstr "Color on screen" #: uchaines.rscouleurlcran3 msgctxt "uchaines.rscouleurlcran3" msgid "Couleur à l'écran" msgstr "Color on screen" #: uchaines.rscouleurlcran4 msgctxt "uchaines.rscouleurlcran4" msgid "Couleur à l'écran" msgstr "Color on screen" #: uchaines.rscouleurlcran5 msgctxt "uchaines.rscouleurlcran5" msgid "Couleur à l'écran" msgstr "Color on screen" #: uchaines.rscouleurlcran6 msgctxt "uchaines.rscouleurlcran6" msgid "Couleur à l'écran" msgstr "Color on screen" #: uchaines.rscouleurlcran7 msgctxt "uchaines.rscouleurlcran7" msgid "Couleur à l'écran" msgstr "Color on screen" #: uchaines.rscouleurpardf msgctxt "uchaines.rscouleurpardf" msgid "Couleur par défaut" msgstr "Default color" #: uchaines.rscouleurrayon msgctxt "uchaines.rscouleurrayon" msgid "Couleur rayon par défaut" msgstr "Default color of the ray" #: uchaines.rscration msgid "Création ?" msgstr "Creation ?" #: uchaines.rscrationrussi msgid "Création réussie." msgstr "Creation successful." #: uchaines.rscrerungroupe msgid "Créer un groupe contenant tous les éléments" msgstr "Create a group containing all elements." #: uchaines.rscroix msgid "Croix +" msgstr "Cross +" #: uchaines.rscroixdroite msgctxt "uchaines.rscroixdroite" msgid "Croix droite" msgstr "Right cross" #: uchaines.rscroixoblique msgctxt "uchaines.rscroixoblique" msgid "Croix oblique" msgstr "Oblique cross" #: uchaines.rscroixx msgid "Croix x" msgstr "Cross x" #: uchaines.rscrrunenouvel msgid "Créér une nouvelle simulation" msgstr "Create a new simulation" #: uchaines.rscrrunenouvel2 msgid "Créér une nouvelle simulation en choisissant les dimensions de l'espace de travail" msgstr "Create a new simulation choosing the dimensions of the workplace" #: uchaines.rsd msgctxt "uchaines.rsd" msgid "D=" msgstr "" #: uchaines.rsdam msgid "dam" msgstr "" #: uchaines.rsdefaire msgid "Défaire" msgstr "Undo" #: uchaines.rsdelalicenseg msgctxt "uchaines.rsdelalicenseg" msgid "de la license GNU GPL" msgstr "of GNU GPL licence" #: uchaines.rsdelespacedet msgctxt "uchaines.rsdelespacedet" msgid "de l'espace de travail" msgstr "of the workspace" #: uchaines.rsdelespacedet2 msgctxt "uchaines.rsdelespacedet2" msgid "de l'espace de travail" msgstr "of the workspace" #: uchaines.rsdemonrpertoi msgctxt "uchaines.rsdemonrpertoi" msgid "de mon répertoire personnel" msgstr "from my personnal directory" #: uchaines.rsdernierpoint msgid "Dernier point pour l'angle au sommet..." msgstr "Last vertex for apex angle..." #: uchaines.rsdesurfacedcr msgctxt "uchaines.rsdesurfacedcr" msgid "de surface d'écran avec repére orthonormé)=" msgstr "of screen surface with orthonormal basis" #: uchaines.rsdeuxdimensio msgctxt "uchaines.rsdeuxdimensio" msgid "à deux dimensions, libre et gratuit, sous license GPL." msgstr "two dimensionnal, free, under GPL licence." #: uchaines.rsdeuxsommetsc msgid "Deux sommets consécutifs confondus..." msgstr "Two consecetive apex have gotten mixed up..." #: uchaines.rsdfinirlerper msgctxt "uchaines.rsdfinirlerper" msgid "Définir le répertoire personnel" msgstr "Define personnal directory" #: uchaines.rsdiamtre msgctxt "uchaines.rsdiamtre" msgid "Diamètre" msgstr "Diameter" #: uchaines.rsdiamtre2 msgctxt "uchaines.rsdiamtre2" msgid "Diamètre=" msgstr "Diameter=" #: uchaines.rsdiamtreangul msgctxt "uchaines.rsdiamtreangul" msgid "Diamètre angulaire du trou:" msgstr "Angular diameter of the hole" #: uchaines.rsdiamtredutro msgctxt "uchaines.rsdiamtredutro" msgid "Diamètre du trou:" msgstr "Diameter of the hole:" #: uchaines.rsdiaphragme msgctxt "uchaines.rsdiaphragme" msgid "Diaphragme" msgstr "Diaphragm" #: uchaines.rsdiaphragmen msgid "Diaphragme n° %s" msgstr "Diaphragm n° %s" #: uchaines.rsdimensionsde msgctxt "uchaines.rsdimensionsde" msgid "Dimensions de l'espace de travail" msgstr "Dimensions of work space" #: uchaines.rsdioptres msgctxt "uchaines.rsdioptres" msgid "Dioptres:" msgstr "Diopters:" #: uchaines.rsdisque msgctxt "uchaines.rsdisque" msgid "Disque" msgstr "Disc" #: uchaines.rsdivers msgctxt "uchaines.rsdivers" msgid "Divers" msgstr "Various" #: uchaines.rsdivers2 msgctxt "uchaines.rsdivers2" msgid "Divers:" msgstr "Various:" #: uchaines.rsdm msgid "dm" msgstr "" #: uchaines.rsdoisjecrerle msgid "Dois je créer le groupe n°%s en y mettant tous les éléments présents ?" msgstr "Should I create the group n° %s and put in it all present objects ?" #: uchaines.rsdondesparezc msgctxt "uchaines.rsdondesparezc" msgid "d'onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)" msgstr "of wave (separate this values with a space; no parenthesis, no comma)" #: uchaines.rsdondesparezc2 msgctxt "uchaines.rsdondesparezc2" msgid "d'onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)" msgstr "of wave (separate this values with a space; no parenthesis, no comma)" #: uchaines.rsdonnerlesval msgctxt "uchaines.rsdonnerlesval" msgid "Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces" msgstr "Give the values of the optical path for wich you want do draw surfaces" #: uchaines.rsdonnerlesval2 msgctxt "uchaines.rsdonnerlesval2" msgid "Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces" msgstr "Give the values of the optical path for wich you want do draw surfaces" #: uchaines.rsdonnesaberra msgid "Données aberrantes!" msgstr "Inconsistent data!" #: uchaines.rsdonnesaberra2 msgid "Données aberrantes !" msgstr "Inconsistent data!" #: uchaines.rsdonnesdecons msgid "Données de construction de la conique aberrantes !" msgstr "Conic construction data is inconsistent!" #: uchaines.rsdonnesdecons2 msgid "Données de construction du miroir aberrantes !" msgstr "Mirror construction data is inconsistent!" #: uchaines.rsdplacer msgctxt "uchaines.rsdplacer" msgid "Déplacer" msgstr "Move" #: uchaines.rsdplacerlebor msgid "Déplacer le bord, puis clic gauche pour le poser..." msgstr "Move the edge and then left click to put it down" #: uchaines.rsdplacerlecen msgid "Déplacer le centre, puis clic gauche pour le poser..." msgstr "Move the center and then left click to put it down" #: uchaines.rsdplacerlefoy msgid "Déplacer le foyer, puis clic gauche pour le poser..." msgstr "Move the focal point and then left click to put it down" #: uchaines.rsdplacerlesom msgid "Déplacer le sommet, puis clic gauche pour le poser..." msgstr "Move the vertex and then left click to put it down" #: uchaines.rsdplacerllmen msgctxt "uchaines.rsdplacerllmen" msgid "Déplacer l'élément, puis clic gauche pour le poser..." msgstr "Move the object and then left click to put it down" #: uchaines.rsdplacerllmen2 msgctxt "uchaines.rsdplacerllmen2" msgid "Déplacer l'élément, puis clic gauche pour le poser..." msgstr "Move the object and then left click to put it down" #: uchaines.rsdplacerunlme msgctxt "uchaines.rsdplacerunlme" msgid "Déplacer un élément existant: translation, rotation, changement focale ou rayon de courbure..." msgstr "Move an object: translation, rotation, focal point or radius of curvature..." #: uchaines.rsdplacerunlme2 msgctxt "uchaines.rsdplacerunlme2" msgid "Déplacer un élément" msgstr "Move an object" #: uchaines.rsdroite msgid "Droite" msgstr "Right" #: uchaines.rsdsassocier msgctxt "uchaines.rsdsassocier" msgid "Désassocier" msgstr "Unassociate" #: uchaines.rsdudernierrpe msgctxt "uchaines.rsdudernierrpe" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "from last directory other than those above" #: uchaines.rsdudernierrpe2 msgctxt "uchaines.rsdudernierrpe2" msgid "du dernier répertoire de chargement autre que ceux ci-dessus" msgstr "from last directory other than those above" #: uchaines.rsdupliquer msgctxt "uchaines.rsdupliquer" msgid "Dupliquer" msgstr "Duplicate" #: uchaines.rsdupliquerunl msgctxt "uchaines.rsdupliquerunl" msgid "Dupliquer un élément existant" msgstr "Duplicate an existing element" #: uchaines.rsdupliquerunl2 msgctxt "uchaines.rsdupliquerunl2" msgid "Dupliquer un élément" msgstr "Duplicate an element" #: uchaines.rsdurpertoiree msgid "du répertoire %sexemples%s" msgstr "from %sexamples%s directory" #: uchaines.rse msgctxt "uchaines.rse" msgid "e=" msgstr "" #: uchaines.rsecran msgctxt "uchaines.rsecran" msgid "Ecran" msgstr "Screen" #: uchaines.rsecrann msgid "Ecran n° %s" msgstr "Screen n° %s" #: uchaines.rsecrans msgctxt "uchaines.rsecrans" msgid "Ecrans:" msgstr "Screens:" #: uchaines.rsediterlecomm msgctxt "uchaines.rsediterlecomm" msgid "Editer le commentaire de la simulation" msgstr "Edit the comments of the simulation" #: uchaines.rsediteurdetex msgctxt "uchaines.rsediteurdetex" msgid "Editeur de texte" msgstr "Text editor" #: uchaines.rsedition msgctxt "uchaines.rsedition" msgid "Edition" msgstr "Edit" #: uchaines.rselementparlm msgctxt "uchaines.rselementparlm" msgid "Element par élément" msgstr "Object by object" #: uchaines.rselmentschois msgctxt "uchaines.rselmentschois" msgid "Eléments à choisir" msgstr "Objects to choose" #: uchaines.rsempennagedes msgctxt "uchaines.rsempennagedes" msgid "Empennage des rayons" msgstr "Ray arrows" #: uchaines.rsen1000medela msgctxt "uchaines.rsen1000medela" msgid "(en 1000éme de la taille du segment)" msgstr "(in 1/1000 of the size of the segment)" #: uchaines.rsen1000medela2 msgctxt "uchaines.rsen1000medela2" msgid "(en 1000éme de la diagonale de l'espace de travail)" msgstr "(in 1/1000 of the diagonal of the work space)" #: uchaines.rsen11000delad msgctxt "uchaines.rsen11000delad" msgid "en 1/1000 de la diagonale" msgstr "in 1/1000 of the diagonal" #: uchaines.rsencliquantsu msgid "En cliquant sur le bouton %sOK%s, vous déclarez accepter les termes" msgstr "When you click on %sOK%s button, you assert to accept the terms" #: uchaines.rsenregistrers msgctxt "uchaines.rsenregistrers" msgid "Enregistrer simulation sous" msgstr "Save simulation as" #: uchaines.rsenregistrers2 msgctxt "uchaines.rsenregistrers2" msgid "Enregistrer simulation" msgstr "Save simulation" #: uchaines.rsenrflexion msgid "En réflexion" msgstr "in reflection" #: uchaines.rsentransmissi msgid "En transmission" msgstr "in transmission" #: uchaines.rsentreparenth msgctxt "uchaines.rsentreparenth" msgid "(entre parenthéses et séparés par des virgules" msgstr "(between parenthesis and separated by commas" #: uchaines.rsepaisseurdel msgctxt "uchaines.rsepaisseurdel" msgid "Epaisseur de la trace" msgstr "Thickness of the trace" #: uchaines.rsepaisseurdud msgid "Epaisseur du diaphragme trop petite, ou diaphragme débordant de l'écran !" msgstr "Thickness of the diaphragm too small, or diaphragm going beyond the screen" #: uchaines.rsepaisseurdut msgctxt "uchaines.rsepaisseurdut" msgid "Epaisseur du trait" msgstr "Thickness of the line" #: uchaines.rsepaisseurlcr msgctxt "uchaines.rsepaisseurlcr" msgid "Epaisseur à l'écran" msgstr "Thickness on screen" #: uchaines.rsepaisseurlcr2 msgctxt "uchaines.rsepaisseurlcr2" msgid "Epaisseur à l'écran" msgstr "Thickness on screen" #: uchaines.rsepaisseurlcr3 msgctxt "uchaines.rsepaisseurlcr3" msgid "Epaisseur à l'écran" msgstr "Thickness on screen" #: uchaines.rsepaisseurpar msgctxt "uchaines.rsepaisseurpar" msgid "Epaisseur par défaut" msgstr "Default thickness" #: uchaines.rsepaisseurtra msgctxt "uchaines.rsepaisseurtra" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra10 msgctxt "uchaines.rsepaisseurtra10" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra2 msgctxt "uchaines.rsepaisseurtra2" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra3 msgctxt "uchaines.rsepaisseurtra3" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra4 msgctxt "uchaines.rsepaisseurtra4" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra5 msgctxt "uchaines.rsepaisseurtra5" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra6 msgctxt "uchaines.rsepaisseurtra6" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra7 msgctxt "uchaines.rsepaisseurtra7" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra8 msgctxt "uchaines.rsepaisseurtra8" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rsepaisseurtra9 msgctxt "uchaines.rsepaisseurtra9" msgid "Epaisseur trait à l'écran" msgstr "Thickness of the line on screen" #: uchaines.rserreur msgid "Erreur !!!" msgstr "Error !!!" #: uchaines.rserreurcritiq msgid "Erreur critique !" msgstr "Critical error !" #: uchaines.rserreurdcritu msgid "Erreur d'écriture sur le disque" msgstr "Error during writing on the disk" #: uchaines.rsespacedetrav msgid "Espace de travail: horiz: [%s,%s]; vert: [%s,%s] " msgstr "Work space: horiz: [%s,%s]; vert: [%s,%s] " #: uchaines.rsespacedetrav2 msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] " msgstr "Work space: horiz: [%s,%s]; vert: [%s,%s] " #: uchaines.rsespacedetrav3 msgctxt "uchaines.rsespacedetrav3" msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - Simulation: %s" msgstr "Work space: horiz: [%s,%s]; vert: [%s,%s] - Simulation: %s " #: uchaines.rsespacedetrav4 msgctxt "uchaines.rsespacedetrav4" msgid "Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - Simulation: %s" msgstr "Work space: horiz: [%s,%s]; vert: [%s,%s] - Simulation: %s " #: uchaines.rsetesvoussurd msgid "Etes-vous sur de vouloir supprimer %s ?" msgstr "Are you sure you want to delete %s ?" #: uchaines.rsetsansespace msgctxt "uchaines.rsetsansespace" msgid "et sans espaces); exemple: (1,4,10)" msgstr "and without spaces); example (1,4,10)" #: uchaines.rsexcentricit msgctxt "uchaines.rsexcentricit" msgid "Excentricité" msgstr "Eccentricity" #: uchaines.rsexemple12014 msgctxt "uchaines.rsexemple12014" msgid "(exemple: 120 145 276)" msgstr "(example: 120 145 276)" #: uchaines.rsexportdelasi msgctxt "uchaines.rsexportdelasi" msgid "Export de la simulation au format image JPG" msgstr "Export simulation as JPG picture" #: uchaines.rsexportergrap msgctxt "uchaines.rsexportergrap" msgid "Exporter graphe" msgstr "Export graph" #: uchaines.rsexporterlasi msgctxt "uchaines.rsexporterlasi" msgid "Exporter la simulation au format image PNG" msgstr "Export simulation as PNG picture" #: uchaines.rsexporterlasi2 #, fuzzy #| msgid "Exporter la simulation au format Postscript" msgid "Exporter la simulation au format Poscscript" msgstr "Export simulation as Postscript file" #: uchaines.rsexportjpg msgctxt "uchaines.rsexportjpg" msgid "Export JPG" msgstr "Export as JPG" #: uchaines.rsexportpng msgctxt "uchaines.rsexportpng" msgid "Export PNG" msgstr "Export as PNG" #: uchaines.rsexportps msgctxt "uchaines.rsexportps" msgid "Export PS" msgstr "Export as PS" #: uchaines.rsexpressionil msgid "Expression illégale pour la l'abscisse minimale !" msgstr "Illegal expression for minimum abscissa !" #: uchaines.rsexpressionil2 msgid "Expression illégale pour la l'abscisse maximale !" msgstr "Illegal expression for maximum abscissa !" #: uchaines.rsexpressionil3 msgctxt "uchaines.rsexpressionil3" msgid "Expression illégale pour la l'ordonnée minimale !" msgstr "Illegal expression for minimum odinate !" #: uchaines.rsexpressionil4 msgctxt "uchaines.rsexpressionil4" msgid "Expression illégale pour la l'ordonnée maximale !" msgstr "Illegal expression for maximum odinate !" #: uchaines.rsexpressionil5 msgid "Expression illégale pour la l'abcisse minimale !" msgstr "Illegal expression for minimum abscissa !" #: uchaines.rsexpressionil6 msgctxt "uchaines.rsexpressionil6" msgid "Expression illégale pour la l'ordonnée minimale !" msgstr "Illegal expression for minimum odinate !" #: uchaines.rsexpressionil7 msgid "Expression illégale pour la l'abcisse maximale !" msgstr "Illegal expression for maximum abscissa !" #: uchaines.rsexpressionil8 msgctxt "uchaines.rsexpressionil8" msgid "Expression illégale pour la l'ordonnée maximale !" msgstr "Illegal expression for maximum odinate !" #: uchaines.rsextrmitpoint msgctxt "uchaines.rsextrmitpoint" msgid "Extrémité (point 2)" msgstr "Extremity (point 2)" #: uchaines.rsextrmitrayon msgctxt "uchaines.rsextrmitrayon" msgid "Extrémité rayon 1 (point D)" msgstr "Extremity ray 1 (point D)" #: uchaines.rsf msgctxt "uchaines.rsf" msgid "|f|=" msgstr "" #: uchaines.rsfacteurdezoo msgctxt "uchaines.rsfacteurdezoo" msgid "Facteur de zoom" msgstr "Zoom factor" #: uchaines.rsfait msgid "Fait !" msgstr "Done !" #: uchaines.rsfaitespasser msgid "Faites passer la souris sur une des croix violettes, ou cliquez sur Fin..." msgstr "Pass the mouse over a purple cross, or click on End..." #: uchaines.rsfaitespasser2 msgid "Faites passer la souris sur un des éléments colorés..." msgstr "Pass the mouse over a colored object..." #: uchaines.rsfaitespasser3 msgid "Faites passer la souris sur un des cercles rouges..." msgstr "Pass the mouse over one of the red circles..." #: uchaines.rsfaitespasser4 msgid "Faites passer la souris sur un point cerclé..." msgstr "Pass the mouse over a circled point..." #: uchaines.rsfichier msgctxt "uchaines.rsfichier" msgid "Fichier" msgstr "File" #: uchaines.rsfichierdesin msgid "Fichier des indices de réfraction non trouvé !" msgstr "Refractive index file not found !" #: uchaines.rsfichierendom msgid "Fichier endommagé!!!" msgstr "Corrupted file !" #: uchaines.rsfichierinacc msgid "Fichier inaccessible !" msgstr "Unreachable file !" #: uchaines.rsfichierinacc2 msgid "Fichier inaccessible en lecture!" msgstr "Unreadable file !" #: uchaines.rsfindelacrati msgid "Fin de la création d'un groupe" msgstr "End of creation of the group" #: uchaines.rsfindpl msgid "Fin dépl." msgstr "End move" #: uchaines.rsfindupl msgid "Fin dupl." msgstr "End dupl." #: uchaines.rsfingroupemen msgid "Fin groupement" msgstr "End group" #: uchaines.rsfinprop msgid "Fin prop." msgstr "End prop." #: uchaines.rsfinsup msgid "Fin sup." msgstr "End del." #: uchaines.rsflche msgid "Fléche" msgstr "Arrow" #: uchaines.rsflchen msgid "Fléche n° %s" msgstr "Arrow n° %s" #: uchaines.rsfocale msgctxt "uchaines.rsfocale" msgid "Focale" msgstr "Focal length" #: uchaines.rsfocalevaleur msgctxt "uchaines.rsfocalevaleur" msgid "Focale (valeur absolue)" msgstr "Focal length (absolute value)" #: uchaines.rsformedelapre msgctxt "uchaines.rsformedelapre" msgid "Forme de la première extrémité" msgstr "Form of first extremity" #: uchaines.rsformedelasec msgctxt "uchaines.rsformedelasec" msgid "Forme de la seconde extrémité" msgstr "Form of second extremity" #: uchaines.rsfoyerf msgctxt "uchaines.rsfoyerf" msgid "Foyer F" msgstr "Focal point F" #: uchaines.rsgauche msgid "Gauche" msgstr "Left" #: uchaines.rsgr msgid "Gr" msgstr "" #: uchaines.rsgras msgid "Gras" msgstr "Bold" #: uchaines.rsgrille msgctxt "uchaines.rsgrille" msgid "Grille" msgstr "Grid" #: uchaines.rsgrillederepr msgctxt "uchaines.rsgrillederepr" msgid "Grille de repérage" msgstr "Location grid" #: uchaines.rsgroupen msgid "Groupe n° %s" msgstr "Group n° %s" #: uchaines.rsgrouper msgctxt "uchaines.rsgrouper" msgid "Grouper" msgstr "Group" #: uchaines.rsgrouperdeslm msgctxt "uchaines.rsgrouperdeslm" msgid "Grouper des éléments" msgstr "Group objects together" #: uchaines.rsgrouperdeslm2 msgctxt "uchaines.rsgrouperdeslm2" msgid "Grouper des éléments existants pour les translater ensemble" msgstr "Group objects together in order to translate them together" #: uchaines.rsgroupertout msgctxt "uchaines.rsgroupertout" msgid "Grouper tout" msgstr "Group all" #: uchaines.rshachures msgctxt "uchaines.rshachures" msgid "Hachures" msgstr "Hatchings" #: uchaines.rshachuressirs msgctxt "uchaines.rshachuressirs" msgid "Hachures si réseau en réflexion" msgstr "Hatching if reflective diffraction grating" #: uchaines.rshaut msgid "Haut" msgstr "Top" #: uchaines.rshauteur msgctxt "uchaines.rshauteur" msgid "Hauteur" msgstr "Height" #: uchaines.rshauteur2 msgctxt "uchaines.rshauteur2" msgid "Hauteur=" msgstr "Height=" #: uchaines.rshlas msgid "Hélas..." msgstr "Sorry..." #: uchaines.rshlas2 msgid "Hélas" msgstr "Sorry..." #: uchaines.rshm msgid "hm" msgstr "" #: uchaines.rshorizontale msgctxt "uchaines.rshorizontale" msgid "Horizontale" msgstr "Horizontal" #: uchaines.rshorizontale2 msgctxt "uchaines.rshorizontale2" msgid "Horizontale:" msgstr "Horizontal" #: uchaines.rshorizontalem msgctxt "uchaines.rshorizontalem" msgid "Horizontalement" msgstr "Horizontally" #: uchaines.rsimportationr msgid "Importation réussie" msgstr "Importation successful" #: uchaines.rsimpossible msgid "Impossible !" msgstr "Impossibe!" #: uchaines.rsimpossibledc msgid "Impossible d'écrire le fichier de configuration %s. La configuration ne sera pas sauvegardée." msgstr "Impossible to write cofiguration file %s. Configuration will not be saved." #: uchaines.rsimpossiblede msgid "Impossible de créer le fichier de configuration primaire d'OptGeo. Vérifiez que vous avez le droit d'écriture dans le répertoire d'installation d'OptGeo. Pour utiliser OptGeo sans fichier de configuration, cliquez sur OK. Sinon, cliquez sur Abandon, rendez le répertoire d'installation d'OptGeo accessible en écriture,puis relancez OptGeo" msgstr "Impossible to create primary configuration file of Optgeo. Verify that you have write permission on Optgeo installation directory. To use Optgeo without configuration file, click on OK. Else, click on Cancel, put the installation directory writable, and restart Optgeo." #: uchaines.rsimpossiblede2 msgid "Impossible de grouper moins de 2 éléments !" msgstr "Impossible to group together less than 2 objects !" #: uchaines.rsimpossiblede3 msgid "Impossible de sauver le commentaire" msgstr "Impossible to save comments" #: uchaines.rsimprimer msgctxt "uchaines.rsimprimer" msgid "Imprimer" msgstr "Print" #: uchaines.rsimprimerlasi msgctxt "uchaines.rsimprimerlasi" msgid "Imprimer la simulation" msgstr "Print simulation" #: uchaines.rsindicederfra msgctxt "uchaines.rsindicederfra" msgid "Indice de réfraction du milieu" msgstr "Refractive index of medium" #: uchaines.rsindicederfra2 msgctxt "uchaines.rsindicederfra2" msgid "Indice de réfraction du verre" msgstr "Glass refractive index" #: uchaines.rsindicesdumil msgctxt "uchaines.rsindicesdumil" msgid "Indices du milieu ambiant" msgstr "Medium index" #: uchaines.rsindicesdumil2 msgctxt "uchaines.rsindicesdumil2" msgid "Indices du milieu ambiant et longueurs d'onde" msgstr "Medium index and wavelength" #: uchaines.rsindicesdumil3 msgctxt "uchaines.rsindicesdumil3" msgid "Indices du milieu ambiant et longueurs d'onde" msgstr "Medium index and wavelength" #: uchaines.rsindiquericil msgctxt "uchaines.rsindiquericil" msgid "Indiquer ici les propriétés communes à appliquer à tous les éléments:" msgstr "Give here all common properties to apply to all objects:" #: uchaines.rsitalique msgid "Italique" msgstr "Italic" #: uchaines.rsjamais msgid "Jamais" msgstr "Never" #: uchaines.rsjeanmariebia msgctxt "uchaines.rsjeanmariebia" msgid "jeanmarie.biansan@free.fr" msgstr "" #: uchaines.rsjeneparviens msgid "Je ne parviens pas à créer le répertoire exemples que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "I can't create the example directory ! Check that you have sufficient rights !" #: uchaines.rsjeneparviens2 msgctxt "uchaines.rsjeneparviens2" msgid "Je ne parviens pas à créer le répertoire de simulations personnelles que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "I can't create the personal simulation directory ! Check that you have sufficient rights !" #: uchaines.rsjeneparviens3 msgid "Je ne parviens pas à créer le répertoire de configuration personnelle que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "I can't create the personal configuration directory ! Check that you have sufficient rights !" #: uchaines.rsjeneparviens4 msgctxt "uchaines.rsjeneparviens4" msgid "Je ne parviens pas à créer le répertoire de simulations personnelles que vous m'indiquez! Vérifiez que vous avez des droits suffisants !" msgstr "I can't create the personal simulation directory ! Check that you have sufficient rights !" #: uchaines.rsjoindrelespo msgctxt "uchaines.rsjoindrelespo" msgid "Joindre les points par:" msgstr "Join points with:" #: uchaines.rsjoindreparun msgctxt "uchaines.rsjoindreparun" msgid "Joindre par un arc de cercle" msgstr "Join by a circle arc" #: uchaines.rsjoindreparun2 msgctxt "uchaines.rsjoindreparun2" msgid "Joindre par un segment" msgstr "Join by a segment" #: uchaines.rsjpg msgctxt "uchaines.rsjpg" msgid "JPG" msgstr "" #: uchaines.rskm msgid "km" msgstr "" #: uchaines.rsladistanceen msgid "La distance entre les points 1 et 2 doit être inférieure au double du rayon !" msgstr "Distance between points 1 and 2 must be lesser than double of radius !" #: uchaines.rslaffichagede msgid "L'affichage des angles impose le tracé des normales" msgstr "Showing angles impose normals drawing" #: uchaines.rslafocaledoit msgid "La focale doit être non nulle !" msgstr "Focal length must be other than zero !" #: uchaines.rslamesemirflc msgctxt "uchaines.rslamesemirflc" msgid "Lame semi réfléchissante" msgstr "Semi reflecting mirror" #: uchaines.rslamesemirflc2 msgid "Lame semi-réfléchissante" msgstr "Semi reflecting mirror" #: uchaines.rslamesemirflc3 msgid "Lame semi réfléchissante n° %s" msgstr "Semi reflecting mirror n° %s" #: uchaines.rslamesemirfle msgid "Lame semi-réflechissante" msgstr "Semi reflecting mirror" #: uchaines.rslangue msgctxt "uchaines.rslangue" msgid "Langue" msgstr "Language" #: uchaines.rslasimulation msgid "La simulation a été modifiée est les modifications n'ont pas été sauvegardées. Voulez vous vraiment quitter OptGéo ?" msgstr "The simulation has changed and modifications have not been saved. Do you really want to quit Optgeo ?" #: uchaines.rslasimulation2 msgid "La simulation a été modifiée et les modifications n'ont pas été sauvegardées. Voulez vous vraiment commencer une nouvelle simulation ?" msgstr "The simulation has changed and modifications have not been saved. Do you want to start a new simulation ?" #: uchaines.rslavirgule msgid "La virgule: ," msgstr "Comma: ," #: uchaines.rsledger msgid "Ledger" msgstr "" #: uchaines.rslegal msgid "Legal" msgstr "" #: uchaines.rslegroupenqui msgctxt "uchaines.rslegroupenqui" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui10 msgctxt "uchaines.rslegroupenqui10" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui11 msgctxt "uchaines.rslegroupenqui11" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui12 msgctxt "uchaines.rslegroupenqui12" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui13 msgctxt "uchaines.rslegroupenqui13" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui14 msgctxt "uchaines.rslegroupenqui14" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui15 msgctxt "uchaines.rslegroupenqui15" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui16 msgctxt "uchaines.rslegroupenqui16" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui17 msgctxt "uchaines.rslegroupenqui17" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui18 msgctxt "uchaines.rslegroupenqui18" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui19 msgctxt "uchaines.rslegroupenqui19" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui2 msgctxt "uchaines.rslegroupenqui2" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui20 msgctxt "uchaines.rslegroupenqui20" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui21 msgctxt "uchaines.rslegroupenqui21" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui22 msgctxt "uchaines.rslegroupenqui22" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui23 msgctxt "uchaines.rslegroupenqui23" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui24 msgctxt "uchaines.rslegroupenqui24" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui3 msgctxt "uchaines.rslegroupenqui3" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui4 msgctxt "uchaines.rslegroupenqui4" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui5 msgctxt "uchaines.rslegroupenqui5" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui6 msgctxt "uchaines.rslegroupenqui6" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui7 msgctxt "uchaines.rslegroupenqui7" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui8 msgctxt "uchaines.rslegroupenqui8" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenqui9 msgctxt "uchaines.rslegroupenqui9" msgid "Le groupe n°%s qui contenait cet élément va être lui aussi détruit." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslegroupenvie msgid "Le groupe n°%s vient d'être créé. Ses éléments pourront être translatés ensemble." msgstr "Group n°%s containing this object is going to be deleted." #: uchaines.rslentille msgctxt "uchaines.rslentille" msgid "Lentille" msgstr "Lens" #: uchaines.rslentilleminc msgctxt "uchaines.rslentilleminc" msgid "Lentille mince convergente" msgstr "Converging thin lens" #: uchaines.rslentilleminc2 msgctxt "uchaines.rslentilleminc2" msgid "Lentille mince divergente" msgstr "Diverging thin lens" #: uchaines.rslentilleminc3 msgid "Lentille mince convergente idéale" msgstr "Ideal converging thin lens" #: uchaines.rslentilleminc4 msgid "Lentille mince divergente idéale" msgstr "Ideal diverging thin lens" #: uchaines.rslentilleminc5 msgid "Lentille mince convergente n° %s" msgstr "Converging thin lens n° %s" #: uchaines.rslentilleminc6 msgid "Lentille mince divergente n° %s" msgstr "Diverging thin lens n° %s" #: uchaines.rslentillepais msgid "Lentille épaisse" msgstr "Thick lens" #: uchaines.rslentillepais2 msgid "Lentille épaisse n° %s" msgstr "Thick lens n° %s" #: uchaines.rslepoint msgid "Le point: ." msgstr "Point: ." #: uchaines.rslerayondecou msgid "Le rayon de courbure doit être non nul !" msgstr "Radius of curvature must be <>0" #: uchaines.rslesangleslcr msgctxt "uchaines.rslesangleslcr" msgid "les angles à l'écran ne sont pas respectés." msgstr "angle on screen are not well represented" #: uchaines.rslesdeuxpoint msgid "Les deux points doivent être distincts !" msgstr "The two points can't be the same !" #: uchaines.rsleslongueurs msgid "Les longueurs d'onde peuvent être modifiées dans le menu options, indices du milieuambiant et longueurs d'onde." msgstr "Wavelength ca be modified in menu options, medium index and wavelength" #: uchaines.rslesparamtres msgid "Les paramètres de la simulation en cours de chargement doivent-ils écraser les actuels ?" msgstr "Must parameters of loading simulation overwrite current parameters ?" #: uchaines.rslesvaleursde msgctxt "uchaines.rslesvaleursde" msgid "Les valeurs de longueur d'onde sont utilisées pour les réseaux de diffraction" msgstr "Wavelength values are used for diffraction grating" #: uchaines.rsletter msgid "Letter" msgstr "" #: uchaines.rslicensegpl msgctxt "uchaines.rslicensegpl" msgid "License GPL" msgstr "GPL Licence" #: uchaines.rslistedessegm msgctxt "uchaines.rslistedessegm" msgid "Liste des segments concernés" msgstr "List of affected segments" #: uchaines.rslog1 msgctxt "uchaines.rslog1" msgid "log1" msgstr "" #: uchaines.rslog2 msgctxt "uchaines.rslog2" msgid "log2" msgstr "" #: uchaines.rslog3 msgctxt "uchaines.rslog3" msgid "log3" msgstr "" #: uchaines.rslog4 msgctxt "uchaines.rslog4" msgid "log4" msgstr "" #: uchaines.rslog5 msgctxt "uchaines.rslog5" msgid "log5" msgstr "" #: uchaines.rslog6 msgctxt "uchaines.rslog6" msgid "log6" msgstr "" #: uchaines.rslog7 msgctxt "uchaines.rslog7" msgid "log7" msgstr "" #: uchaines.rslogiciellibr msgid "Logiciel libre et gratuit de simulation d'optique géométrique plane" msgstr "Free software for optical simulation" #: uchaines.rslongueurdond msgid "Longueur d'onde pour le vert" msgstr "Wavelength for green" #: uchaines.rslongueurdond2 msgid "Longueur d'onde pour le rouge" msgstr "Wavelength for red" #: uchaines.rslongueurdond3 msgid "Longueur d'onde pour le bleu" msgstr "Wavelength for blue" #: uchaines.rslongueurtrac msgctxt "uchaines.rslongueurtrac" msgid "Longueur trace (en % de la diagonale de l'espace de travail)" msgstr "Length of trace (in % of diagonal of workspace)" #: uchaines.rslumireblanch msgid "Lumière blanche" msgstr "White light" #: uchaines.rsm msgid "m" msgstr "" #: uchaines.rsm2 msgid "µm" msgstr "" #: uchaines.rsmaiseuh msgid "Mais euh !!" msgstr "Sorry..." #: uchaines.rsmanuellement msgctxt "uchaines.rsmanuellement" msgid "Manuellement" msgstr "Manually" #: uchaines.rsmatriau msgctxt "uchaines.rsmatriau" msgid "Matériau:" msgstr "Material:" #: uchaines.rsmesuredangle msgctxt "uchaines.rsmesuredangle" msgid "Mesure d'angle" msgstr "Angle measurement" #: uchaines.rsmesuredangle2 msgctxt "uchaines.rsmesuredangle2" msgid "Mesure d'angle n° %s" msgstr "Measurement of angle n° %s" #: uchaines.rsmesuredangle3 msgctxt "uchaines.rsmesuredangle3" msgid "Mesure d'angle n° %s" msgstr "Measurement of angle n° %s" #: uchaines.rsmesuredangle4 msgctxt "uchaines.rsmesuredangle4" msgid "Mesure d'angle" msgstr "Angle measurement" #: uchaines.rsmesuredangle5 msgctxt "uchaines.rsmesuredangle5" msgid "Mesure d'angle n° %s" msgstr "Measurement of angle n° %s" #: uchaines.rsmesurededist msgctxt "uchaines.rsmesurededist" msgid "Mesure de distance" msgstr "Distance measurement" #: uchaines.rsmesurededist2 msgid "Mesure de distance n° %s" msgstr "Measurement of distance n° %s" #: uchaines.rsmesurerladis msgctxt "uchaines.rsmesurerladis" msgid "Mesurer la distance entre deux points" msgstr "Measurement of distance between two points" #: uchaines.rsmesurerunang msgctxt "uchaines.rsmesurerunang" msgid "Mesurer un angle" msgstr "Angle measurement" #: uchaines.rsmiroircnique msgctxt "uchaines.rsmiroircnique" msgid "Miroir cônique" msgstr "Conical mirror" #: uchaines.rsmiroircnique2 msgid "Miroir cônique n° %s" msgstr "Conical mirror n° %s" #: uchaines.rsmiroirconcav msgid "Miroir concave idéal n° %s" msgstr "Concave ideal mirror n° %s" #: uchaines.rsmiroirconcav2 msgid "Miroir concave n° %s" msgstr "Concave mirror n° %s" #: uchaines.rsmiroirconcav3 msgid "Miroir concave paraxial" msgstr "Paraxial concave mirror" #: uchaines.rsmiroirconiqu msgid "Miroir conique" msgstr "Conical mirror" #: uchaines.rsmiroirconvex msgid "Miroir convexe idéal n° %s" msgstr "Ideal convex mirror n° %s" #: uchaines.rsmiroirconvex2 msgid "Miroir convexe n° %s" msgstr "Convex mirror n° %s" #: uchaines.rsmiroirconvex3 msgid "Miroir convexe paraxial" msgstr "Paraxial convex mirror" #: uchaines.rsmiroirplan msgctxt "uchaines.rsmiroirplan" msgid "Miroir plan" msgstr "Plane mirror" #: uchaines.rsmiroirplann msgid "Miroir plan n° %s" msgstr "Plane mirror n° %s" #: uchaines.rsmiroirs msgctxt "uchaines.rsmiroirs" msgid "Miroirs:" msgstr "Mirrors:" #: uchaines.rsmiroirsphriq msgctxt "uchaines.rsmiroirsphriq" msgid "Miroir sphérique concave" msgstr "Concave spherical mirror" #: uchaines.rsmiroirsphriq2 msgctxt "uchaines.rsmiroirsphriq2" msgid "Miroir sphérique convexe" msgstr "Convex spherical mirror" #: uchaines.rsmiroirsphriq3 msgid "Miroir sphérique concave paraxial" msgstr "Paraxial concave spherical mirror" #: uchaines.rsmiroirsphriq4 msgid "Miroir sphérique convexe paraxial" msgstr "Paraxial concave spherical mirror" #: uchaines.rsmiroirsphriq5 msgid "Miroir sphérique concave réel" msgstr "Real concave spherical mirror" #: uchaines.rsmiroirsphriq6 msgid "Miroir sphérique convexe réel" msgstr "Real convex spherical mirror" #: uchaines.rsmm msgid "mm" msgstr "" #: uchaines.rsmodeajoutdun msgid "Mode: ajout d'un rayon lumineux. Esc pour annuler." msgstr "Mode: addition of single ray. Esc to cancel." #: uchaines.rsmodeajoutdun10 msgid "Mode: ajout d'un oeil. Esc pour annuler." msgstr "Mode: addition of eye. Esc to cancel." #: uchaines.rsmodeajoutdun11 msgid "Mode: ajout d'une lame semi-réfléchissante. Esc pour annuler." msgstr "Mode: addition of semireflecting slab. Esc to cancel." #: uchaines.rsmodeajoutdun12 msgctxt "uchaines.rsmodeajoutdun12" msgid "Mode: ajout d'un miroir sphérique concave. Esc pour annuler." msgstr "Mode: addition of concave spherical mirror. Esc to cancel." #: uchaines.rsmodeajoutdun13 msgctxt "uchaines.rsmodeajoutdun13" msgid "Mode: ajout d'un miroir sphérique convexe. Esc pour annuler." msgstr "Mode: addition of convex spherical mirror. Esc to cancel." #: uchaines.rsmodeajoutdun14 msgid "Mode: ajout d'une lentille mince convergente. Esc pour annuler." msgstr "Mode: addition of converging thin lens. Esc to cancel." #: uchaines.rsmodeajoutdun15 msgid "Mode: ajout d'une lentille épaisse. Esc pour annuler." msgstr "Mode: addition of thick lens. Esc to cancel." #: uchaines.rsmodeajoutdun16 msgid "Mode: ajout d'une sphère réfractante. Esc pour annuler." msgstr "Mode: addition of refractive sphere. Esc to cancel." #: uchaines.rsmodeajoutdun17 msgid "Mode: ajout d'une lentille mince divergente. Esc pour annuler." msgstr "Mode: addition of divergent thin lens. Esc to cancel." #: uchaines.rsmodeajoutdun18 msgctxt "uchaines.rsmodeajoutdun18" msgid "Mode: ajout d'un miroir sphérique concave. Esc pour annuler." msgstr "Mode: addition of concave spherical mirror. Esc to cancel." #: uchaines.rsmodeajoutdun19 msgctxt "uchaines.rsmodeajoutdun19" msgid "Mode: ajout d'un miroir sphérique convexe. Esc pour annuler." msgstr "Mode: addition of convex spherical mirror. Esc to cancel." #: uchaines.rsmodeajoutdun2 msgid "Mode: ajout d'un miroir plan. Esc pour annuler." msgstr "Mode: addition of plane mirror. Esc to cancel." #: uchaines.rsmodeajoutdun20 msgid "Mode: ajout d'une source ponctuelle. Esc pour annuler." msgstr "Mode: addition of real point object. Esc to cancel." #: uchaines.rsmodeajoutdun21 msgid "Mode: ajout d'une onde plane" msgstr "Mode: addition of parallel beam. Esc to cancel." #: uchaines.rsmodeajoutdun22 msgid "Mode: ajout d'un texte. Esc pour annuler." msgstr "Mode: addition of text. Esc to cancel." #: uchaines.rsmodeajoutdun23 msgid "Mode: ajout d'un diaphragme. Esc pour annuler." msgstr "Mode: addition of iris diaphragm. Esc to cancel." #: uchaines.rsmodeajoutdun24 msgid "Mode: ajout d'un groupe. Esc pour annuler. %sFin%s pour achever le groupement." msgstr "Mode: addition of group. Esc to cancel. %sFin%s for achieving grouping" #: uchaines.rsmodeajoutdun25 msgid "Mode: ajout d'un réseau diffractant. Esc pour annuler." msgstr "Mode: addition of a diffraction grating. Esc to cancel." #: uchaines.rsmodeajoutdun3 msgid "Mode: ajout d'un trait ou d'une fléche. Esc pour annuler." msgstr "Mode: addition of line or arrow. Esc to cancel." #: uchaines.rsmodeajoutdun4 msgid "Mode: ajout d'un miroir conique concave. Esc pour annuler." msgstr "Mode: addition of concave conical mirror. Esc to cancel." #: uchaines.rsmodeajoutdun5 msgid "Mode: ajout d'un miroir conique convexe. Esc pour annuler." msgstr "Mode: addition of convex conical mirror. Esc to cancel." #: uchaines.rsmodeajoutdun6 msgid "Mode: ajout d'un polyhèdre réfractant. Esc pour annuler." msgstr "Mode: addition of refractive polygon. Esc to cancel." #: uchaines.rsmodeajoutdun7 msgid "Mode: ajout d'un prisme isocèle. Esc pour annuler." msgstr "Mode: addition of isosceles prism. Esc to cancel." #: uchaines.rsmodeajoutdun8 msgid "Mode: ajout d'une polysphère réfractante. Esc pour annuler." msgstr "Mode: addition of refractive polycircle. Esc to cancel." #: uchaines.rsmodeajoutdun9 msgid "Mode: ajout d'un écran. Esc pour annuler." msgstr "Mode: addition of screen. Esc to cancel." #: uchaines.rsmodechangeme msgid "Mode: changement de taille du trou. Esc pour annuler." msgstr "Mode: modify hole's size. Esc to cancel." #: uchaines.rsmodechangeme2 msgid "Mode: changement d'orientation du prisme. Esc pour annuler." msgstr "Mode: modify prism orientation. Esc to cancel." #: uchaines.rsmodechangeme3 msgid "Mode: changement de la hauteur du prisme. Esc pour annuler." msgstr "Mode: modify prism height. Esc to cancel." #: uchaines.rsmodechangeme4 msgid "Mode: changement de l'angle au sommet du prisme. Esc pour annuler." msgstr "Mode: modify prism angle. Esc to cancel." #: uchaines.rsmodechangeme5 msgid "Mode: changement focale d'un élément existant. Esc pour annuler." msgstr "Mode: modify focal length. Esc to cancel." #: uchaines.rsmodechgtrayo msgctxt "uchaines.rsmodechgtrayo" msgid "Mode: chgt rayon courbure d'un élément existant. Esc pour annuler." msgstr "Mode: modify radius of curvature. Esc to cancel." #: uchaines.rsmodechgtrayo2 msgctxt "uchaines.rsmodechgtrayo2" msgid "Mode: chgt rayon courbure d'un élément existant. Esc pour annuler." msgstr "Mode: modify radius of curvature. Esc to cancel." #: uchaines.rsmodedplaceme msgctxt "uchaines.rsmodedplaceme" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "Mode: moving element. Esc to cancel." #: uchaines.rsmodedplaceme2 msgctxt "uchaines.rsmodedplaceme2" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "Mode: moving element. Esc to cancel." #: uchaines.rsmodedplaceme3 msgctxt "uchaines.rsmodedplaceme3" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "Mode: moving element. Esc to cancel." #: uchaines.rsmodedplaceme4 msgctxt "uchaines.rsmodedplaceme4" msgid "Mode: déplacement d'un élément existant. Esc pour annuler." msgstr "Mode: moving element. Esc to cancel." #: uchaines.rsmodeduplicat msgid "Mode: duplication d'un élément existant. Esc pour annuler." msgstr "Mode: duplication. Esc to cancel." #: uchaines.rsmodemesureda msgid "Mode: mesure d'angle. Esc pour annuler." msgstr "Mode: angle measurement. Esc to cancel." #: uchaines.rsmodemesurede msgid "Mode: mesure de distance. Esc pour annuler." msgstr "Mode: distance measurement. Esc to cancel." #: uchaines.rsmodeproprits msgid "Mode: propriétés d'un élément existant. Esc pour annuler." msgstr "Mode: properties of element. Esc to cancel." #: uchaines.rsmoderotation msgid "Mode: rotation d'un élément existant. Esc pour annuler." msgstr "Mode: rotation. Esc to cancel." #: uchaines.rsmodesuppress msgid "Mode: suppression d'un élément existant. Esc pour annuler." msgstr "Mode: deleting. Esc to cancel." #: uchaines.rsmodetranslat msgid "Mode: translation d'un élément existant. Esc pour annuler." msgstr "Mode: translation. Esc to cancel." #: uchaines.rsmodification msgctxt "uchaines.rsmodification" msgid "Modification d'une mesure de distance" msgstr "Mode: modify distance measurement. Esc to cancel." #: uchaines.rsmodification2 msgctxt "uchaines.rsmodification2" msgid "Modification d'une mesure d'angle" msgstr "Mode: modify angle measurement. Esc to cancel." #: uchaines.rsmodifier msgctxt "uchaines.rsmodifier" msgid "Modifier" msgstr "Modify" #: uchaines.rsmodifierlesd msgctxt "uchaines.rsmodifierlesd" msgid "Modifier les dimensions de l'espace de travail" msgstr "Modify workplace's width and height" #: uchaines.rsmodifierlesp msgctxt "uchaines.rsmodifierlesp" msgid "Modifier l'espace de travail" msgstr "Modify workplace" #: uchaines.rsn msgid "n" msgstr "" #: uchaines.rsnantn msgid "Néant n° %s" msgstr "Nothing n° %s" #: uchaines.rsnepeuttreetn msgctxt "uchaines.rsnepeuttreetn" msgid "ne peut être et ne sera pas fait." msgstr "can't and won't be made." #: uchaines.rsnm msgctxt "uchaines.rsnm" msgid "nm" msgstr "" #: uchaines.rsnom msgid "Nom: %s" msgstr "Name: %s" #: uchaines.rsnombre msgctxt "uchaines.rsnombre" msgid "Nombre:" msgstr "Number:" #: uchaines.rsnombredecopi msgctxt "uchaines.rsnombredecopi" msgid "Nombre de copies" msgstr "Number of copies" #: uchaines.rsnombrededcim msgctxt "uchaines.rsnombrededcim" msgid "Nombre de décimales:" msgstr "Decimal number:" #: uchaines.rsnombredepoin msgctxt "uchaines.rsnombredepoin" msgid "Nombre de points calculés pour tracer une surface d'onde:" msgstr "Points number to calculate wave surface:" #: uchaines.rsnombrederayo msgid "Nombre de rayons convergents vers cet objet virtuel" msgstr "Converging rays number to this virtual object" #: uchaines.rsnombrederayo2 msgid "Nombre de rayons émis par cette source ponctuelle" msgstr "Number of rays emitted by this real object" #: uchaines.rsnombrederayo3 msgctxt "uchaines.rsnombrederayo3" msgid "Nombre de rayons" msgstr "Number of rays" #: uchaines.rsnombrederayo4 msgctxt "uchaines.rsnombrederayo4" msgid "Nombre de rayons émis par cette source ponctuelle:" msgstr "Number of rays emitted by this real object" #: uchaines.rsnombredesomm msgctxt "uchaines.rsnombredesomm" msgid "Nombre de sommets" msgstr "Number of vertices" #: uchaines.rsnombredetrai msgid "Nombre de traits par mm" msgstr "Lines per mm" #: uchaines.rsnombremaxdes msgctxt "uchaines.rsnombremaxdes" msgid "Nombre max. de segments par rayon" msgstr "Maximum number of segments per ray" #: uchaines.rsnombremaxdes2 msgctxt "uchaines.rsnombremaxdes2" msgid "Nombre max. de segments" msgstr "Max. number of segments" #: uchaines.rsnombremaxdes3 msgctxt "uchaines.rsnombremaxdes3" msgid "Nombre max. de segment par rayon" msgstr "Maximum number of segments per ray" #: uchaines.rsnombremaxima msgid "Nombre maximal de groupes deja atteint !" msgstr "Maximum number of groups already reached" #: uchaines.rsnombremaxima10 msgid "Nombre maximal de polyhèdres deja atteint !" msgstr "Maximum number of polygons already reached" #: uchaines.rsnombremaxima11 msgctxt "uchaines.rsnombremaxima11" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "Maximum number of converging paraxial spherical mirrors already reached!" #: uchaines.rsnombremaxima12 msgctxt "uchaines.rsnombremaxima12" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "Maximum number of converging paraxial spherical mirrors already reached!" #: uchaines.rsnombremaxima13 msgctxt "uchaines.rsnombremaxima13" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "Maximum number of converging paraxial spherical mirrors already reached!" #: uchaines.rsnombremaxima14 msgctxt "uchaines.rsnombremaxima14" msgid "Nombre maximal de miroirs sphériques convergents paraxiaux deja atteint !" msgstr "Maximum number of converging paraxial spherical mirrors already reached!" #: uchaines.rsnombremaxima15 msgctxt "uchaines.rsnombremaxima15" msgid "Nombre maximal de lentilles mines convergentes paraxiales deja atteint !" msgstr "Maximum number of thin converging paraxial lenses already reached!" #: uchaines.rsnombremaxima16 msgctxt "uchaines.rsnombremaxima16" msgid "Nombre maximal de lentilles mines convergentes paraxiales deja atteint !" msgstr "Maximum number of thin converging paraxial lenses already reached!" #: uchaines.rsnombremaxima17 msgid "Nombre maximal de sources ponctuelles deja atteint !" msgstr "Maximum number of point sources already reached!" #: uchaines.rsnombremaxima18 msgid "Nombre maximal d'ondes planes deja atteint !" msgstr "Maximum number of plane waves already reached!" #: uchaines.rsnombremaxima19 msgid "Nombre maximal de miroirs deja atteint !" msgstr "Maximum number of mirrors already reached!" #: uchaines.rsnombremaxima2 msgid "Nombre maximal de prismes deja atteint !" msgstr "Maximum number of prisms already reached!" #: uchaines.rsnombremaxima20 msgid "Nombre maximal de lentilles deja atteint !" msgstr "Maximum number of lenses already reached!" #: uchaines.rsnombremaxima21 msgid "Nombre maximal de lames deja atteint !" msgstr "Maximum number of semi-reflecting mirrors already reached!" #: uchaines.rsnombremaxima22 msgid "Nombre maximal de miroirs deja atteint !" msgstr "Maximum number of mirrors already reached!" #: uchaines.rsnombremaxima23 msgid "Nombre maximal de miroirs coniques deja atteint !" msgstr "Maximum number of conical mirrors already reached!" #: uchaines.rsnombremaxima24 msgid "Nombre maximal d'écrans deja atteint !" msgstr "Maximum number of screens already reached!" #: uchaines.rsnombremaxima25 msgid "Nombre maximal de diaphragmes deja atteint !" msgstr "Maximum number of diaphrams already reached!" #: uchaines.rsnombremaxima26 msgid "Nombre maximal de polysphères deja atteint !" msgstr "Maximum number of polyspheres already reached!" #: uchaines.rsnombremaxima27 msgid "Nombre maximal de polyhedres deja atteint !" msgstr "Maximum number of polyhedrons already reached!" #: uchaines.rsnombremaxima28 msgid "Nombre maximal de source ponctuelle deja atteint !" msgstr "Maximum number of point sources already reached!" #: uchaines.rsnombremaxima29 msgid "Nombre maximal d'onde plane deja atteint !" msgstr "Maximum number of planewaves already reached!" #: uchaines.rsnombremaxima3 msgid "Nombre maximal de miroirs plans deja atteint !" msgstr "Maximum number of pane mirrors already reached!" #: uchaines.rsnombremaxima30 msgid "Nombre maximal de textes deja atteint !" msgstr "Maximum number of text boxes already reached!" #: uchaines.rsnombremaxima31 msgid "Nombre maximal de texte deja atteint !" msgstr "Maximum number of text boxes already reached!" #: uchaines.rsnombremaxima32 msgid "Nombre maximal de lentilles épaisses deja atteint !" msgstr "Maximum number of thick lenses already reached!" #: uchaines.rsnombremaxima33 msgctxt "uchaines.rsnombremaxima33" msgid "Nombre maximal d'yeux deja atteint !" msgstr "Maximum number of eyes already reached!" #: uchaines.rsnombremaxima34 msgctxt "uchaines.rsnombremaxima34" msgid "Nombre maximal d'yeux deja atteint !" msgstr "Maximum number of eyes already reached!" #: uchaines.rsnombremaxima35 msgctxt "uchaines.rsnombremaxima35" msgid "Nombre maximal:" msgstr "Maximum number:" #: uchaines.rsnombremaxima36 msgid "Nombre maximal de réseau déja atteint !" msgstr "Maximal number of diffraction grating reached" #: uchaines.rsnombremaxima37 msgid "Nombre maximal de réseaux déja atteint !" msgstr "Maximal number of diffraction grating reached" #: uchaines.rsnombremaxima4 msgid "Nombre maximal de traits déjà atteint !" msgstr "Maximum number of lines already reached!" #: uchaines.rsnombremaxima5 msgctxt "uchaines.rsnombremaxima5" msgid "Nombre maximal d'écran deja atteint !" msgstr "Maximum number of screens already reached!" #: uchaines.rsnombremaxima6 msgctxt "uchaines.rsnombremaxima6" msgid "Nombre maximal d'écran deja atteint !" msgstr "Maximum number of screens already reached!" #: uchaines.rsnombremaxima7 msgctxt "uchaines.rsnombremaxima7" msgid "Nombre maximal d'écran deja atteint !" msgstr "Maximum number of screens already reached!" #: uchaines.rsnombremaxima8 msgid "Nombre maximal de rayons deja atteint !" msgstr "Maximum number of rays already reached!" #: uchaines.rsnombremaxima9 msgid "Nombre maximal de spheres deja atteint !" msgstr "Maximum number of spheres already reached!" #: uchaines.rsnormale msgid "Normale" msgstr "Normal" #: uchaines.rsnormales msgctxt "uchaines.rsnormales" msgid "Normales" msgstr "Normals" #: uchaines.rsnouvellesimu msgctxt "uchaines.rsnouvellesimu" msgid "Nouvelle simulation" msgstr "New simulation" #: uchaines.rsobjetdupliqu msgid "Objet à dupliquer:" msgstr "Object to duplicate" #: uchaines.rsobjetponctue msgctxt "uchaines.rsobjetponctue" msgid "Objet ponctuel réel ou virtuel" msgstr "Real or virtual point source" #: uchaines.rsobtu msgctxt "uchaines.rsobtu" msgid "Obtu" msgstr "Obtuse" #: uchaines.rsoeil msgid "Oeil" msgstr "Eye" #: uchaines.rsoeiln msgid "Oeil n° %s" msgstr "Eye n° %s" #: uchaines.rsoeilstylis msgctxt "uchaines.rsoeilstylis" msgid "Oeil stylisé" msgstr "Stylised eye" #: uchaines.rsok msgctxt "uchaines.rsok" msgid "&OK" msgstr "" #: uchaines.rsok2 msgctxt "uchaines.rsok2" msgid "OK" msgstr "" #: uchaines.rsoketenregist msgctxt "uchaines.rsoketenregist" msgid "&Ok et enregistrer sur disque" msgstr "&Ok and save to disk" #: uchaines.rsondeplane msgctxt "uchaines.rsondeplane" msgid "Onde plane" msgstr "Plane wave" #: uchaines.rsondeplanen msgid "Onde plane n° %s" msgstr "Plane wave n° %s" #: uchaines.rsoptgeo msgctxt "uchaines.rsoptgeo" msgid "OptGeo" msgstr "" #: uchaines.rsoptgeo2 msgid "Optgeo" msgstr "" #: uchaines.rsoptgeoestdif msgid "OptGeo est diffusé sous license GPL; veuillez la lire:" msgstr "Optgeo is distributed under the GPL licence; do you want to read it:" #: uchaines.rsoptgeoestexc msgid "OptGeo est exécuté pour la première fois, ou bien son fichier de configuration est corrompu: vous allez maintenant le créer !" msgstr "Optgeo is being executed for the first time (or the configuration folder is corrupted): creating configuration files!" #: uchaines.rsoptgeologici msgctxt "uchaines.rsoptgeologici" msgid "OptGeo, logiciel de simulation d'optique géométrique" msgstr "Optgeo, program for simulation of geometrical optics" #: uchaines.rsoptions msgctxt "uchaines.rsoptions" msgid "Options" msgstr "" #: uchaines.rsoptionsdelag msgctxt "uchaines.rsoptionsdelag" msgid "Options de la grille" msgstr "Grid's options" #: uchaines.rsoptionsdesno msgctxt "uchaines.rsoptionsdesno" msgid "Options des normales" msgstr "Options for drawing normals" #: uchaines.rsoptionspourl msgctxt "uchaines.rsoptionspourl" msgid "Options pour le tracé des normales aux dioptres et miroirs" msgstr "Options for drawing normals at diopters and mirrors" #: uchaines.rsordonnemax msgctxt "uchaines.rsordonnemax" msgid "Ordonnée max.:" msgstr "Max. y-axis:" #: uchaines.rsordonnemin msgctxt "uchaines.rsordonnemin" msgid "Ordonnée min.:" msgstr "Min. y-axis:" #: uchaines.rsordonneminim msgctxt "uchaines.rsordonneminim" msgid "Ordonnée minimale" msgstr "Minimum y-axis:" #: uchaines.rsordonnesmaxi msgctxt "uchaines.rsordonnesmaxi" msgid "Ordonnées maximale" msgstr "Maximum y-axis" #: uchaines.rsordremaximum msgctxt "uchaines.rsordremaximum" msgid "Ordre maximum" msgstr "Highest mode" #: uchaines.rsordreminimum msgctxt "uchaines.rsordreminimum" msgid "Ordre minimum" msgstr "Lowest mode" #: uchaines.rsordresprendr msgctxt "uchaines.rsordresprendr" msgid "Ordres à prendre en compte" msgstr "Mode to take in account" #: uchaines.rsorientation msgctxt "uchaines.rsorientation" msgid "Orientation" msgstr "" #: uchaines.rsoriginepoint msgctxt "uchaines.rsoriginepoint" msgid "Origine (point 1)" msgstr "Origin (point 1)" #: uchaines.rsouvrirsimula msgctxt "uchaines.rsouvrirsimula" msgid "Ouvrir simulation" msgstr "Open simulation" #: uchaines.rsouvrirunesim msgid "Ouvrir une simulation existante" msgstr "Open an existing simulation" #: uchaines.rsp msgctxt "uchaines.rsp" msgid "P=" msgstr "" #: uchaines.rsparamtre msgctxt "uchaines.rsparamtre" msgid "Paramétre" msgstr "Parameter" #: uchaines.rspasdelagrill msgctxt "uchaines.rspasdelagrill" msgid "Pas de la grille" msgstr "Grid off" #: uchaines.rspasdesimulat msgid "Pas de simulation en cours..." msgstr "No simulation in progress" #: uchaines.rspashorizonta msgctxt "uchaines.rspashorizonta" msgid "Pas horizontal=" msgstr "Horizontal step=" #: uchaines.rspasvertical msgctxt "uchaines.rspasvertical" msgid "Pas vertical=" msgstr "Vertical step=" #: uchaines.rspaysage msgid "Paysage" msgstr "Landscape" #: uchaines.rsplein msgid "Plein" msgstr "Full" #: uchaines.rspm msgid "pm" msgstr "" #: uchaines.rspng msgctxt "uchaines.rspng" msgid "PNG" msgstr "" #: uchaines.rspoint1 msgctxt "uchaines.rspoint1" msgid "Point 1" msgstr "" #: uchaines.rspoint2 msgctxt "uchaines.rspoint2" msgid "Point 2" msgstr "" #: uchaines.rspointcourant msgctxt "uchaines.rspointcourant" msgid "Point courant" msgstr "Current point" #: uchaines.rspointills msgid "Pointillés" msgstr "Dotted lines" #: uchaines.rspointsaberra msgid "Points aberrants !" msgstr "Points inconsistent!" #: uchaines.rspointssaisis msgid "Points saisis aberrants !" msgstr "Selected points are inconsistent" #: uchaines.rspointstroppr msgid "Points trop proches !" msgstr "Points too close!" #: uchaines.rspointstroppr2 msgctxt "uchaines.rspointstroppr2" msgid "Points trop proches ou hors de l'espace de travail !" msgstr "Points too close or outside of the workspace!" #: uchaines.rspointstroppr3 msgctxt "uchaines.rspointstroppr3" msgid "Points trop proches ou hors de l'espace de travail !" msgstr "Points too close or outside of the workspace!" #: uchaines.rspolice msgctxt "uchaines.rspolice" msgid "Police" msgstr "Font" #: uchaines.rspolicepardfa msgctxt "uchaines.rspolicepardfa" msgid "Police par défaut" msgstr "Default font" #: uchaines.rspolycercle msgid "Polycercle" msgstr "Polycircle" #: uchaines.rspolycerclerf msgid "Polycercle réfractant" msgstr "Refracting polycircle" #: uchaines.rspolycerclerf2 msgid "Polycercle réfractant n° %s" msgstr "Refracting polycircle n° %s" #: uchaines.rspolygone msgid "Polygone" msgstr "Polygon" #: uchaines.rspolyhdrerfra msgctxt "uchaines.rspolyhdrerfra" msgid "Polyhèdre réfractant" msgstr "Refracting polyhedral" #: uchaines.rspolyhdrerfra2 msgid "Polyhèdre réfractant n° %s" msgstr "Refracting polyhedral n° %s" #: uchaines.rspolysphrerfr msgctxt "uchaines.rspolysphrerfr" msgid "Polysphère réfractante" msgstr "Refracting polysphere" #: uchaines.rsportrait msgid "Portrait" msgstr "" #: uchaines.rsposition msgctxt "uchaines.rsposition" msgid "Position" msgstr "" #: uchaines.rspositiondele msgctxt "uchaines.rspositiondele" msgid "Position de l'empennage sur le segment:" msgstr "Position of the arrow on the segment:" #: uchaines.rspositionnezl msgid "Positionnez l'extrémité du segment et cliquez..." msgstr "Position the end of the segment and click..." #: uchaines.rspositionnezl10 msgid "Positionnez le bord intérieur (point 1) et cliquez..." msgstr "Position the interier edge (point 1) and click..." #: uchaines.rspositionnezl11 msgid "Positionnez le point 2 (autre bord du miroir) et cliquez..." msgstr "Position point 2 (the other edge of the mirror) and click..." #: uchaines.rspositionnezl12 msgid "Positionnez l'autre extrémité du trait et cliquez..." msgstr "Position the other end of the line and click..." #: uchaines.rspositionnezl13 msgid "Positionnez le foyer de la conique et cliquez..." msgstr "Position the focal point of the conic and click..." #: uchaines.rspositionnezl14 msgid "Positionnez le point 2 (autre bord de l'écran) et cliquez..." msgstr "Position point 2 (the other edge of the screen) and click..." #: uchaines.rspositionnezl15 msgid "Positionnez le point 2 (centre pupille) et cliquez..." msgstr "Position point 2 (pupil centre) and click..." #: uchaines.rspositionnezl16 msgid "Positionnez le point 2 (autre bord de la lame) et cliquez..." msgstr "Position point 2 (other edge of the semi-reflecting mirror) and click..." #: uchaines.rspositionnezl17 msgid "Positionnez le point A (sommet du prisme) et cliquez..." msgstr "Position point A (apex of the prism) and click..." #: uchaines.rspositionnezl18 msgid "Positionnez le point 2 (autre bord de la lentille) et cliquez..." msgstr "Position point 2 (other edge of the lens) and click..." #: uchaines.rspositionnezl19 msgid "Positionnez le centre de courbure de la 1ère face puis cliquez..." msgstr "Position the centre of the curve for first side then click..." #: uchaines.rspositionnezl2 msgid "Positionnez l'extrémité du 1er segment et cliquez..." msgstr "Position the end of the 1st segment and click..." #: uchaines.rspositionnezl20 msgid "Positionnez le centre de courbure de la 2ème face puis cliquez..." msgstr "Position the centre of the curve for second side then click..." #: uchaines.rspositionnezl21 msgid "Positionnez le point 2 (rayon 2 limitant le faisceau) puis cliquez..." msgstr "Position point 2 (ray 2 limiting the beam cone) then click..." #: uchaines.rspositionnezl22 msgid "Positionnez le point 2 (extrémité du plan d'onde) puis cliquez..." msgstr "Position point 2 (cross section of plane wave) then click..." #: uchaines.rspositionnezl23 msgid "Positionnez le bord extérieur (point 2) et cliquez.." msgstr "Position the exterior edge (point 2) and click..." #: uchaines.rspositionnezl24 msgid "Positionnez le foyer et cliquez." msgstr "Position the focal point and click." #: uchaines.rspositionnezl25 msgid "Positionnez le centre de courbure et cliquez." msgstr "Position the center of the arc and click." #: uchaines.rspositionnezl26 msgid "Positionnez le sommet de la conique et cliquez..." msgstr "Position the apex of the conic and click..." #: uchaines.rspositionnezl27 msgid "Positionnez le sommet de l'arc de cercle entre les points %s et %s..." msgstr "Position the apex of the (circumscribed) circular arc between points %s and %s..." #: uchaines.rspositionnezl28 msgid "Positionnez le sommet de l'arc de cercle entre les points %s et 1..." msgstr "Position the apex of the (circumscribed) circular arc between points %s and 1..." #: uchaines.rspositionnezl29 msgctxt "uchaines.rspositionnezl29" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "Position point 1 (first edge of the mirror) and click..." #: uchaines.rspositionnezl3 msgid "Positionnez l'extrêmité du 2nd segment..." msgstr "Position the edge of the 2nd segment" #: uchaines.rspositionnezl30 msgid "Positionnez le point 1 (extrémité 1 du trait) et cliquez..." msgstr "Position point 1 (start of the line) and click..." #: uchaines.rspositionnezl31 msgctxt "uchaines.rspositionnezl31" msgid "Positionnez le point 1 (premier bord de l'écran) et cliquez..." msgstr "Position point 1 (first edge of the screen) and click..." #: uchaines.rspositionnezl32 msgid "Positionnez le centre du diaphragme et cliquez..." msgstr "Position the centre of the diaphram and click..." #: uchaines.rspositionnezl33 msgctxt "uchaines.rspositionnezl33" msgid "Positionnez le point 1 (premier bord de l'écran) et cliquez..." msgstr "Position point 1 (first edge of the screen) and click..." #: uchaines.rspositionnezl34 msgid "Positionnez le point 1 (origine du rayon) et cliquez..." msgstr "Position point 1 (origin of ray) and click..." #: uchaines.rspositionnezl35 msgid "Positionnez le centre de la sphère et cliquez..." msgstr "Position the centre of the sphere and click..." #: uchaines.rspositionnezl36 msgid "Positionnez le centre d'inertie G du prisme et cliquez..." msgstr "Position the centre of interia G of the prism and click..." #: uchaines.rspositionnezl37 msgid "Positionnez le point 1 du polyhèdre et cliquez..." msgstr "Position point 1 of the polyhdron and click..." #: uchaines.rspositionnezl38 msgctxt "uchaines.rspositionnezl38" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "Position point 1 (first edge of the mirror) and click..." #: uchaines.rspositionnezl39 msgctxt "uchaines.rspositionnezl39" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "Position point 1 (first edge of the mirror) and click..." #: uchaines.rspositionnezl4 msgid "Positionnez le point suivant et cliquez..." msgstr "Position the next point and click..." #: uchaines.rspositionnezl40 msgctxt "uchaines.rspositionnezl40" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "Position point 1 (first edge of the mirror) and click..." #: uchaines.rspositionnezl41 msgctxt "uchaines.rspositionnezl41" msgid "Positionnez le point 1 (premier bord du miroir) et cliquez..." msgstr "Position point 1 (first edge of the mirror) and click..." #: uchaines.rspositionnezl42 msgctxt "uchaines.rspositionnezl42" msgid "Positionnez le point 1 (premier bord de la lentille) et cliquez..." msgstr "Position point 1 (first edge of the lens) and click..." #: uchaines.rspositionnezl43 msgctxt "uchaines.rspositionnezl43" msgid "Positionnez le point 1 (premier bord de la lentille) et cliquez..." msgstr "Position point 1 (first edge of the lens) and click..." #: uchaines.rspositionnezl44 msgid "Positionnez le point objet virtuel et cliquez..." msgstr "Position the virtual object point and click..." #: uchaines.rspositionnezl45 msgid "Positionnez le point objet réel et cliquez..." msgstr "Position the real object point and click..." #: uchaines.rspositionnezl46 msgid "Positionnez le point 1 (origine d'un rayon et du plan d'onde) et cliquez..." msgstr "Position point 1 (origin of a ray and of the plane wave) and click..." #: uchaines.rspositionnezl47 msgctxt "uchaines.rspositionnezl47" msgid "Positionnez le premier bord du miroir (point 1) et cliquez..." msgstr "Position the first edge of the mirror (point 1) and click..." #: uchaines.rspositionnezl48 msgctxt "uchaines.rspositionnezl48" msgid "Positionnez le premier bord du miroir (point 1) et cliquez..." msgstr "Position the first edge of the mirror (point 1) and click..." #: uchaines.rspositionnezl49 msgid "Positionnez le bord supérieur gauche du texte et cliquez..." msgstr "Position the left-most edge for the text and click..." #: uchaines.rspositionnezl5 msgid "Positionnez le sommet d'arc de cercle suivant..." msgstr "Position the apex of the next circular arc..." #: uchaines.rspositionnezl50 msgid "Positionnez le sommet de la 1ère face..." msgstr "Position the apex of the first face..." #: uchaines.rspositionnezl51 msgid "Positionnez le sommet 1 de la polysphère et cliquez..." msgstr "Position the first vertex of the polysphere and click..." #: uchaines.rspositionnezl52 msgid "Positionnez le point 1 (rétine) et cliquez..." msgstr "Position point 1 (retina) and click..." #: uchaines.rspositionnezl53 msgid "Positionnez le point 1 (premier bord du réseau) et cliquez..." msgstr "Position point 1 (first edge of diffraction grating) and click..." #: uchaines.rspositionnezl54 msgid "Positionnez le point 2 (autre bord du réseau) et cliquez..." msgstr "Position point 2 (second edge of diffraction grating) and click..." #: uchaines.rspositionnezl6 msgid "Positionnez le point 2 (direction du rayon) et cliquez..." msgstr "Position point 2 (ray direction) and click... " #: uchaines.rspositionnezl7 msgid "Positionnez le point D (direction du rayon) et cliquez..." msgstr "Position point D (ray direction) and click..." #: uchaines.rspositionnezl8 msgid "Positionnez le point 1 (rayon1 limitant le faisceau) et cliquez..." msgstr "Position point 1 (ray 1 limiting the beam cone) and click..." #: uchaines.rspositionnezl9 msgid "Positionnez le sommet de la 2ème face..." msgstr "Position the apex of the 2nd face..." #: uchaines.rspositionnezu msgid "Positionnez un point de la surface et cliquez..." msgstr "Position a surface point and click..." #: uchaines.rspositionnezu2 msgid "Positionnez un foyer et cliquez." msgstr "Position focal point and click." #: uchaines.rspouravoirunr msgctxt "uchaines.rspouravoirunr" msgid "pour avoir un repère approximativement orthonormé" msgstr "to have an approximatively orthonormal basis" #: uchaines.rspourchaquera msgctxt "uchaines.rspourchaquera" msgid "Pour chaque rayon, rayons enfants:" msgstr "For each ray, child rays:" #: uchaines.rspourcrerunel msgctxt "uchaines.rspourcrerunel" msgid "Pour créer une lentille autre que plan-convexe, utilisez l'objet lentille épaisse..." msgstr "To create a lens other than plane-convex, use a thick lens object..." #: uchaines.rspourcrerunel2 msgctxt "uchaines.rspourcrerunel2" msgid "Pour créer une lentille autre que plan-convexe, utilisez l'objet lentille épaisse..." msgstr "To create a lens other than plane-convex, use a thick lens object..." #: uchaines.rspourdplacerc msgctxt "uchaines.rspourdplacerc" msgid "Pour déplacer cette palette, glissez-déposez à partir de cette zone..." msgstr "To displace this palette, click and drag within this zone..." #: uchaines.rspourfinirpos msgid "Pour finir, positionnez l'autre extrémité du miroir et cliquez." msgstr "To finish, position the other end of the mirror and click." #: uchaines.rspourlebleu msgctxt "uchaines.rspourlebleu" msgid "Pour le bleu:" msgstr "For a blue ray:" #: uchaines.rspourlerouge msgctxt "uchaines.rspourlerouge" msgid "Pour le rouge:" msgstr "For a red ray:" #: uchaines.rspourletracde msgctxt "uchaines.rspourletracde" msgid "Pour le tracé des surfaces d'onde:" msgstr "To draw the wavefronts:" #: uchaines.rspourlevert msgctxt "uchaines.rspourlevert" msgid "Pour le vert:" msgstr "For a green ray:" #: uchaines.rspourprendree msgid "Pour prendre en compte le changement de langue de l'interface, Optgeo doit maintenant être arrété. Puis relancez le." msgstr "In order to take language's change in account, Optgeo must stop now. Launch it again." #: uchaines.rspourtouslesl msgctxt "uchaines.rspourtouslesl" msgid "Pour tous les éléments" msgstr "For all elements" #: uchaines.rspourtouterem msgctxt "uchaines.rspourtouterem" msgid "Pour toute remarque, cliquer sur:" msgstr "for all remarks, click on:" #: uchaines.rsprfrences msgctxt "uchaines.rsprfrences" msgid "Préférences" msgstr "Preferences" #: uchaines.rsprfrencespro msgctxt "uchaines.rsprfrencespro" msgid "Préférences: propriétés par défaut à la création" msgstr "Preferences: default properties upon creation" #: uchaines.rsprisme msgctxt "uchaines.rsprisme" msgid "Prisme" msgstr "Prism" #: uchaines.rsprismen msgid "Prisme n° %s" msgstr "Prism n° %s" #: uchaines.rsproprits msgctxt "uchaines.rsproprits" msgid "Propriétés" msgstr "Properties" #: uchaines.rspropritsdece msgctxt "uchaines.rspropritsdece" msgid "Propriétés de cette sphère" msgstr "Properties of this sphere" #: uchaines.rspropritsdece10 msgid "Propriétés de ce diaphragme:" msgstr "Properties of this diaphram:" #: uchaines.rspropritsdece11 msgid "Propriétés de cette lame semi-réfléchissante:" msgstr "Properties of this semi-reflecting mirror (beamsplitter)" #: uchaines.rspropritsdece12 msgid "Propriétés de ce rayon:" msgstr "Properties of this ray:" #: uchaines.rspropritsdece13 msgid "Propriétés de cette source ponctuelle:" msgstr "Properties of this point source:" #: uchaines.rspropritsdece14 msgid "Propriétés de cette onde plane:" msgstr "Properties of this plane wave:" #: uchaines.rspropritsdece15 msgid "Propriétés de ce miroir elliptique:" msgstr "Properties of this elliptical mirror:" #: uchaines.rspropritsdece16 msgid "Propriétés de ce miroir hyperbolique:" msgstr "Properties of this hyperbolic mirror:" #: uchaines.rspropritsdece17 msgid "Propriétés de ce miroir parabolique:" msgstr "Properties of this parabolic mirror:" #: uchaines.rspropritsdece18 msgid "Propriétés de ce miroir concave:" msgstr "Properties of this concave mirror:" #: uchaines.rspropritsdece19 msgid "Propriétés de ce miroir convexe:" msgstr "Properties of this convex mirror:" #: uchaines.rspropritsdece2 msgctxt "uchaines.rspropritsdece2" msgid "Propriétés de ce polycercle" msgstr "Properties of this polycircle:" #: uchaines.rspropritsdece20 msgid "Propriétés de cette lentille convergente:" msgstr "Properties of this converging lens:" #: uchaines.rspropritsdece21 msgid "Propriétés de cette lentille épaisse:" msgstr "Properties of this thick lens:" #: uchaines.rspropritsdece22 msgid "Propriétés de cette lentille divergente:" msgstr "Properties of this diverging lens:" #: uchaines.rspropritsdece23 msgid "Propriétés de cette mesure de distance:" msgstr "Properties of this distance measurement:" #: uchaines.rspropritsdece24 msgid "Propriétés de ce réseau" msgstr "Properties of this diffraction grating" #: uchaines.rspropritsdece3 msgctxt "uchaines.rspropritsdece3" msgid "Propriétés de ce polygône" msgstr "Properties of this polygon" #: uchaines.rspropritsdece4 msgid "Propriétés de ce trait..." msgstr "Properties of this line..." #: uchaines.rspropritsdece5 msgid "Propriétés de cette mesure d'angle:" msgstr "Properties of this angle measurement:" #: uchaines.rspropritsdece6 msgid "Propriétés de ce texte:" msgstr "Properties of this text:" #: uchaines.rspropritsdece7 msgid "Propriétés de ce miroir plan:" msgstr "Properties of this plane mirror:" #: uchaines.rspropritsdece8 msgid "Propriétés de cet écran:" msgstr "Properties of this screen:" #: uchaines.rspropritsdece9 msgid "Propriétés de cet oeil stylisé:" msgstr "Properties of this stylised eye:" #: uchaines.rspropritsdela msgctxt "uchaines.rspropritsdela" msgid "Propriétés de la grille" msgstr "Properties of the grid:" #: uchaines.rspropritsdele msgctxt "uchaines.rspropritsdele" msgid "Propriétés de l'empennage des rayons" msgstr "Properties of the ray arrows" #: uchaines.rspropritsdelo msgctxt "uchaines.rspropritsdelo" msgid "Propriétés de l'objet:" msgstr "Properties of this object:" #: uchaines.rspropritsdelo2 msgctxt "uchaines.rspropritsdelo2" msgid "Propriétés de l'objet:" msgstr "Properties of this object:" #: uchaines.rspropritsdesp msgctxt "uchaines.rspropritsdesp" msgid "Propriétés des points" msgstr "Properties of the points" #: uchaines.rspropritsdufi msgid "Propriétés du fichier Postscript" msgstr "Properties of the postscript file" #: uchaines.rspropritsdunl msgctxt "uchaines.rspropritsdunl" msgid "Propriétés d'un élément existant" msgstr "Properties of an existing element" #: uchaines.rspropritsdunl2 msgctxt "uchaines.rspropritsdunl2" msgid "Propriétés d'un élément" msgstr "Properties on an element" #: uchaines.rsquevoulezvou msgctxt "uchaines.rsquevoulezvou" msgid "Que voulez vous faire ?" msgstr "What would you like to do ?" #: uchaines.rsquitter msgctxt "uchaines.rsquitter" msgid "Quitter" msgstr "Exit" #: uchaines.rsr msgctxt "uchaines.rsr" msgid "R=" msgstr "" #: uchaines.rsr1 msgctxt "uchaines.rsr1" msgid "R1=" msgstr "" #: uchaines.rsr2 msgctxt "uchaines.rsr2" msgid "R2=" msgstr "" #: uchaines.rsrad msgctxt "uchaines.rsrad" msgid "rad" msgstr "" #: uchaines.rsrapport msgctxt "uchaines.rsrapport" msgid "Rapport=" msgstr "Ratio=" #: uchaines.rsrapporthaute msgctxt "uchaines.rsrapporthaute" msgid "Rapport hauteur/largeur" msgstr "height/width ratio" #: uchaines.rsrapportidalp msgctxt "uchaines.rsrapportidalp" msgid "Rapport idéal (permettant d'occuper le maximum" msgstr "Ideal ratio (allowing the most space)" #: uchaines.rsrayon msgid "Rayon" msgstr "Ray" #: uchaines.rsrayondecourb msgctxt "uchaines.rsrayondecourb" msgid "Rayon de courbure" msgstr "Radius of curvature" #: uchaines.rsrayondelasph msgid "Rayon de la sphère trop petit ou trop grand!" msgstr "Radius of the sphere too small or too large!" #: uchaines.rsrayonextrieu msgctxt "uchaines.rsrayonextrieu" msgid "Rayon extérieur" msgstr "Exterior ray" #: uchaines.rsrayonintrieu msgid "Rayon intérieur du diaphragme trop petit !" msgstr "Interior radius of the diaphram too small!" #: uchaines.rsrayonintrieu2 msgctxt "uchaines.rsrayonintrieu2" msgid "Rayon intérieur" msgstr "Interior ray" #: uchaines.rsrayonn msgid "Rayon n° %s" msgstr "Ray n° %s" #: uchaines.rsrayonrflchis msgctxt "uchaines.rsrayonrflchis" msgid "Rayon réfléchi (sens entrant)" msgstr "Reflected rays (for external incidence)" #: uchaines.rsrayonrflchis2 msgctxt "uchaines.rsrayonrflchis2" msgid "Rayon réfléchi (sens sortant)" msgstr "Reflected rays (for internal incidence)" #: uchaines.rsrayonsdecour msgctxt "uchaines.rsrayonsdecour" msgid "Rayons de courbure des faces" msgstr "Radii of curvature of the sides" #: uchaines.rsrayonsenfant msgctxt "uchaines.rsrayonsenfant" msgid "Rayons enfants" msgstr "Child rays" #: uchaines.rsrayonsfantom msgctxt "uchaines.rsrayonsfantom" msgid "Rayons fantomes" msgstr "Phantom Rays" #: uchaines.rsrayonunique msgctxt "uchaines.rsrayonunique" msgid "Rayon unique" msgstr "Single Ray" #: uchaines.rsredimensionn msgid "Redimensionnement impossible" msgstr "Resizing impossible" #: uchaines.rsrefaire msgctxt "uchaines.rsrefaire" msgid "Refaire" msgstr "Redo" #: uchaines.rsrelierlespoi msgid "Relier les points %s et %s par:" msgstr "Join points %s and %s by:" #: uchaines.rsrelierlespoi2 msgctxt "uchaines.rsrelierlespoi2" msgid "Relier les points" msgstr "Join the points" #: uchaines.rsremarqueimpo msgid "Remarque importante: ce réseau diffractant doit être éclairé par une onde plane.Un rayon unique sera diffracté selon la loi des réseaux sin i=+-sin i0+k.lambda/amais cela n'a pas de sens pour un rayon unique." msgstr "Remark: thise diffraction grating must be lighted by a plane wave. AN unique ray will be diffracted by sin i=+-sin i0+k.lambda/a but this doesnt make sens" #: uchaines.rsremarqueleno msgctxt "uchaines.rsremarqueleno" msgid "Remarque: le non respect du rapport implique que" msgstr "Remark: not maintaining the ratio implies that" #: uchaines.rsremarquesila msgctxt "uchaines.rsremarquesila" msgid "Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces" msgstr "Remark: If the simulation contains any thin (idealised) lenses or paraxial mirrors, the drawing of these surfaces" #: uchaines.rsremarquesila2 msgctxt "uchaines.rsremarquesila2" msgid "Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces" msgstr "Remark: If the simulation contains any thin (idealised) lenses or paraxial mirrors, the drawing of these surfaces" #: uchaines.rsrentrant msgid "A gauche" msgstr "To the left" #: uchaines.rsrepertoirede msgid "Repertoire des exemples introuvable et incréable!" msgstr "Directory of examples can not be found or created!" #: uchaines.rsrepertoirede2 msgid "Repertoire des simulations personnelles introuvable et incréable !" msgstr "Personnal directory of simulations can not be found or created!" #: uchaines.rsrepertoirede3 msgid "Repertoire de configuration personnelle introuvable et incréable. Vous ne pourrez pas sauver vos modifications d'environnement !" msgstr "Personnal configuration directory can not be found or created. You will not be able to save your modifications to the enviroment!" #: uchaines.rsrepreorthono msgctxt "uchaines.rsrepreorthono" msgid "Repére orthonormé (approximativement)" msgstr "Orthonormal basis (approximatively)" #: uchaines.rsreprer msgctxt "uchaines.rsreprer" msgid "Repérer" msgstr "" #: uchaines.rsreseau msgctxt "uchaines.rsreseau" msgid "Réseau" msgstr "Diffraction grating" #: uchaines.rsreseaun msgid "Réseau n° %s" msgstr "Diffraction grating n° %s" #: uchaines.rsrespecterler msgid "Respecter le rapport hauteur/largeur de l" msgstr "Maintain the height/width ratio of the" #: uchaines.rsrespecterler2 msgctxt "uchaines.rsrespecterler2" msgid "Respecter le rapport hauteur/largeur de l'écran" msgstr "Maintain the height/width ratio of the screen" #: uchaines.rsrespecterles msgctxt "uchaines.rsrespecterles" msgid "Respecter les angles à l'impression" msgstr "Maintain the angle for printing" #: uchaines.rsrespecterrap msgctxt "uchaines.rsrespecterrap" msgid "Respecter rapport hauteur/largeur de l'écran" msgstr "Maintain the height/width ratio of the screen" #: uchaines.rsrext msgctxt "uchaines.rsrext" msgid "Rext=" msgstr "" #: uchaines.rsri msgctxt "uchaines.rsri" msgid "Ri=" msgstr "" #: uchaines.rsrint msgctxt "uchaines.rsrint" msgid "Rint=" msgstr "" #: uchaines.rsrouge msgid "Rouge" msgstr "Red" #: uchaines.rsrpertoiredes msgctxt "uchaines.rsrpertoiredes" msgid "Répertoire des exemples" msgstr "Folder of examples" #: uchaines.rsrpertoiredev msgctxt "uchaines.rsrpertoiredev" msgid "Répertoire devant recevoir vos simulations personnelles" msgstr "Folder for saving simulations" #: uchaines.rsrpertoiredev2 msgctxt "uchaines.rsrpertoiredev2" msgid "Répertoire devant contenir votre configuration personnelle d'OptGeo" msgstr "Folder with user's configuration files" #: uchaines.rsrpertoiredin msgctxt "uchaines.rsrpertoiredin" msgid "Répertoire d'installation d'OptGeo" msgstr "Optgeo installation folder" #: uchaines.rsrseau msgctxt "uchaines.rsrseau" msgid "Réseau" msgstr "Diffraction grating" #: uchaines.rsrseaudiffrac msgctxt "uchaines.rsrseaudiffrac" msgid "Réseau diffractant" msgstr "Diffraction grating" #: uchaines.rsrsolutions msgctxt "uchaines.rsrsolutions" msgid "Résolutions" msgstr "Resolutions" #: uchaines.rsrtablirlesva msgctxt "uchaines.rsrtablirlesva" msgid "&Rétablir les valeurs d'origine de tous les éléments" msgstr "Revert to default values for all elements" #: uchaines.rssaisieduneon msgctxt "uchaines.rssaisieduneon" msgid "Saisie d'une onde plane" msgstr "Add a plane wave" #: uchaines.rssaisieduneso msgctxt "uchaines.rssaisieduneso" msgid "Saisie d'une source ponctuelle" msgstr "Add a point source" #: uchaines.rssaisiedunray msgctxt "uchaines.rssaisiedunray" msgid "Saisie d'un rayon" msgstr "Add a ray" #: uchaines.rssaisirletext msgctxt "uchaines.rssaisirletext" msgid "Saisir le texte à afficher" msgstr "Add text to display" #: uchaines.rssaisissez msgctxt "uchaines.rssaisissez" msgid "Saisissez" msgstr "Choose" #: uchaines.rssaisissezled msgid "Saisissez le diamètre de la lentille..." msgstr "Choose the diameter of the lens..." #: uchaines.rssaissezledia msgctxt "uchaines.rssaissezledia" msgid "Saissez le diamètre de la lentille" msgstr "Choose the diameter of the lens" #: uchaines.rsseulementsil msgid "Seulement si le réfracté existe" msgstr "Only if a refracted ray exists" #: uchaines.rsseulementsil2 msgctxt "uchaines.rsseulementsil2" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulementsil3 msgctxt "uchaines.rsseulementsil3" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulementsil4 msgctxt "uchaines.rsseulementsil4" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulementsil5 msgctxt "uchaines.rsseulementsil5" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulementsil6 msgctxt "uchaines.rsseulementsil6" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulementsil7 msgctxt "uchaines.rsseulementsil7" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulementsil8 msgctxt "uchaines.rsseulementsil8" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulementsil9 msgctxt "uchaines.rsseulementsil9" msgid "Seulement si le réfracté n'existe pas" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rsseulemenxtsi msgid "Seulemenxt si le réfracté existe" msgstr "Only if a refracted ray doesn't exist" #: uchaines.rssignesicentr msgctxt "uchaines.rssignesicentr" msgid "Signe + si centre de courbure Ci à gauche de Si" msgstr "" #: uchaines.rssiteweb msgctxt "uchaines.rssiteweb" msgid "Site Web" msgstr "Website" #: uchaines.rssitewebdelau msgctxt "uchaines.rssitewebdelau" msgid "Site Web de l'auteur" msgstr "Author's website" #: uchaines.rssommet msgid "Sommet %s" msgstr "Vertex %s" #: uchaines.rssommets1 msgctxt "uchaines.rssommets1" msgid "Sommet S1" msgstr "Vertex S1" #: uchaines.rssommets2 msgctxt "uchaines.rssommets2" msgid "Sommet S2" msgstr "Vertex S2" #: uchaines.rssommetsdecep msgctxt "uchaines.rssommetsdecep" msgid "Sommets de ce polyhèdre" msgstr "no. of vertices for this polyhedran" #: uchaines.rssommetsdecet msgid "Sommets de cette polysphére" msgstr "no. of vertices for this polysphere" #: uchaines.rssommetsdecet2 msgid "Sommets de cette polysphère" msgstr "No. of vertices for this polysphere" #: uchaines.rssommetstropp msgid "Sommets trop proches !" msgstr "Vertices too close!" #: uchaines.rssonrayondeco msgctxt "uchaines.rssonrayondeco" msgid "Son rayon de courbure vaut:" msgstr "This radius of curvature implies:" #: uchaines.rssortant msgid "A droite" msgstr "To the right" #: uchaines.rssoulign msgid "Souligné" msgstr "Underline" #: uchaines.rssource msgctxt "uchaines.rssource" msgid "Source" msgstr "" #: uchaines.rssourceponctu msgid "Source ponctuelle" msgstr "Point source" #: uchaines.rssourceponctu2 msgid "Source ponctuelle n° %s" msgstr "Point source n° %s" #: uchaines.rssources msgctxt "uchaines.rssources" msgid "Sources:" msgstr "" #: uchaines.rssphre msgid "Sphère" msgstr "Sphere" #: uchaines.rssphrerfracta msgctxt "uchaines.rssphrerfracta" msgid "Sphère réfractante" msgstr "Refracting sphere" #: uchaines.rssphrerfracta2 msgid "Sphère réfractante n° %s" msgstr "Refracting sphere n° %s" #: uchaines.rssplashscreen msgid "Splashscreen" msgstr "" #: uchaines.rsstyledespoin msgctxt "uchaines.rsstyledespoin" msgid "Style des points" msgstr "Point style" #: uchaines.rsstyledutrait msgctxt "uchaines.rsstyledutrait" msgid "Style du trait (valable si épaisseur=1)" msgstr "Line style (applied when thickness=1)" #: uchaines.rssuivant msgctxt "uchaines.rssuivant" msgid "Suivant >" msgstr "Next >" #: uchaines.rssuperposersi msgctxt "uchaines.rssuperposersi" msgid "Superposer simulation" msgstr "Import simulation" #: uchaines.rssupprimer msgctxt "uchaines.rssupprimer" msgid "Supprimer" msgstr "Delete" #: uchaines.rssupprimerced msgctxt "uchaines.rssupprimerced" msgid "Supprimer ce diaphragme" msgstr "Delete this diaphram" #: uchaines.rssupprimercem msgctxt "uchaines.rssupprimercem" msgid "Supprimer ce miroir" msgstr "Delete this mirror" #: uchaines.rssupprimercep msgctxt "uchaines.rssupprimercep" msgid "Supprimer ce polycercle" msgstr "Delete this polycircle" #: uchaines.rssupprimercep2 msgctxt "uchaines.rssupprimercep2" msgid "Supprimer ce prisme" msgstr "Delete this prism" #: uchaines.rssupprimercep3 msgctxt "uchaines.rssupprimercep3" msgid "Supprimer ce polygône" msgstr "Delete this polygone" #: uchaines.rssupprimercer msgctxt "uchaines.rssupprimercer" msgid "Supprimer ce rayon" msgstr "Delete this ray" #: uchaines.rssupprimercer2 msgctxt "uchaines.rssupprimercer2" msgid "Supprimer ce réseau" msgstr "Delete this diffraction grating" #: uchaines.rssupprimercet msgctxt "uchaines.rssupprimercet" msgid "Supprimer cette sphère" msgstr "Delete this sphere" #: uchaines.rssupprimercet10 msgctxt "uchaines.rssupprimercet10" msgid "Supprimer cette distance" msgstr "Delete this distance" #: uchaines.rssupprimercet11 msgctxt "uchaines.rssupprimercet11" msgid "Supprimer cet angle" msgstr "Delete this angle" #: uchaines.rssupprimercet2 msgctxt "uchaines.rssupprimercet2" msgid "Supprimer cet écran" msgstr "Delete this screen" #: uchaines.rssupprimercet3 msgctxt "uchaines.rssupprimercet3" msgid "Supprimer ce trait" msgstr "Delete this line" #: uchaines.rssupprimercet4 msgctxt "uchaines.rssupprimercet4" msgid "Supprimer cette lame" msgstr "Delete this semi-reflecting mirror" #: uchaines.rssupprimercet5 msgctxt "uchaines.rssupprimercet5" msgid "Supprimer cette lentille" msgstr "Delete this lens" #: uchaines.rssupprimercet6 msgctxt "uchaines.rssupprimercet6" msgid "Supprimer cet oeil" msgstr "Delete this eye" #: uchaines.rssupprimercet7 msgctxt "uchaines.rssupprimercet7" msgid "Supprimer cette onde plane" msgstr "Delete this planewave" #: uchaines.rssupprimercet8 msgctxt "uchaines.rssupprimercet8" msgid "Supprimer cette source ponctuelle" msgstr "Delete this point source" #: uchaines.rssupprimercet9 msgctxt "uchaines.rssupprimercet9" msgid "Supprimer ce texte" msgstr "Delete this text" #: uchaines.rssupprimerunl msgctxt "uchaines.rssupprimerunl" msgid "Supprimer un élément existant" msgstr "Delete an existing element" #: uchaines.rssupprimerunl2 msgctxt "uchaines.rssupprimerunl2" msgid "Supprimer un élément" msgstr "Delete an element" #: uchaines.rssurfacesdond msgctxt "uchaines.rssurfacesdond" msgid "Surfaces d'onde" msgstr "Wavefronts" #: uchaines.rssurlaxeorien msgctxt "uchaines.rssurlaxeorien" msgid "sur l'axe orienté de S1 vers S2, signe - sinon." msgstr "" #: uchaines.rssystmeoptiqu msgctxt "uchaines.rssystmeoptiqu" msgid "Système optique idéal" msgstr "Ideal optical system" #: uchaines.rssystmeoptiqu2 msgctxt "uchaines.rssystmeoptiqu2" msgid "Système optique réel" msgstr "Real optical system" #: uchaines.rst msgctxt "uchaines.rst" msgid "t=" msgstr "" #: uchaines.rst0 msgctxt "uchaines.rst0" msgid "t0=" msgstr "" #: uchaines.rst1 msgctxt "uchaines.rst1" msgid "t1=" msgstr "" #: uchaines.rst2 msgctxt "uchaines.rst2" msgid "t2=" msgstr "" #: uchaines.rstaille msgid "Taille: %s" msgstr "Size: %s" #: uchaines.rstailledelala msgid "Taille de la lame trop petite !" msgstr "Size of the semi-reflecting mirror is too small!" #: uchaines.rstailledelale msgid "Taille de la lentille trop petite !" msgstr "Lens size is too small!" #: uchaines.rstailledelapr msgctxt "uchaines.rstailledelapr" msgid "Taille de la première extrémité" msgstr "Size of the first end point" #: uchaines.rstailledelase msgctxt "uchaines.rstailledelase" msgid "Taille de la seconde extrémité" msgstr "Size of the second end point" #: uchaines.rstailledelcra msgid "Taille de l'écran trop petite !" msgstr "Screen size is too small!" #: uchaines.rstailledelemp msgctxt "uchaines.rstailledelemp" msgid "Taille de l'empennage:" msgstr "Arrow size" #: uchaines.rstailledeloei msgctxt "uchaines.rstailledeloei" msgid "Taille de l'oeil trop petite !" msgstr "Size of the eye is too small!" #: uchaines.rstailledeloei2 msgctxt "uchaines.rstailledeloei2" msgid "Taille de l'oeil trop petite !" msgstr "Size of the eye is too small!" #: uchaines.rstailledespoi msgctxt "uchaines.rstailledespoi" msgid "Taille des points" msgstr "Point size" #: uchaines.rstailledumiro msgctxt "uchaines.rstailledumiro" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "Mirror size is too small, or outside of the screen!" #: uchaines.rstailledumiro2 msgid "Taille du miroir trop petite !" msgstr "Mirror size is too small!" #: uchaines.rstailledumiro3 msgctxt "uchaines.rstailledumiro3" msgid "Taille du miroir trop petite ou focale trop courte, ou débordant de l'écran !" msgstr "Mirror size is too small or focus is too short, or outside of the screen!" #: uchaines.rstailledumiro4 msgctxt "uchaines.rstailledumiro4" msgid "Taille du miroir trop petite ou focale trop courte, ou débordant de l'écran !" msgstr "Mirror size is too small or focus is too short, or outside of the screen!" #: uchaines.rstailledumiro5 msgctxt "uchaines.rstailledumiro5" msgid "Taille du miroir trop petite ou focale trop courte, ou miroir débordant de l'écran !" msgstr "Mirror size is too small or focus is too short, or mirror is outside of the screen!" #: uchaines.rstailledumiro6 msgctxt "uchaines.rstailledumiro6" msgid "Taille du miroir trop petite ou focale trop courte, ou miroir débordant de l'écran !" msgstr "Mirror size is too small or focus is too short, or mirror is outside of the screen!" #: uchaines.rstailledumiro7 msgctxt "uchaines.rstailledumiro7" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "Mirror size is too small, or outside of the screen!" #: uchaines.rstailledumiro8 msgctxt "uchaines.rstailledumiro8" msgid "Taille du miroir trop petite, ou débordant de l'écran !" msgstr "Mirror size is too small, or outside of the screen!" #: uchaines.rstailledupris msgid "Taille du prisme trop petite !" msgstr "Prism size is too small!" #: uchaines.rstailledursea msgid "Taille du réseau trop petite !" msgstr "Diffraction grating too small" #: uchaines.rstailledursea2 msgid "Taille du réseau trop petite, ou débordant de l'écran !" msgstr "Diffraction grating too small" #: uchaines.rstailledutrai msgid "Taille du trait trop petite !" msgstr "Line size is too small!" #: uchaines.rstailledutrai2 msgid "Taille du trait trop petite ou points hors de l'espace de travail !" msgstr "Line size is too small or points outside of workspace!" #: uchaines.rstailleendela msgctxt "uchaines.rstailleendela" msgid "Taille (en % de la page)" msgstr "Size (in % of the page)" #: uchaines.rstaillepage msgctxt "uchaines.rstaillepage" msgid "Taille page" msgstr "Page size" #: uchaines.rstexte msgctxt "uchaines.rstexte" msgid "Texte" msgstr "Text" #: uchaines.rstexten msgid "Texte n° %s" msgstr "Text n° %s" #: uchaines.rstextesurlede msgctxt "uchaines.rstextesurlede" msgid "Texte sur le dessin" msgstr "Add text" #: uchaines.rstirs msgid "Tirés" msgstr "" #: uchaines.rstirspoints msgid "Tirés - Points" msgstr "" #: uchaines.rstirspointspo msgid "Tirés - Points - Points" msgstr "" #: uchaines.rstoujours msgid "Toujours" msgstr "Always" #: uchaines.rstousleslment msgctxt "uchaines.rstousleslment" msgid "Tous les éléments" msgstr "All elements" #: uchaines.rstracer msgctxt "uchaines.rstracer" msgid "Tracer" msgstr "Draw" #: uchaines.rstracerdessur msgctxt "uchaines.rstracerdessur" msgid "Tracer des surfaces d'onde issues de cette onde plane" msgstr "Show this plane wave's wavefronts" #: uchaines.rstracerdessur2 msgctxt "uchaines.rstracerdessur2" msgid "Tracer des surfaces d'onde issues de cette source ponctuelle" msgstr "Show this point source's wavefronts" #: uchaines.rstracerenpoin msgctxt "uchaines.rstracerenpoin" msgid "Tracer en pointillé le prolongement des différents segments des rayons" msgstr "Draw continuations of the different ray sections with dotted lines" #: uchaines.rstracerenpoin2 msgctxt "uchaines.rstracerenpoin2" msgid "Tracer en pointillé le prolongement des différents segments du rayon" msgstr "Draw continuations of the different ray sections with dotted lines" #: uchaines.rstracerenpoin3 msgctxt "uchaines.rstracerenpoin3" msgid "Tracer en pointillé le prolongement des différents segments des rayons" msgstr "Draw continuations of the different ray sections with dotted lines" #: uchaines.rstracerlesnor msgctxt "uchaines.rstracerlesnor" msgid "Tracer les normales" msgstr "Show normals" #: uchaines.rstrait msgid "Trait" msgstr "Line" #: uchaines.rstraitflche msgctxt "uchaines.rstraitflche" msgid "Trait, fléche..." msgstr "Line, arrow..." #: uchaines.rstraitperpend msgid "Trait perpendiculaire" msgstr "Perpendicular line" #: uchaines.rstrouer msgctxt "uchaines.rstrouer" msgid "Trouer" msgstr "Hole" #: uchaines.rstrouerlemiro msgctxt "uchaines.rstrouerlemiro" msgid "Trouer le miroir en son centre" msgstr "Hole through the centre of the mirror" #: uchaines.rstypedelentil msgid "Type de lentille incompatible avec les valeurs proposées, ou lentille débordant de l'espace de travail !" msgstr "Type of lens incompatible with the proposed values, or lens crossing boundary of workspace!" #: uchaines.rstypederseau msgctxt "uchaines.rstypederseau" msgid "Type de réseau" msgstr "Diffraction grating type" #: uchaines.rstypedesource msgctxt "uchaines.rstypedesource" msgid "Type de source" msgstr "Type of source" #: uchaines.rstypedlment msgctxt "uchaines.rstypedlment" msgid "Type d'élément" msgstr "Element type" #: uchaines.rsunarcdecercl msgid "Un arc de cercle" msgstr "An arc" #: uchaines.rsunaumoinsdes msgid "Un au moins des objets actuels ne rentre pas sur ce nouvel espace de travail !" msgstr "Some objects are outside of the new workspace!" #: uchaines.rsunfichierpor msgid "Un fichier portant ce nom existe déjà. Voulez-vous l'écraser ?" msgstr "A folder with this name already exists. Would you like to overwrite it?" #: uchaines.rsunitdelongue msgctxt "uchaines.rsunitdelongue" msgid "Unité de longueur" msgstr "Length unit" #: uchaines.rsunnouveaugro msgid "Un nouveau groupe contenant les éléments ajoutés vien d'être créé." msgstr "A new group containing the added elements has just been created" #: uchaines.rsunnouveaugro2 msgid "Un nouveau groupe contenant tous les éléments vient d'être créé." msgstr "A new group containing all the elements has just been created" #: uchaines.rsunsegmentded msgid "Un segment de droite" msgstr "A straight segment" #: uchaines.rsvaleurdupash msgid "Valeur du pas horizontal illégale !" msgstr "Value of horizonal step is illegal!" #: uchaines.rsvaleurdupash2 msgid "Valeur du pas horizontal très faible ou très forte. Etes-vous sûr ?" msgstr "Value of horizontal step is very small or large. Are you sure?" #: uchaines.rsvaleurdupasv msgid "Valeur du pas vertical illégale !" msgstr "Value of vertical step is illegal!" #: uchaines.rsvaleurdupasv2 msgid "Valeur du pas vertical très faible ou très forte. Etes-vous sûr ?" msgstr "Value of vertical step is very small or large. Are you sure?" #: uchaines.rsvaleurillgal msgid "Valeur illégale de l'indice vert par défaut; remplacé par 1" msgstr "Illegal default refractive index value for green; replaced by 1" #: uchaines.rsvaleurillgal2 msgid "Valeur illégale de l'indice bleu par défaut; remplacé par 1" msgstr "Illegal default refractive index value for blue; replaced by 1" #: uchaines.rsvaleurillgal3 msgid "Valeur illégale de l'indice rouge par défaut; remplacé par 1" msgstr "Illegal default refractive index value for red; replaced by 1" #: uchaines.rsvaleurinacce msgid "Valeur inacceptable pour le rayon !" msgstr "Unacceptable value for ray!" #: uchaines.rsvaleurinacce10 msgid "Valeur inacceptable pour Rint !" msgstr "Unacceptable value for Rint!" #: uchaines.rsvaleurinacce11 msgid "Valeur inacceptable pour Rext !" msgstr "Unacceptable value for Rext!" #: uchaines.rsvaleurinacce12 msgid "Valeur inacceptable pour t !" msgstr "Unacceptable value for t!" #: uchaines.rsvaleurinacce13 msgid "Valeur inacceptable pour x1 !" msgstr "Unacceptable value for x1!" #: uchaines.rsvaleurinacce14 msgid "Valeur inacceptable pour x2 !" msgstr "Unacceptable value for x2!" #: uchaines.rsvaleurinacce15 msgid "Valeur inacceptable pour y1 !" msgstr "Unacceptable value for y1!" #: uchaines.rsvaleurinacce16 msgid "Valeur inacceptable pour y2 !" msgstr "Unacceptable value for y2!" #: uchaines.rsvaleurinacce17 msgid "Valeur inacceptable pour S1x !" msgstr "Unacceptable value for S1x!" #: uchaines.rsvaleurinacce18 msgid "Valeur inacceptable pour S1y !" msgstr "Unacceptable value for S1y!" #: uchaines.rsvaleurinacce19 msgid "Valeur inacceptable pour S2x !" msgstr "Unacceptable value for S2x!" #: uchaines.rsvaleurinacce2 msgid "Valeur inacceptable pour x !" msgstr "Unacceptable value for x!" #: uchaines.rsvaleurinacce20 msgid "Valeur inacceptable pour S2y !" msgstr "Unacceptable value for S2y!" #: uchaines.rsvaleurinacce21 msgid "Valeur inacceptable pour R1 !" msgstr "Unacceptable value for R1!" #: uchaines.rsvaleurinacce22 msgid "Valeur inacceptable pour R2 !" msgstr "Unacceptable value for R2!" #: uchaines.rsvaleurinacce23 msgid "Valeur inacceptable pour le diamètre !" msgstr "Unacceptable value for the diameter!" #: uchaines.rsvaleurinacce24 msgid "Valeur inacceptable pour la focale !" msgstr "Unacceptable value for focus length!" #: uchaines.rsvaleurinacce25 msgid "Valeur inacceptable pour fx !" msgstr "Unacceptable value for fx!" #: uchaines.rsvaleurinacce26 msgid "Valeur inacceptable pour fy !" msgstr "Unacceptable value for fy!" #: uchaines.rsvaleurinacce27 msgid "Valeur inacceptable pour e !" msgstr "Unacceptable value for e!" #: uchaines.rsvaleurinacce28 msgid "Valeur inacceptable pour p !" msgstr "Unacceptable value for p!" #: uchaines.rsvaleurinacce29 msgid "Valeur inacceptable pour t0 !" msgstr "Unacceptable value for t0!" #: uchaines.rsvaleurinacce3 msgid "Valeur inacceptable pour y !" msgstr "Unacceptable value for y!" #: uchaines.rsvaleurinacce30 msgid "Valeur inacceptable pour t1 !" msgstr "Unacceptable value for t1!" #: uchaines.rsvaleurinacce31 msgid "Valeur inacceptable pour t2 !" msgstr "Unacceptable value for t2!" #: uchaines.rsvaleurinacce32 msgid "Valeur inacceptable pour le diametre du trou !" msgstr "Unacceptable value for the hole diameter!" #: uchaines.rsvaleurinacce33 msgid "Valeur inacceptable pour le rayon de courbure !" msgstr "Unacceptable value for the radius of curvature!" #: uchaines.rsvaleurinacce34 msgid "Valeur inacceptable pour Dx !" msgstr "Unacceptable value for Dx!" #: uchaines.rsvaleurinacce35 msgid "Valeur inacceptable pour Dy !" msgstr "Unacceptable value for Dy!" #: uchaines.rsvaleurinacce36 msgid "Valeur inacceptable pour gx !" msgstr "Unacceptable value for gx!" #: uchaines.rsvaleurinacce37 msgid "Valeur inacceptable pour gy !" msgstr "Unacceptable value for gy!" #: uchaines.rsvaleurinacce38 msgid "Valeur inacceptable pour l'angle au sommet !" msgstr "Unacceptable value for the apex angle!" #: uchaines.rsvaleurinacce39 msgid "Valeur inacceptable pour l'angle polaire !" msgstr "Unacceptable value for polar angle!" #: uchaines.rsvaleurinacce4 msgid "Valeur inacceptable pour indice rouge !" msgstr "Unacceptable value for red refractive index!" #: uchaines.rsvaleurinacce40 msgid "Valeur inacceptable pour la hauteur!" msgstr "Unacceptable value for the height!" #: uchaines.rsvaleurinacce41 msgid "Valeur inacceptable pour sx !" msgstr "Unacceptable value for sx!" #: uchaines.rsvaleurinacce42 msgid "Valeur inacceptable pour sy !" msgstr "Unacceptable value for sy!" #: uchaines.rsvaleurinacce5 msgid "Valeur inacceptable pour indice vert !" msgstr "Unacceptable value for green refractive index!" #: uchaines.rsvaleurinacce6 msgid "Valeur inacceptable pour indice bleu !" msgstr "Unacceptable value for blue refractive index!" #: uchaines.rsvaleurinacce7 msgid "Valeur inacceptable pour Ri !" msgstr "Unacceptable value for Ri!" #: uchaines.rsvaleurinacce8 msgid "Valeur inacceptable pour cx !" msgstr "Unacceptable value for cx!" #: uchaines.rsvaleurinacce9 msgid "Valeur inacceptable pour cy !" msgstr "Unacceptable value for cy!" #: uchaines.rsvaleurincorr msgid "Valeur incorrecte pour x" msgstr "Unacceptable value for x!" #: uchaines.rsvaleurincorr2 msgid "Valeur incorrecte pour y" msgstr "Unacceptable value for y!" #: uchaines.rsvaleurnulleo msgid "Valeur nulle ou négative interdite pour la hauteur et/ou la largeur !" msgstr "Zero or negative value forbidden for the heigtht and/or the width!" #: uchaines.rsvaleursentre msgid "Valeurs entrées aberrantes !" msgstr "Entered values are invalid!" #: uchaines.rsvaleursnonau msgid "Valeurs non autorisées pour x ou y" msgstr "Unallowed values for x or y" #: uchaines.rsversion200be #, fuzzy #| msgid "Version 2.20 du 30/11/2013, écrite en Lazarus" msgctxt "uchaines.rsversion200be" msgid "Version 2.21 du 02/12/2013, écrite en Lazarus" msgstr "Version 2.21, 02/12/2013, written with Lazarus" #: uchaines.rsversion205du #, fuzzy #| msgid "Version 2.20 du 30/11/2013" msgid "Version 2.21 du 02/12/2013" msgstr "Version 2.21, 02/12/2012" #: uchaines.rsverslarrire msgctxt "uchaines.rsverslarrire" msgid "Vers l'arrière:" msgstr "Backwards" #: uchaines.rsverslarrire2 msgctxt "uchaines.rsverslarrire2" msgid "Vers l'arrière:" msgstr "Forwards" #: uchaines.rsverslarrire3 msgctxt "uchaines.rsverslarrire3" msgid "Vers l'arrière:" msgstr "Move back" #: uchaines.rsverslavant msgctxt "uchaines.rsverslavant" msgid "Vers l'avant:" msgstr "Move forward" #: uchaines.rsverslavant2 msgctxt "uchaines.rsverslavant2" msgid "Vers l'avant:" msgstr "Move forward" #: uchaines.rsverslavant3 msgctxt "uchaines.rsverslavant3" msgid "Vers l'avant:" msgstr "Move forward" #: uchaines.rsvert msgid "Vert" msgstr "Green" #: uchaines.rsverticale msgctxt "uchaines.rsverticale" msgid "Verticale" msgstr "Vertical" #: uchaines.rsverticale2 msgctxt "uchaines.rsverticale2" msgid "Verticale:" msgstr "Vertical:" #: uchaines.rsverticalemen msgctxt "uchaines.rsverticalemen" msgid "Verticalement" msgstr "Vertically" #: uchaines.rsvotreattenti msgid "Votre attention siouplait !" msgstr "Your attention please" #: uchaines.rsvoulezvous msgctxt "uchaines.rsvoulezvous" msgid "Voulez vous:" msgstr "Would you like to:" #: uchaines.rsvoulezvouslc msgctxt "uchaines.rsvoulezvouslc" msgid "Voulez-vous l'écraser ?" msgstr "Would you like to overwrite it ?" #: uchaines.rsvoulezvouslc2 msgctxt "uchaines.rsvoulezvouslc2" msgid "Voulez-vous l'écraser ?" msgstr "Would you like to overwrite it ?" #: uchaines.rsvouspouvezch msgctxt "uchaines.rsvouspouvezch" msgid "Vous pouvez changer les indices du milieu dans lequel s'effectue la simulation:" msgstr "You can change the default refractive index of the medium:" #: uchaines.rsvrifierquevo msgctxt "uchaines.rsvrifierquevo" msgid "Vérifier que vous avez la dernière version ? Cliquer sur:" msgstr "Verify that you have the last version ? Click on:" #: uchaines.rsvudepuislece msgctxt "uchaines.rsvudepuislece" msgid "(vu depuis le centre C)" msgstr "(seen from the centre C)" #: uchaines.rsx msgctxt "uchaines.rsx" msgid "x=" msgstr "" #: uchaines.rsx1 msgid "x1" msgstr "" #: uchaines.rsx10 msgid "x10" msgstr "" #: uchaines.rsx100 msgid "x100" msgstr "" #: uchaines.rsx2 msgid "x2" msgstr "" #: uchaines.rsx20 msgid "x20" msgstr "" #: uchaines.rsx5 msgid "x5" msgstr "" #: uchaines.rsx50 msgid "x50" msgstr "" #: uchaines.rsxmaxdoittres msgid "xmax doit être supérieur à xmin !" msgstr "xmax has to be larger than xmin!" #: uchaines.rsy msgctxt "uchaines.rsy" msgid "y=" msgstr "" #: uchaines.rsymaxdoittres msgid "ymax doit être supérieur à ymin !" msgstr "ymax has to be larger than ymin!" #: uchaines.rszoom msgctxt "uchaines.rszoom" msgid "Zoom:" msgstr "" #: un rayon unique sera diffracté selon la loi des réseaux sin i msgid "+-sin i0+k.lambda/a" msgstr "" optgeo-2.21/saisiesp1.lfm0000750000175000017500000005716012247333133015542 0ustar georgeskgeorgeskobject saisiesp: Tsaisiesp Left = 422 Height = 639 Top = 182 Width = 645 BorderIcons = [] BorderStyle = bsDialog Caption = 'Saisie d''une source ponctuelle' ClientHeight = 639 ClientWidth = 645 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0FFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF0FFFFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0FFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFF00000000FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF00000000000000FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF000 000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF00000000F00000000000FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFF00000000FFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF000000000F FFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFF0000000000FFFFF0000000000FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFF00000000000FFFFFF0000000000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0FFFFFF0000FFFFFFFFFFFFFFFFFFFF0000F00F000FFFFF FF00000000000FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF 0000FFFFFFFFFFFFFFFFFFFF0000F000F000FFFFFFFFF0000000000FFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF0000FFFFFFFFFFFFFFFFFFFF 00000F00FF0000FFFFFFFFF0000000000FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0FFFFFF0000FFFFFFFFFFFFFFFFFFFFF0000FF00FF0000FFFFFFFFF F00000000000FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF0000FFFF FFFFFFFFFFFFFFFFF00000F000FFF000FFFFFFFFFFFF0000000000FFF0FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0000FF 00FFFF000FFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0FFFFFF0000FFFFFFFFFFFFFFFFFFFFFF00000FF00FFFF0000FFFFFFFFFFFFF 00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0FFFFFF0000FFFFFFFFFFFF FFFFFFFFFFF0000FF00FFFFF0000FFFFFFFFFFFFFFF0000000000FFFFFFFFFFF FFFFFFFFFFFFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFF00000FF00FFFF FF000FFFFFFFFFFFFFFFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFF0000FF000FFFFFF000FFFFFFFFFFFFFFFFF0 0000000000FFFFFFFFFFFFFFFFFFFFFFF0FFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFF00000FF00FFFFFFF0000FFFFFFFFFFF0000FFF0000000000FFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFF00FFFFFFF000 0FFFFFFFF00FFFFFFFFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFF00000FF000FFFFFFFF000FFFFFFFFFFFFFFFFFFFFF0 000000000FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00 00FFF00FFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00000FFF00FFFFFFFFF0000FFF FFFFFFFFFFFFFFFFFFF00000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFF0000FFF000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF00 00000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0 0FFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFF00000000000FFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFFFFFFFFF000FFFFFFFF FFFFFFFFFFFFFFFFFF00000000000FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFF00000FFF000FFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000 0000000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFFF FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000FFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFFF00FFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0000000000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0000FFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00000FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFF00FFFFFFFFFFF FFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFF00FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000 FFFF000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF00FFFFFFFFFFFFFFFF0 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0000FFFFFF00FFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFF00 0FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00FFFFFFFFFFFFFFFFF0000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF00000FFFFFF00FFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF000FFFFF FFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF00000FFFFFF00FFFFFFFFFFFFFFFFFFF0000FFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 000FFFFFFF00FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFF0FF000FFFFFFFFFFF FFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFF0FFF00FFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF0 FFFF00FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0FFFF000FFFFFFFFFFFFFFFFF FFFF0000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF00000F0FFFFF00FFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0FFFFFF00 FFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF00000FFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF00000FFFFFFF000FFFFFF FFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF000FFF0000FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF00FF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000 0FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFF000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00000FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFF000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF0000FFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFF00F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFF00FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFF00000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF FFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF0FFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF00000FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF0FFFFFFFFFFF000 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFF0FFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 272 Height = 105 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 87 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 440 Height = 105 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 87 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log5: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log5' ParentColor = False end object log6: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log6' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 17 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 57 Width = 97 TabOrder = 1 end end object radiocouleur: TRadioGroup Left = 8 Height = 121 Top = 112 Width = 153 AutoFill = True Caption = 'Couleur de la source' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 103 ClientWidth = 149 ItemIndex = 0 Items.Strings = ( 'Rouge' 'Vert' 'Bleu' 'Lumière blanche' ) TabOrder = 2 end object GroupBox3: TGroupBox Left = 168 Height = 57 Top = 112 Width = 145 Caption = 'Epaisseur à l''écran' ClientHeight = 39 ClientWidth = 141 TabOrder = 3 object editepaisseur: TSpinEdit Left = 46 Height = 21 Top = 8 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 8 Height = 105 Top = 368 Width = 624 Caption = 'Tracer en pointillé le prolongement des différents segments des rayons' ClientHeight = 87 ClientWidth = 620 TabOrder = 4 object StaticText8: TLabel Left = 16 Height = 14 Top = 24 Width = 61 Caption = 'Vers l''avant:' ParentColor = False end object StaticText9: TLabel Left = 16 Height = 14 Top = 56 Width = 65 Caption = 'Vers l''arrière:' ParentColor = False end object StaticText10: TLabel Left = 352 Height = 14 Top = 24 Width = 144 Caption = 'Liste des segments concernés' ParentColor = False end object StaticText11: TLabel Left = 352 Height = 14 Top = 40 Width = 227 Caption = '(entre parenthéses et séparés par des virgules' ParentColor = False end object StaticText12: TLabel Left = 352 Height = 14 Top = 56 Width = 176 Caption = 'et sans espaces); exemple: (1,4,10)' ParentColor = False end object editvav: TEdit Left = 80 Height = 21 Top = 24 Width = 257 TabOrder = 0 end object editvaa: TEdit Left = 80 Height = 21 Top = 56 Width = 257 TabOrder = 1 end end object GroupBox5: TGroupBox Left = 104 Height = 105 Top = 0 Width = 161 Caption = 'Source' ClientHeight = 87 ClientWidth = 157 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editsx: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object editsy: TEdit Left = 24 Height = 21 Top = 57 Width = 97 TabOrder = 1 end end object GroupBox6: TGroupBox Left = 168 Height = 57 Top = 176 Width = 145 Caption = 'Nombre de rayons' ClientHeight = 39 ClientWidth = 141 TabOrder = 6 object spinnombrerayons: TSpinEdit Left = 30 Height = 21 Top = 8 Width = 57 MaxValue = 500 MinValue = 2 TabOrder = 0 Value = 5 end end object boutonsup: TBitBtn Left = 270 Height = 25 Top = 336 Width = 353 Caption = 'Supprimer cette source ponctuelle' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 7 end object GroupBox7: TGroupBox Left = 8 Height = 65 Top = 240 Width = 304 Caption = 'Pour chaque rayon, rayons enfants:' ClientHeight = 47 ClientWidth = 300 TabOrder = 8 object StaticText7: TLabel Left = 8 Height = 14 Top = 24 Width = 83 Caption = 'Nombre maximal:' ParentColor = False end object Spinmaxenfant: TSpinEdit Left = 96 Height = 21 Top = 16 Width = 57 MaxValue = 50 TabOrder = 0 Value = 10 end end object radiovirtuelle: TRadioGroup Left = 320 Height = 65 Top = 112 Width = 145 AutoFill = True Caption = 'Type de source' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 47 ClientWidth = 141 ItemIndex = 0 Items.Strings = ( 'Réelle' 'Virtuelle' ) OnClick = radiovirtuelleClick TabOrder = 9 end object GroupBox8: TGroupBox Left = 8 Height = 153 Top = 480 Width = 618 Caption = 'Tracer des surfaces d''onde issues de cette source ponctuelle' ClientHeight = 135 ClientWidth = 614 TabOrder = 10 object StaticText13: TLabel Left = 96 Height = 14 Top = 16 Width = 472 Caption = 'Donner les valeurs de chemins optiques pour lesquels vous voulez que soient tracées des surfaces' ParentColor = False end object StaticText14: TLabel Left = 96 Height = 14 Top = 32 Width = 489 Caption = 'd''onde (séparez ces valeurs par un unique espace; ne mettez ni parenthèses ni virgule de séparation)' ParentColor = False end object StaticText15: TLabel Left = 96 Height = 14 Top = 48 Width = 119 Caption = '(exemple: 120 145 276)' ParentColor = False end object StaticText16: TLabel Left = 16 Height = 14 Top = 96 Width = 547 Caption = 'Remarque: si la simulation comprend au moins une lentille mince et/ou un miroir paraxial, le tracé des ces surfaces' Font.Color = clRed ParentColor = False ParentFont = False end object StaticText17: TLabel Left = 208 Height = 14 Top = 112 Width = 156 Caption = 'ne peut être et ne sera pas fait.' Font.Color = clRed ParentColor = False ParentFont = False end object cochesurfacesonde: TCheckBox Left = 16 Height = 17 Top = 24 Width = 51 Caption = 'Tracer' TabOrder = 0 end object editlistechemins: TEdit Left = 96 Height = 21 Top = 64 Width = 465 TabOrder = 1 end end object BitBtn2: TBitBtn Left = 320 Height = 144 Top = 184 Width = 143 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 11 end object BitBtn1: TBitBtn Left = 472 Height = 214 Top = 114 Width = 154 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 12 end object GroupBox9: TGroupBox Left = 10 Height = 50 Top = 311 Width = 254 Caption = 'Nombre max. de segment par rayon' ClientHeight = 32 ClientWidth = 250 TabOrder = 13 object StaticText18: TLabel Left = 8 Height = 14 Top = 9 Width = 83 Caption = 'Nombre maximal:' ParentColor = False end object Spinmaxsegment: TSpinEdit Left = 110 Height = 21 Top = 6 Width = 54 MaxValue = 500 MinValue = 1 TabOrder = 0 Value = 500 end end end optgeo-2.21/unit20.pas0000750000175000017500000000267512247333133014770 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit20; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, ComCtrls; type TForm20 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; SpinEdit1: TSpinEdit; private { Déclarations privées } public { Déclarations publiques } end; var Form20: TForm20; implementation {$R *.DFM} end. optgeo-2.21/unit1_palette.lfm0000750000175000017500000032252112247333133016413 0ustar georgeskgeorgeskobject form_palette: Tform_palette Left = 903 Height = 472 Top = 258 Width = 142 Align = alRight BorderIcons = [] BorderStyle = bsNone Caption = 'Actions' ClientHeight = 472 ClientWidth = 142 DragMode = dmAutomatic FormStyle = fsStayOnTop OnCloseQuery = FormCloseQuery OnCreate = FormCreate OnShow = FormShow LCLVersion = '1.0.10.0' object boutondeplacement: TSpeedButton Left = 4 Height = 38 Hint = 'Déplacer un élément existant: translation, rotation, changement focale ou rayon de courbure...' Top = 2 Width = 132 Caption = 'Déplacer' Font.Color = clGreen Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001CAC660021B26D001EAF69000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000019A8610017A55E051DAD67681BAB651E1BAB 6500000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC660018A660071FB06A8229BD79F822B46FB91BAB 641D1BAB65000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC660A1DAD678328BF7AF939D594FF30C886FF20B1 6CBD1AAA64210000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC66321CAD66AA2BC37EF73BDA97FF34CD8BFF20B1 6BC61BAB65600000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC660014A0591627BE78E73ADA96FF2FC885FF1BAB 65571BAB65000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000001CAC66001CAC 66001CAC6600000000000000000015A15B1826BE77E739DB95FF2FC984FF1BAB 65590000000000000000000000001CAC66001CAC660000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000019A7610016A35E051BAB 65651BAB650E1CAC66001CAC6600139D571326BD76E738DB93FF2EC983FF1BAA 64551CAC65001CAC66001CAC66001BAB655E1AAA631F1CAC6500000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001BAB650015A15D071FB16A8220B3 6CEC1CAC66691BAB65591BAB65591BAA65682BC17BEF3DDC96FF34CD88FF1FAF 69921BAA64591BAB65591BAB645920B16CCA20B16CBC1BAA641D1DAD67000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001BAB650A1FB16A802DC77EF839D8 8FFF32CF86FF2ECD83FF2BCB80FF2CCB81FF3ED690FF46DD9AFF45DA97FF34CD 88FF2FC984FF30C986FF32C987FF37CD8EFF33C889FF23B470B91BAB65200000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001BAB653223B870DD39D88EFF43E6 9CFF40E59AFF3BE296FF36DF92FF35DD90FF43DE97FF45DD99FF47DD9AFF3EDC 97FF39DB95FF3CDA97FF3EDA99FF3FD99CFF3DD598FF2ABD7BFA1DAD67680000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001BAB65001CAC664727BD75E431CB 82FF2BC27BE928C078E726BF77E726BF76E937CF88FD43DE98FF3ED691FF2CC1 7BEF26BD77E728BD78E728BD79E72DC380F82BBF7CFB1FB06A8218A760080000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000029C178001CAD66471DAD 67CD18A66130149F5A18159F5B1817A15D2E26BE76E935DC90FF2CCA81FF1BAA 656815A05A1814A15A1814A15A181CAC67AB1DAD678316A45D0519A861000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000019A7610020B26C001CAB 66311CAC66091CAC66001CAC6600169F5B1725BE76E734DC8FFF2ACA80FF1BAB 65581CAC66001CAC66001CAC66001CAC66311BAA64091CAC6500000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000001CAC 66001CAC6600000000001CAC6600159F5B1726BF77E736DE91FF2BCA80FF1BAB 65581CAB650000000000000000001CAC66001CAC660000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC660A19A7613028C179E938E093FF2CCC81FF1CAC 66691CAB66130000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC66321DAD67CC2FCA81FE3CE296FF31D388FF1FB2 6BE91CAB65660000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC66001CAD674727BD75E436D68CFF2AC47BFA1EB0 69821AA762080000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000002AC179001CAC664724B871D91FB16B8017A2 5E051AA762000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000019A7610020B26C001BAB65301AA963091BAB 6500000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000001CAC66001CAC66000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = boutondeplacementClick ShowHint = True ParentFont = False ParentShowHint = False end object boutondupliquer: TSpeedButton Left = 4 Height = 38 Hint = 'Dupliquer un élément existant' Top = 40 Width = 132 Caption = 'Dupliquer' Font.Color = clNavy Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000008585 8500888888008585850082828200808080007E7E7E007C7C7C007A7A7A007979 7900777777007676760075757500757575007474740074747400747474007474 740085858500B9B9B9009595950071717100787878007A7A7A007C7C7C007E7E 7E00808080008282820085858500888888008B8B8B0081818100000000065D5D 5D18545454244A4A4A284444442C3F3F3F2F3B3B3B3237373735343434383232 323B3131313D3030303E2F2F2F402E2E2E412D2D2D422C2C2C432C2C2C432D2D 2D422D2D2D412F2F2F403333333E2E2E2E3D3333333B35353538383838353B3B 3B323F3F3F2F4343432C4A4A4A2852525224636363205B5B5B0F000000059393 939AAEAEAEEAB1B1B1EAB0B0B0EBB0B0B0ECAFAFAFEDAFAFAFEDAFAFAFEEAEAE AEEEAEAEAEEFACACACEFAAAAAAF0ACACACF0ADADADF0ADADADF0ADADADF0ADAD ADF0ADADADF0A9A9A9F0959595EFA4A4A4EFABABABEEACACACEEAEAEAEEDAFAF AFEDB0B0B0ECB0B0B0EBB1B1B1EAB2B2B2EAA6A6A6E98B8B8B5C000000009F9F 9FA6DFDFDFFFE9E9E9FFEAEAEAFFEAEAEAFFEAEAEAFFEBEBEBFFEBEBEBFFEBEB EBFFEBEBEBFFEBEBEBFFE9E9E9FFEAEAEAFFEAEAEAFFEBEBEBFFEBEBEBFFEAEA EAFFEAEAEAFFDFDFDFFFAEAEAEFFDBDBDBFFE9E9E9FFE9E9E9FFEAEAEAFFEAEA EAFFEBEBEBFFEAEAEAFFE9E9E9FFEBEBEBFFCACACAFF90909062000000009F9F 9FA6E0E0E0FFE9E9E9FFE9E9E9FFEAEAEAFFEBEBEBFFECECECFFEBEBEBFFEBEB EBFFECECECFFECECECFFEDEDEDFFECECECFFEBEBEBFFEAEAEAFFEAEAEAFFE9E9 E9FFEAEAEAFFE0DFE0FFAEAEAEFFDADADAFFEBEBEBFFECECECFFEBEBEBFFEBEB EBFFEAEAEAFFEAEAEAFFEAEAEAFFEBEBEBFFCACACAFF90909062000000009F9F 9FA6DFDFDFFFE9E9E9FFEAEAEAFFEBEBEBFFECECECFFEBEBEBFFECECECFFEDED EDFFEDEDEDFFEDEDEDFFECECECFFECECECFFECECECFFEBEBEBFFE9E9E9FFEAEA EAFFE3E6E4FFCDD5D0FFAEAEAEFFDBDBDBFFEBEBEBFFECECECFFECECECFFECEC ECFFEAEAEAFFEAEAEAFFEAEAEAFFECECECFFCACACAFF90909062000000009E9E 9EA6DEDEDEFFE9E9E9FFEBEBEBFFEBEBEBFFE8E8E8FFE9E9E9FFEAEAEAFFECEC ECFFEDEDEDFFEDEDEDFFEEEDEEFFEEEEEEFFEEEEEEFFEDECEDFFECEBEBFFF0EE EFFFA5C4B0FF247841FF829D8CFFDEDDDEFFECECECFFEDEDEDFFEDEDEDFFEDED EDFFEBEBEBFFEAEAEAFFEBEBEBFFEDEDEDFFCBCBCBFF90909062000000009E9E 9EA6DEDEDEFFEAEAEAFFECECECFFE9E9E9FFE4E4E4FFE8E8E8FFE5E5E5FFE9E9 E9FFEDEDEDFFECEDEDFFDBE4DEFFD9E2DCFFD9E2DCFFD9E1DCFFD7E0DAFFDBE2 DEFF90B79EFF096E2DFF227B42FFA6C1B0FFF1EFF0FFEFEFEFFFEFEFEFFFEEEE EEFFEDEDEDFFECECECFFECECECFFEDEDEDFFCBCBCBFF90909062000000009F9F 9FA6E1E1E1FFEDEDEDFFEEEEEEFFECECECFFE7E7E7FFEAEAEAFFE8E8E8FFEAEA EAFFF0F0F0FFDDE5E0FF368652FF227E43FF237F43FF237F43FF237F43FF237F 44FF1B7A3DFF0E7733FF0C7832FF238044FFB1CCBBFFF2F1F2FFF0F0F0FFF0F0 F0FFEEEEEEFFEEEEEEFFEDEDEDFFEDEDEDFFCBCBCBFF90909062000000009F9F 9FA6E1E1E1FFEDEDEDFFEEEEEEFFEFEFEFFFEFEFEFFFF0F0F0FFF0F0F0FFF0F0 F0FFF2F1F2FFDCE4DFFF227F43FF0C7F34FF0E7F35FF0D7F35FF0D7F35FF0E7F 35FF0E8035FF0F8137FF108138FF0E8036FF2A894DFFBCD2C4FFF4F3F3FFF0F0 F0FFF0F0F0FFEFEFEFFFEEEEEEFFEFEFEFFFCCCCCCFF90909062000000009F9F 9FA6E2E2E2FFEDEDEDFFEEEEEEFFF0F0F0FFF0F0F0FFF1F1F1FFF2F2F2FFF3F3 F3FFF3F3F3FFDCE4DFFF2C8B50FF29A05BFF2AA05BFF2AA05BFF2AA05BFF2A9F 5BFF2AA05CFF1A9147FF10883AFF219851FF3F9F69FFBDD3C5FFF5F3F4FFF1F1 F1FFF0F0F0FFEFEFEFFFEFEFEFFFF0F0F0FFCDCDCDFF90909062000000009F9F 9FA6E3E3E3FFEEEEEEFFEFEFEFFFF0F0F0FFEFEFEFFFF1F1F1FFF3F3F3FFF3F3 F3FFF4F3F3FFDFE7E1FF40915FFF3D9B66FF3D9B67FF3E9B67FF3E9B67FF3E9B 67FF369760FF198F45FF229E54FF42A46DFFB6D0C0FFF5F4F5FFF2F2F2FFF2F2 F2FFF0F0F0FFEFEFEFFFEFEFEFFFF1F1F1FFCECECEFF90909062000000009F9F 9FA6E4E4E4FFEFEFEFFFF0F0F0FFF1F1F1FFF1F1F1FFF2F2F2FFF3F3F3FFF4F4 F4FFF4F4F4FFF2F3F3FFE0E8E3FFDCE4DEFFDBE4DEFFDAE3DDFFD8E1DBFFDCE2 DDFF8FB69CFF1F934EFF43A56EFFADC7B6FFF8F5F7FFF6F5F5FFF3F3F3FFF2F2 F2FFF1F1F1FFEEEEEEFFEEEEEEFFF0F0F0FFCECECEFF90909062000000009F9F 9FA6E4E4E4FFF0F0F0FFF0F0F0FFF2F2F2FFF2F2F2FFF4F4F4FFF4F4F4FFF5F5 F5FFF6F6F6FFF5F5F5FFF6F5F6FFF5F5F5FFF5F4F4FFF3F2F3FFF1F0F1FFF4F2 F3FFA8C6B2FF348B57FF88A393FFD6DBD8FF69A37EFFB4CFBDFFF8F6F7FFF3F3 F3FFF1F1F1FFEFEFEFFFEEEEEEFFF0F0F0FFCECECEFF90909062000000009F9F 9FA6E4E4E4FFEFEFEFFFF0F0F0FFF2F2F2FFF4F4F4FFF5F5F5FFF5F5F5FFF5F5 F5FFF5F5F5FFF5F5F5FFF6F6F6FFF4F4F4FFF3F3F3FFF4F3F3FFF4F3F4FFF4F3 F3FFEBEDECFFD2D9D4FFB3B1B2FFCDD5D0FF1C773DFF237C42FFB5CFBEFFF6F4 F5FFF2F2F2FFF2F2F2FFF1F1F1FFF1F1F1FFCECECEFF8F8F8F6200000000A1A1 A1A6E3E3E3FFEFEFEFFFF1F1F1FFF3F3F3FFF3F3F3FFF5F5F5FFF5F5F5FFF4F4 F4FFF2F2F2FFF3F3F3FFF6F6F6FFF0F0F0FFF3F2F3FF91BA9FFF599A70FF5C9C 73FF5C9C73FF59986FFF46865DFF4F9266FF157537FF0B7530FF278147FFB4CE BDFFF6F5F6FFF2F2F2FFF1F1F1FFF1F1F1FFCFCFCFFF9191916200000000AEAE AEA6E7E7E7FFF1F1F1FFF3F3F3FFF4F4F4FFF4F4F4FFF6F6F6FFF7F7F7FFF7F7 F7FFF6F6F6FFF6F6F6FFF8F8F8FFF4F4F4FFF6F5F6FF5A9C71FF04752CFF0A7A 31FF0A7A31FF0A7A32FF0C7C33FF0B7B32FF0F7E36FF0F7F37FF0D7D34FF2584 46FFB4CFBDFFF5F5F5FFF3F3F3FFF3F3F3FFD5D5D5FFA1A1A16200000000B0B0 B0A6E7E7E7FFF1F1F1FFF2F2F2FFF4F4F4FFF4F4F4FFF6F6F6FFF7F7F7FFF8F8 F8FFF8F8F8FFF6F6F6FFF5F5F5FFF5F5F5FFF7F6F7FF5F9F76FF13893FFF198F 46FF198F45FF198F45FF1A8F45FF1A8F46FF168C41FF10863AFF13893DFF2396 53FF6CA883FFF6F5F6FFF3F3F3FFF3F3F3FFD6D6D6FFA3A3A36200000000B0B0 B0A6E7E7E7FFF1F1F1FFF2F2F2FFF4F4F4FFF5F5F5FFF6F6F6FFF6F6F6FFF7F7 F7FFF7F7F7FFF5F5F5FFF2F2F2FFF3F3F3FFF6F5F6FF60A178FF2D9C5FFF36A4 6AFF36A469FF36A46AFF37A56AFF38A56BFF2B9D5BFF139040FF2CA25EFF60AB 81FFDCE6DFFFF5F4F4FFF3F3F3FFF3F3F3FFD6D6D6FFA3A3A36200000000B0B0 B0A6E7E7E7FFF1F1F1FFF3F3F3FFF4F4F4FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5 F5FFF6F6F6FFF5F5F5FFF3F3F3FFF3F3F3FFF5F5F5FFC0D6C8FFA1C3ADFFA2C3 ADFFA2C3AEFF9CBDA8FF7FA08BFF89AF96FF1F8544FF2BA65FFF61AC81FFDAE5 DEFFF7F6F6FFF3F3F3FFF2F2F2FFF3F3F3FFD6D6D6FFA3A3A36200000000B0B0 B0A6E8E8E8FFF1F1F1FFF2F2F2FFF4F4F4FFF4F4F4FFF4F4F4FFF4F4F4FFF4F4 F4FFF5F5F5FFF5F5F5FFF5F5F5FFF4F4F4FFF4F4F4FFF8F6F7FFF8F6F8FFF7F4 F6FFF7F4F6FFEEECEDFFC0BDBFFFCED5D0FF308D55FF61AD81FFDDE6E0FFF7F6 F6FFF4F4F4FFF2F2F2FFF1F1F1FFF3F3F3FFD6D6D6FFA3A3A36200000000B0B0 B0A6E8E8E8FFF1F1F1FFF2F2F2FFF3F3F3FFF3F3F3FFF4F4F4FFF4F4F4FFF4F4 F4FFF4F4F4FFF4F4F4FFF4F4F4FFF4F4F4FFF4F4F4FFF4F4F4FFF3F3F3FFF2F2 F2FFF1F1F1FFE9E9E9FFBBBBBBFFD8DBD9FFA9C7B4FFD9E4DDFFF7F6F6FFF4F4 F4FFF3F3F3FFF2F2F2FFF1F1F1FFF3F3F3FFD6D6D6FFA3A3A36200000000B0B0 B0A6E7E7E7FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF2F2F2FFF3F3F3FFF3F3 F3FFF2F2F2FFF2F2F2FFF3F3F3FFF3F3F3FFF3F3F3FFF3F3F3FFF2F2F2FFF1F1 F1FFF1F1F1FFE5E5E5FFBBBBBBFFE1E1E1FFF6F4F5FFF5F4F5FFF3F4F4FFF3F3 F3FFF2F2F2FFF2F2F2FFF1F1F1FFF2F2F2FFD3D3D3FFA3A3A36200000000B0B0 B0A6E7E7E7FFF1F1F1FFF1F1F1FFF0F0F0FFEFEFEFFFF1F1F1FFF2F2F2FFF2F2 F2FFF2F2F2FFF1F1F1FFF2F2F2FFF2F2F2FFF2F2F2FFF2F2F2FFF1F1F1FFF0F0 F0FFEAEAEAFFD7D7D7FFB9B9B9FFE2E2E2FFF1F1F1FFF2F2F2FFF2F2F2FFF2F2 F2FFF1F1F1FFF1F1F1FFEFEFEFFFE7E7E7FFC7C7C7FFA2A2A26200000000AFAF AFA6E6E6E6FFF0F0F0FFF0F0F0FFF0F0F0FFEFEFEFFFF1F1F1FFF1F1F1FFF1F1 F1FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1F1FFEEEEEEFFE6E6 E6FFDADADAFFC1C1C1FFB7B7B7FFE5E5E5FFF1F1F1FFF1F1F1FFF1F1F1FFF1F1 F1FFF1F1F1FFECECECFFE2E2E2FFD4D4D4FFB6B6B6FFA2A2A26200000000AFAF AFA6E5E5E5FFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFF0F0F0FFF1F1F1FFF1F1 F1FFF1F1F1FFF1F1F1FFF1F1F1FFF0F0F0FFF1F1F1FFEAEAEAFFC4C4C4FFC0C0 C0FFBABABAFFA9A9A9FFBDBDBDFFE9E9E9FFF1F1F1FFF1F1F1FFF0F0F0FFF1F1 F1FFDDDDDDFFC0C0C0FFBFBFBFFFB6B6B6FFA2A2A2D99B9B9B3C00000000AFAF AFA6E4E4E4FFEDEDEDFFEEEEEEFFEFEFEFFFEDEDEDFFEDEDEDFFEFEFEFFFF0F0 F0FFF0F0F0FFF0F0F0FFF0F0F0FFEEEEEEFFEDEDEDFFDEDEDEFFC2C2C2FFE6E6 E6FFC7C7C7FFB8B8B8FFDBDBDBFFEDEDEDFFF0F0F0FFEFEFEFFFEEEEEEFFECEC ECFFCDCDCDFFD1D1D1FFE0E0E0FFB9B9B9DB9797974C8484840300000000AFAF AFA6E4E4E4FFEDEDEDFFEDEDEDFFEEEEEEFFECECECFFEBEBEBFFEDEDEDFFEFEF EFFFF0F0F0FFF0F0F0FFEFEFEFFFEDEDEDFFE5E5E5FFD4D4D4FFC3C3C3FFD3D3 D3FFBBBBBBFFD7D7D7FFEBEBEBFFF0F0F0FFF0F0F0FFEFEFEFFFEBEBEBFFE2E2 E2FFC7C7C7FFD0D0D0FFC6C6C6DA9E9E9E50525252029191910000000000AFAF AFA6E4E4E4FFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFEEEEEEFFEEEE EEFFEEEEEEFFEEEEEEFFEEEEEEFFE7E7E7FFD8D8D8FFC2C2C2FFAFAFAFFFC1C1 C1FFDADADAFFEAEAEAFFEEEEEEFFEEEEEEFFEEEEEEFFEDEDEDFFE2E2E2FFD3D3 D3FFB7B7B7FFAEAEAEDAA0A0A04B46464601747474000000000000000000A9A9 A996BDBDBDE7C0C0C0E7C0C0C0E7C0C0C0E7C1C1C1E7C1C1C1E7C1C1C1E7C1C1 C1E7C0C0C0E7C0C0C0E7C0C0C0E7BABABAE7B3B3B3E7A4A4A4E7A1A1A1E7B4B4 B4E7BFBFBFE7C1C1C1E7C1C1C1E7C0C0C0E7C0C0C0E7BFBFBFE7B7B7B7E7B0B0 B0E7A0A0A0CF9898984E5D5D5D028C8C8C00000000000000000000000000A2A2 A20F959595189393931893939318939393189393931893939318939393189393 93189393931893939318939393189292921894949418999999189A9A9A189696 9618939393189393931893939318939393189393931892929218939393189595 951898989813737373018484840000000000000000000000000000000000A5A5 A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5 A500A5A5A500A5A5A500A4A4A400A2A2A200A0A0A0009E9E9E009D9D9D00A2A2 A200A4A4A400A5A5A500A5A5A500A5A5A500A5A5A500A4A4A400A1A1A100A0A0 A0009C9C9C009191910000000000000000000000000000000000 } NumGlyphs = 0 OnClick = boutondupliquerClick ShowHint = True ParentFont = False ParentShowHint = False end object boutonprop: TSpeedButton Left = 4 Height = 38 Hint = 'Propriétés d''un élément existant' Top = 78 Width = 132 Caption = 'Propriétés' Font.Color = clBlue Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00005112010033000000672B03086C3202186E37022A6C3501346D3501346E37 022A6B320218672B0308300000004E1101000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000006A2F0200672A 02046C3202276F360267743A02A37B3E01CB834301E1874501E9874500E98343 01E17B3E01CB743A02A36F3602676C320327672B02046A2F0200000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000005F2500004F1600016B3101246F36 01827C3E01D7944C00FAAD5B00FFC06600FFCD6D00FFD27100FFD27100FFCD6E 00FFC16600FFAD5B00FF944C00FA7C3E01D76F3601836B3101254E1700015F25 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000006C2D0000672700066D330051783B00CB944C 00FDB96100FFCF6E00FFD67300FFDA7500FFDE7800FFE17A00FFE27A00FFDF79 00FFDB7600FFD77300FFD06F00FFBA6200FF944C00FD783B00CB6D3300526627 00066B2D00000000000000000000000000000000000000000000000000000000 000000000000000000006D2F0000692A00096E34006E7F3F00E9AA5800FFC668 00FFCA6B00FFCE6D00FFD47000FFDA7400FFE07800FFE57C00FFE67C00FFE179 00FFDB7500FFD57100FFCF6E00FFCC6C00FFC76900FFAA5900FF7F3F00E96E34 006E692A00096C2E000000000000000000000000000000000000000000000000 0000000000006B2D0000642500056E34006C834200F0AF5B00FFC06500FFC166 00FFC76900FFC86B03FFCC7719FFD17C1CFFD57E1CFFD9811CFFD9811CFFD57F 1CFFD17C1CFFCC7719FFC96C03FFC96A00FFC36700FFC16600FFB05C00FF8342 00F06E34006D632500056B2D0000000000000000000000000000000000000000 000061240000B68B00006D33004D7D3F00E7AA5800FFB86000FFBA6100FFC065 00FFC66800FFC67419FFE2CFBBFFE9DFD5FFE8DED2FFE8DED2FFE8DED2FFE8DE D2FFE9DFD5FFE2CFBBFFC67419FFC86900FFC26600FFBB6200FFBA6100FFAB59 00FF7D3F00E76D33004EBE9B0000612300000000000000000000000000004810 0000713700006B2F001F763A00C59E5100FFB15C00FFB25C00FFB86000FFBF64 00FFC46700FFC37219FFE0CEBBFFE8E1D9FFEDEDEDFFEEEFF0FFEEEFF0FFEDED EDFFE8E0D9FFE0CEBBFFC27219FFC66800FFC06500FFBA6100FFB45D00FFB35C 00FF9F5100FF763A00C66A30002073380000430D000000000000000000006726 00004A0000026F350079894500FCA95700FFAA5700FFB05B00FFB65F00FFBC62 00FFC16600FFC06703FFC27017FFC37E35FFE7DED5FFEEEFF0FFEEEFF0FFE7DE D5FFC17E35FFC17017FFC16703FFC36700FFBD6300FFB86000FFB25C00FFAC58 00FFAB5800FF894500FD6F35007A4C00000267250000000000003E0700007237 00006A2F001F783B00CF9B4F00FFA45300FFA85600FFAE5900FFB35D00FFB960 00FFBE6400FFC36700FFC66700FFC0711CFFE6DCD2FFEFEFF0FFEFEFF0FFE5DC D2FFBF701CFFC76800FFC46700FFBF6500FFBA6100FFB55E00FFAF5A00FFA957 00FFA65400FF9C5000FF783B00D06A300020723500003E1E0000601A00007B49 00006E340059844200F89E5000FF9F5000FFA55400FFAB5700FFB05B00FFB55E 00FFBA6100FFBE6400FFC26500FFBD701CFFE5DCD2FFEFEFF0FFEFEFF0FFE5DC D2FFBC6F1CFFC26600FFBF6500FFBB6200FFB65F00FFB15C00FFAC5800FFA655 00FFA15100FFA05100FF854300F86E3400597D4600005E2000006B2800005D15 0003723700948F4800FF9B4D00FF9C4E00FFA15100FFA75500FFAC5800FFB05B 00FFB55E00FFB96100FFBC6200FFB96D1CFFE5DBD2FFEEEFF0FFEEEFF0FFE5DB D2FFB96C1CFFBC6200FFBA6100FFB65F00FFB25C00FFAD5900FFA85600FFA353 00FF9D4F00FF9C4F00FF904900FF723700945C1500036B2800006D300000682C 000F743900BE934C04FF9D5209FF9F560DFFA55C12FFAC6217FFB1671AFFB66B 1DFFBA6F20FFBF7424FFC17524FFBF7E3AFFEEE6DDFFF7F8F8FFF6F7F7FFEBE2 DAFFBB762EFFBC680EFFB8640AFFB25E04FFAD5900FFA85500FFA45300FF9F50 00FF9A4D00FF994D00FF934A00FF743900BF682B000F6D300000703500006A2F 001D773C03D5A46324FFB07133FFB07235FFB37437FFB67638FFB97838FFBC7A 39FFBF7C39FFC17E39FFC27E38FFC2864BFFF5EDE6FFFFFFFFFFFFFFFFFFF5EE E6FFC3894FFFC4823EFFC3823FFFC07F3DFFBA7732FFB16B23FFA85F15FF9E53 08FF984C01FF984B00FF934900FF773A00D66B30001D70340000733700006A30 0024793E06DFAA6D32FFB5783FFFB5783EFFB5783EFFB6793EFFB87A3EFFBB7C 3EFFBD7D3EFFBF7E3EFFBF7D3BFFC1864EFFF5EEE6FFFFFFFFFFFFFFFFFFF5EE E6FFC1874EFFC07E3CFFC07F3EFFBE7F3FFFBD7F42FFBC7F45FFB97F46FFB67B 43FFAE7033FFA4601DFF975009FF773B00E06B32002573370000733700006A30 00237A4007DFAD7139FFB87D45FFB87C44FFB87C44FFB87C44FFB97D44FFBA7E 44FFBC7F44FFBC7F45FFC28A55FFC79668FFF7F0EAFFFFFFFFFFFFFFFFFFF6EE E7FFC18A55FFBF8042FFBE8044FFBD7F44FFBB7E44FFB97D43FFB87C43FFB87D 45FFB97F48FFBA814BFFB07842FF7D430BDF6A2F002473370000703500006A2E 001A7A3F06D3AD723BFFBB824BFFBB814AFFBB814AFFBB814AFFBB814AFFBB81 4AFFBB8049FFC08B5AFFEFE3D7FFF8F3EEFFFEFDFCFFFFFFFFFFFFFFFFFFF6EF E8FFC28D5BFFBE8249FFBD824AFFBC824AFFBB814AFFBB814AFFBB814AFFBB81 4AFFBB814AFFBB814AFFB37D4AFF7E450DD3692D001A713500006E310000672B 000C783C02B9A86F38FFBF8652FFBE8551FFBE8551FFBE8551FFBE8551FFBE85 51FFBD844FFFC28F61FFF0E4D9FFF8F2EDFFF7F0EAFFF7F0EAFFF7F1EBFFEFE2 D7FFC28F60FFBE854FFFBE8551FFBE8551FFBE8551FFBE8551FFBE8551FFBE85 51FFBE8551FFBF8752FFAF7A47FF7B4005B9672A000C6E310000672900000000 00017639008A9F6730FFC28B59FFC08957FFC08957FFC08957FFC08957FFC089 57FFC08957FFC08A59FFC59467FFC6956AFFC69468FFC49265FFC49265FFC492 66FFC08958FFC08957FFC08957FFC08957FFC08957FFC08957FFC08957FFC089 57FFC08957FFC28D5BFFA46E3AFF783B008B0000000164280000591200008045 00007436004C91571DF5C18D5DFFC38E5DFFC38E5DFFC38E5DFFC38E5DFFC38E 5DFFC38E5DFFC38E5DFFC38D5CFFC28C5AFFC29063FFD1AE8EFFD1AD8EFFC290 63FFC28C5CFFC38E5DFFC38E5DFFC38E5DFFC38E5DFFC38E5DFFC38E5DFFC38E 5DFFC38E5DFFC49163FF945B23F57537004D844600005612000014000000793B 000071320015834508C5B5804EFFC79465FFC69363FFC69363FFC69363FFC693 63FFC69363FFC69363FFC69263FFC39165FFE5D3C2FFFEFEFEFFFEFEFEFFE5D2 C2FFC39164FFC69263FFC69363FFC69363FFC69363FFC69363FFC69363FFC693 63FFC89566FFBA895AFF85480AC5713300157A3C000015000000000000006729 0000955401007B3C00669B6128FAC9986CFFC9976AFFC9976AFFC9976AFFC997 6AFFC9976AFFC9976AFFC89568FFCDA480FFFAF6F3FFFFFFFFFFFFFFFFFFFAF6 F3FFCDA480FFC89568FFC9976AFFC9976AFFC9976AFFC9976AFFC9976AFFC997 69FFCB9C72FF9F6831FA7D3D0067A76203005D24000000000000000000000000 000082460B007C4109138A4D0FB7B78657FFCE9F76FFCC9B6FFFCC9B70FFCC9B 70FFCC9B70FFCC9B70FFCB9A6EFFCFA57FFFF7F0EAFFFFFFFFFFFFFFFFFFF7F0 EAFFCFA57FFFCB9A6EFFCC9B70FFCC9B70FFCC9B70FFCC9B70FFCC9B6FFFCFA0 77FFBB8C5FFF8D5012B780450D1384470C00FFFFFF000000000000000000FFFF FF00D8C5B8004500000090581F3C9C642ADFC79B72FFD1A37BFFCF9F76FFCF9F 76FFCF9F76FFCF9F76FFCF9F76FFCE9F76FFDFC0A5FFF4EAE0FFF4EAE0FFDFC0 A5FFCE9F76FFCF9F76FFCF9F76FFCF9F76FFCF9F76FFCF9F75FFD1A47CFFC99F 77FFA0682FDF945B233E00000000CAB4A300FFFFFF0000000000000000000000 0000FFFFFF00FFFFFF00FBFFFF059F6B365DAB7844EACEA781FFD5AA84FFD1A4 7BFFD2A47CFFD2A47CFFD2A47CFFD2A47CFFD1A47CFFD4AA84FFD4AA84FFD1A4 7CFFD2A47CFFD2A47CFFD2A47CFFD2A47CFFD1A47BFFD5AA85FFD0A984FFAE7B 47EAA26E395FFBFCFF05FFFFFF00FFFFFF00FFFFFF0000000000000000000000 0000FFFFFF00FFFFFF00FFFFFF02EFE8E20BAE805063B28250E2CEA984FFD9B4 92FFD6AB86FFD4A882FFD4A882FFD4A882FFD4A882FFD4A882FFD4A882FFD4A8 82FFD4A882FFD4A882FFD4A882FFD6AB86FFDAB493FFD0AB87FFB48554E3B083 5364EFE8E30CFFFFFF02FFFFFF00FFFFFF000000000000000000000000000000 000000000000FFFFFF00FFFFFF00FFFFFF03FDFCFB0DC29D774EB98C5EC3C9A4 7DFBDAB99BFFDDB99BFFDAB291FFD8AE8AFFD7AC88FFD7AC88FFD7AC88FFD7AC 88FFD8AE8AFFDAB291FFDDB99AFFDBBA9BFFCBA67FFBBB8F61C3C4A07A4FFCFB FA0EFFFFFF03FFFFFF00FFFFFF00000000000000000000000000000000000000 00000000000000000000FFFFFF00FFFFFF00FFFFFF03FFFFFF0BE0CEBA2DC5A0 7982C6A078D3D2B290F9DDC0A4FFE1C4AAFFE2C4AAFFE3C5ABFFE3C5ABFFE2C4 AAFFE1C4AAFFDBBEA1FFD2B18FF9C8A27AD4C7A37C83E2CFBC2EFFFFFF0CFFFF FF03FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF02FFFFFF07FFFE FE14E7D8C737D5B99B70D2B391A7D4B797CDD9BD9FE2DCC3A7EADCC3A8EAD9BE A1E2D5B898CDD3B493A8D6BB9D71E8D9C938FFFEFE15FFFFFF08FFFFFF02FFFF FF00FFFFFF000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF FF03FFFFFF08FFFFFF11FDFCFB20F5EFE833ECDFD146EADCCD50EADCCD50ECDF D147F6EFE934FDFCFB21FFFFFF12FFFFFF09FFFFFF03FFFFFF01FFFFFF00FFFF FF00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF FF00FFFFFF00FFFFFF02FFFFFF04FFFFFF08FFFFFF0BFFFFFF0DFFFFFF0DFFFF FF0BFFFFFF08FFFFFF05FFFFFF02FFFFFF00FFFFFF00FFFFFF00000000000000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = boutonpropClick ShowHint = True ParentFont = False ParentShowHint = False end object boutonsuppression: TSpeedButton Left = 4 Height = 38 Hint = 'Supprimer un élément existant' Top = 116 Width = 132 Caption = 'Supprimer' Font.Color = clMaroon Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000002C2C 2A001D1D35001515520011115C001A1A420029292B0000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000035351F000000 7E00161600080E0E1810101028122525000CA1A1000121212E00000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000040400003B3B05031818 403E2121789A1F1F99C21212A0CA0E0E8BB113135B6D24242316161643000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000080800001818423C3232 92D44545E0FF3434FBFF1D1DFFFF0808F3FF0404C3F60E0E709D212123192525 2100000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000002020F0B34347EA46565 E5FF5D5DFFFF3939F0FF1B1BC8FC1212C2F91111E6FF0B0BCFFB0F0F67942626 1B0E3E3E00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000C0C2F2243439ADF7F7F FEFF5C5CF4FF2525A1D51212526F1515495F23238ABA2323E3FE0A0AB3EF1414 5155494900010000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000C0C302346469BE18C8C FFFF5959DFFF1D1D72889F9F000105059E001D1D48582A2AC2F70A0AE9FF1111 7F9C333300080000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000101130C363680A88080 E9FF7777F4FF2D2D99CF161646601B1B3F5025257DB12828E2FD0505F1FF0F0F 87A92E2E000B0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000025252D0015154B0011115E0015154E00A9A9FF00131348474646 A2E28686F4FF6868EEFF3939C1F62E2EB9F33535E2FE2020FDFF0606C6F81010 66715F5F00030000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000017172A00585800010D0D1B15141435271717211847470004303000051919 4F604B4BA9E77F7FF6FF6F6FFFFF5656FFFF3A3AF7FF1818C3F410106C991E1E 2A183D3D00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000001717 3100151520121A1A5F6C27278EC424249EE51C1C92CB15156B801C1C2C243131 00031A1A51644A4AACE77777F6FF6363FFFF2727B7FC12124F932B2B090F0C0C 3E00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000001919 11091D1D67844242BFF65E5EF5FF5858FEFF4141F6FF1B1BD3FD0D0D86C01717 3E442E2E000A191951654646ABEA6E6EF7FF4646DFFD181886BE11113C332C2C 1202000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000001717 45484141AFEC7A7AFEFF6B6BEFFF4E4EB4EB4848AFE83B3BEBFF0E0EEAFF0606 A6E212125B7423230E161F1F506A4444B5EE5050ECFF3131D0FF22227ACD3333 33363C3C3C00343434002D2D2D002F2F2F000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000001C1C 60836666DFFE8080FCFF4242AFE612123E611717365029299CD71414F7FF0303 F8FF0808BBF40F0F6D9737373E7588889FECB4B4D7FFACACD1FF85859DFF4747 4897292929271515151000000005414141002D2D2D002E2E2E00000000000000 0000000000000000000000000000000000000000000000000000000000001D1D 59746464D7FB7878F5FF2B2B91BF24240A140000D000131369990A0AE6FF0C0C FCFF2D2DF2FF1B1BCEFD2F2F94F6BFBFC2FFE0E0DBFFC5C5C1FFB3B3B0FF6161 61F7595959E05C5C5CBE4C4C4C8B3737374F2727272404040403555555003636 36002A2A2A000000000000000000000000000000000000000000000000001818 3D3A4848A7E87878F6FF2E2E99CF191917286D6D00030E0E6A9E0606E8FF1818 ECFE3434A6F84343D8FE2C2CC4FF9D9DB3FFCACAC7FF818182FF969696FF8282 82FF797979FFA2A2A2FF919191FF7C7C7CF1666666CC4949498E363636431616 160E6E6E6E002929290000000000000000000000000000000000000000000C0C 0E0828286A875E5ECAF95050D0F8171776A610105A820E0EACE21414FAFF2222 BEF31A1A457D31317FAA3636AFFB6A6A98FFC9C9C6FF909090FFA4A4A4FFA9A9 A9FF696969FFA5A5A5FFB0B0B0FFAFAFAFFFA9A9A9FF989898FE7E7E7EE95C5C 5CAC383838501B1B1B0C3E3E3E00292929000000000000000000000000001212 2B000E0E241828286A995454C0F44E4ED1FF3535D0FF2E2EF4FF3333E0FF2525 7BB419191E141D1D271C181864923E3E6AE8C5C5C4FED7D7D7FFD0D0D0FFC4C4 C4FF797979FF949494FFB7B7B7FFB3B3B3FFB2B2B2FFB4B4B4FFB4B4B4FFA5A5 A5FF7D7D7DEA5050509028282820000000000000000000000000000000000000 000000003B000C0C100D23235361353589BB4949B9E84646B6EA2D2D7FAE1C1C 382E0000000010103E001212150932323955999999EFE2E2E2FFD8D8D8FFCFCF CFFF9C9C9CFF777777FFAEAEAEFFBCBCBCFFBFBFBFFFBDBDBDFFBBBBBBFFBABA BAFFB9B9B9FF9E9E9EFC5D5D5DBA3030302D3030300000000000000000000000 00003D3D0D0015153D00272700001B1B1F1914143C4015153E421C1C24182121 5A0011110000616100001616420018181511797979B9D7D7D7FFDDDDDDFFD3D3 D3FFBBBBBBFF606060F0575757A7797979B98E8E8EDF9E9E9EF4ADADADFDBBBB BBFFC3C3C3FFC5C5C5FFA8A8A8FE5E5E5EA52020201100000000000000000000 0000000000000000000038382B001F1F2D0013134400141447001E1E30000000 00000000000000000000000000000000000152525269B6B6B6FAE3E3E3FFD7D7 D7FFCDCDCDFF8A8A8AF5333333630909090E3B3B3B26424242574F4F4F836B6B 6BB0898989D7999999F0B2B2B2FF888888F43A3A3A5200000000000000000000 00000000000000000000000000000000000033332E0033332E00000000000000 000000000000000000000000000000000000242424298A8A8AD1E5E5E5FFDDDD DDFFD2D2D2FFB0B0B0FF575757A81C1C1C0B6060600073737300DDDDDD001717 170E2626262E3939394B606060725F5F5F9C3939395F00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000D0D0D025858587EC9C9C9FCE9E9 E9FFD6D6D6FFC8C8C8FF7D7D7DE02F2F2F3A0707070000000000323232002929 29002D2D2D004242420000000000000000093131310A00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001C1C1C002A2A2A2B898989D8EAEA EAFFE1E1E1FFD1D1D1FF9D9D9DFD484848800000000400000000000000000000 0000000000002F2F2F0029292900313131003434340000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000034F4F4F72BEBE BEF5F2F2F2FFDADADAFFBEBEBEFF696969C52121211700000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000101010001D1D1D177676 76B5E1E1E1FFEFEFEFFFD6D6D6FF8D8D8DF23838385533333300000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000737373003535 353D909090D9EDEDEDFFF2F2F2FFC0C0C0FF545454A51E1E1E0C000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000D0D0D000000 0002444444569E9E9EE1EDEDEDFFEFEFEFFF848484E12B2B2B39000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000033F3F3F50858585CFC9C9C9FEA9A9A9FF4C4C4C7C000000030000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000025252500000000002E2E2E2E59595981666666B7424242922626260E0000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000F0F0F0039393900000000030606060E2D2D2D0F373737020000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000002F2F2F002B2B2B003333330035353500323232000000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = boutonsuppressionClick ShowHint = True ParentFont = False ParentShowHint = False end object boutongroupe: TSpeedButton Left = 4 Height = 38 Hint = 'Grouper des éléments existants pour les translater ensemble' Top = 154 Width = 132 Caption = 'Grouper' Font.Color = clPurple Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000100000007000000110000 0016000000160000001600000016000000160000001600000010000000060000 0001000000000000000100000007000000110000001600000016000000160000 0016000000160000001600000010000000060000000100000000000000000000 000000000000000000000000000000000000000000080000001F000000390000 00430000004300000043000000430000004300000042000000370000001E0000 000800000001000000080000001F000000390000004300000043000000430000 00430000004300000042000000370000001E0000000800000001000000000000 000200000008000000100000001500000017000000241D1D1D574E4C4BFC4C4A 49FF4C4A49FF4D4B4AFF454343FF3A3837FF3D3B3AFF403E3DEF191818570000 001E0000000D0000001E1B1A1A56444241FC3D3B3AFF3A3838FF42403FFF4D4B 4AFF4C4A49FF4C4A49FF4B4948EF1F1E1D570000001F00000007000000030000 000F0000002400000036000000400000004315171959595958FF979695FFB7B5 B3FFB7B5B4FFB8B7B5FFBAB9B7FF9C9A98FF959390FF7C7A7AFF4B4948FF1A19 19530000002C1B1B1A534C4A48FF7D7B79FF959391FF979593FFB9B7B5FFBAB8 B5FFB8B6B4FFB7B5B3FF989695FF5B5957FF23222151000000110000000C0000 002A743A0A8A964909D1A75108FFAC5002FF65564CFFA1A1A1FFBAB9BAFF7A7B 7BFF5E6064FF525559FF575759FF646261FF656361FF9D9B99FF8B8986FF4E4C 4AF60000004D4D4B4AE88A8887FF9D9B99FF676562FF615F5DFF5C5A59FF5B59 58FF676564FF7F7D7BFFBCBAB9FFA4A29FFF5C5A59FC00000016000000148F4B 10A3AE5B15FFCD8747FFDC995CFFEAA562FF565C62FFD1D1D0FF828385FF8E75 5DFFD8985BFFF0A45AFF73665AFF575656FF565453FF555352FF565453FF5856 55FF595655FF585655FF565453FF555352FF565453FF595756FF5A5857DF0000 00140B0B0B09595756AB878584FFD4D2CFFF615F5EFF0000001600000016B15F 18FFDCA068FFE1A569FFE09D5CFFE69C54FF5B6067FFDFDFDEFF7C7E7FFFC78D 55FFE69C54FFE99D53FF60656AFFF2F4F6FFF0F0F1FFEFEFEFFFEFEFF0FFEFF0 F1FFF0F0F2FFF0F0F1FFEFEFF0FFEFEFEFFFF0F0F1FFF5F5F6FF6C6A68FF0000 00250000001E302F2E5383817FFFE2E0DDFF676564FF0000001600000016B868 21FFE8B98CFFE2A260FFE3A261FFEAA55FFF62676DFFE8E8E9FF949597FF987E 65FFE6A25EFFF2A85DFF8B7F73FF767573FF73716EFF716F6CFF71706EFF7273 73FF737576FF747473FF72706EFF716F6CFF73716EFF777573FF737170E20000 0048000000465E5C5BBB999796FFEBE9E8FF6F6C6CFF0000001000000016C780 3FFFEAC29DFFE6AA69FFE7AB6BFFEEAE6AFF797674FFCBCDCFFFE4E4E5FF9394 96FF6B6E72FF6D7074FF717172FF716F6FFF9F9D9CFFE7E7E6FFC7C9CBFF8A83 7EFFC96912FF707375E6D3D3D3FFE8E7E6FF979594FF72706FFF757271FF7573 72FF737170FFA09E9DFFE6E5E4FFC9C8C7FF777573EA0000000600000016CB86 46FFEECDAEFFEAB273FFEAB375FFEEB575FFDBAA73FF777B7EFFC9CACBFFF2F2 F2FFF3F3F3FFF4F4F4FFF4F4F4FFF4F4F4FFF3F3F3FFCBCCCDFF818080FFE0C3 A6FFCB711EFF0303032E868382FFD1CFCEFFF7F5F4FFF8F5F5FFF8F6F6FFF8F6 F6FFF8F5F5FFF6F4F4FFCFCECDFF858382FF696766270000000100000013D08F 51FFF2D9C3FFF0BA7BFFEFBB7EFFF1BC7EFFF4BC7AFFE3BD91FF929191FF7A77 74FF7B7875FF7B7876FF7B7979FF797A7CFF787A7EFF87837FFFE1B279FFFADD C3FFD07726FF0000004802020248837A7ADC8D8282FF8C8182FF8C8182FF8C81 82FF8C8182FF8A8281FF888382F86B686728000000010000000000000009CD85 3EFFF5E1CFFFF4DABBFFF4C388FFF5C182FFF7C98EFFFFFFFFFFFFFFFFFFFFFE FAFFFFFBF5FFF8F5EFFFEFECE5FFFECA8BFFFEC681FFFBC787FFF9DBBAFFFBE2 CEFFDD7E2FFF207D6DFF297E6AFF2A7D68FF2A7C67FF297C67FF297C67FF297B 65F4236A57BE123A3066000000280000000B000000000000000000000002BF7D 3A63D8995BFFF2DDCAFFF9EEE3FFF9DBB6FFFFFCF4FFCCE4F2FF96C1D8FF84B3 CBFF7AAAC2FF78A5BCFFA6C0CCFFEAE1D4FFFEDEB9FFFCEFE3FFF8DCC8FFE897 56FF7D9B66FF45A981FF4CA97FFF4DA97FFF4DA97FFF4DA97FFF4DA97FFF4DAA 7FFF469D7BFF36886FFF256A58A1000000140000000000000000000000000000 0001C583414DD48B41F8E2AD79FFF4DECAFFFFFFFFFF72B4D7FF6EACCAFF6098 B6FF5086A4FF3F7896FF205B7DFFEAEBEBFFFAD9BEFFEEAD76FFD08C43FF6B9A 66FF37A179FF3EA178FF40A077FF40A076FF41A077FF41A177FF41A177FF42A2 77FF4CA97FFF5EB38DFF328370FF000000160000000000000000000000000000 00000000000000000002D18D475FDD9143E1F2A154FF79BADCFF689EB7FF5888 A0FF4A7992FF3B6982FF235675FFFEA85BFFD49A53FF759E67FF32A57DFF3AA6 7DFF3FA67CFF3EA47AFF3AA377FF3AA377FF3FA47AFF41A67CFF42A67CFF41A6 7BFF3FA479FF71C09DFF318371FF000000160000000000000000000000000000 000000000000000000000000000600000020546F7FD07EB1CBFF77B7D8FF72B2 D3FF6EAACEFF64A1C4FF3B708FFF6A9093FF75CDACFF36AA7EFF3EAB80FF40AB 80FF3EA97EFF35A678FFAED6C5FFACD4C1FF35A679FF3FAA7EFF42AB80FF41AB 7FFF3DA97DFF82CDACFF308472FF000000160000000000000000000000000000 0000000000000000000100000012132B3C4A5293BCFF86C9ECFF7EBDDEFF77B5 D6FF70AECFFF6BA8C9FF64A0C4FF4883ABFF87CEB6FF3CB180FF40B182FF40B0 82FF38AE7EFF74C4A2FFFFF9FCFFFFF2F3FF6FBF9DFF39AF7FFF40B183FF3FB0 82FF3AAE7FFF92D8BBFF2F8673FF000000130000000000000000000000000000 0000000000000000000700000023255882DC7CBDE0FF8ECEEEFF82C2E3FF7CBB DBFF75B3D4FF6FACCDFF6BA7C8FF5B93B9FF437999FF66CDA0FF3CB684FF3AB4 83FF40B785FFFFFFFDFFFFF9F6FFFCF3EFFFF4ECE6FF41B786FF3CB584FF3AB3 83FF60C49DFFA5E5CBFF2E8776FF000000090000000000000000000000000000 0000000000000000000E0A294B6C0D3D70FF7EBFE1FF93D4F4FF88C9E9FF81C1 E1FF7BB9DAFF74B2D3FF70AECFFF5688ABFF05265FFF75ACB2FF8ADFBBFF44BE 8BFFAAD7D9FFA0C4DDFF84B2CBFF7AA8C2FF7FA5BEFF86B4B6FF47C28FFF87DA BAFFB6F1D9FF6FBBA7FF2D807063000000020000000000000000000000000000 000000000000000000140E3966BC144B7BFFA5EAFFFF9DE0FFFF93D4F4FF89CB EBFF82C1E2FF7AB9DAFF76B5D6FF6AA4C5FF082354FF275F81FF8DD7BEFFC5FF E6FF82B8DBFF72ADCCFF6098B6FF5087A4FF427897FF2E5C7FFFCBFFECFF8AD1 BEFF3E9786FF2C7E6E4D00000001000000000000000000000000000000000000 00000000000000000016144074F8195581FF5D99C0FF5C97BCFF5E97BCFF86C5 E5FF8DCEEFFF84C4E3FF7EC0DFFF649ABCFF0B2350FF134176FF297E687F3394 7BFF86BCDBFF6A9EB7FF5888A0FF4B7992FF3D6A83FF2E5775FF399984FF2D88 7687000000030000000000000000000000000000000000000000000000000000 00000000000000000016154476FF1C5A86FF205B8AFF275E8DFF295B88FF173F 6AFF3F6F95FF77B4D5FF84C6E5FF26476DFF112A5AFF16427AFF000000210000 002B77ADCBFF7BB9D9FF74B3D4FF6EAACDFF629BBEFF386481FF0000002C0000 000C000000010000000000000000000000000000000000000000000000000000 00000000000000000015154274FF18608FFF2A74A4FF3D83B2FF4C8CB9FF5C91 BDFF4B75A0FF2A4E78FF22416AFF233C68FF152F5DFF18477BFF0000002E325E 7D9A8FD0EEFF83C3E4FF79B7D9FF72AFD0FF6BA7CAFF6098BBFF3761849E0000 001D000000050000000000000000000000000000000000000000000000000000 0000000000000000000F144173FF185E8DFF2B79ABFF3B83B4FF478AB9FF538F BCFF5288B6FF4776A2FF355985FF244370FF14315FFF174679FF02070E411648 78F39CDFFDFF8ACBEBFF7FBFDFFF77B6D6FF71AFD0FF6EACCCFF1C4571F5061A 314B0000000D0000000000000000000000000000000000000000000000000000 00000000000000000006113D6EC4164D7CFF2478ADFF327FB1FF3D85B4FF4387 B6FF4481B0FF3C709EFF2D5984FF1E3E6AFF153767FF123D6DBB0E3561B11449 7AFFA7ECFFFF94D7F6FF89CAE9FF80BFDFFF78B7D7FF76B6D6FF0E2754FF113B 6ABE000000140000000000000000000000000000000000000000000000000000 000000000000000000010F37613E134174FF195F8EFF287CAFFF317FB1FF3781 B2FF3478A9FF2E6897FF21517DFF143663FF154275FF09223C39144072F01A55 83FF6FACD0FF619BBFFF86C6E6FF8CCEEEFF83C4E4FF82C3E3FF0D244FFF1845 78F8000000160000000000000000000000000000000000000000000000000000 0000000000000000000000000002103B6A62134174FF185484FF1F6C9BFF246F A0FF236796FF1C5786FF174574FF154174FF103C6B5E00000018164476FF1D59 87FF245F8EFF29608DFF234E7BFF406F95FF67A0C2FF3F698CFF142C59FF1B49 7BFF000000160000000000000000000000000000000000000000000000000000 000000000000000000000000000000000001103B6A39124071C0144073FF1444 76FF144073FF144275FF124173C0103C6B390000000100000014174274FF1A64 92FF327DAEFF468BB9FF5992BEFF527FAAFF355A84FF284671FF17325EFF1B49 7BFF000000140000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000D144173FF1A5F 90FF2E7EB0FF3E87B5FF4A8BBAFF4A85B1FF3C6C99FF284976FF163360FF1746 7AFF0000000D0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000004103D6EB11648 79FF2277AAFF317FB2FF3983B5FF387AAAFF2D6492FF1C426FFF173B6CFF1340 72B2000000040000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000061240 74FF164B7CFF1D6A9BFF2470A1FF226696FF195380FF154070FF144477FF0000 0006000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0004113E70AE144173FF174175FF174375FF154275FF124073AD000000040000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = boutongroupeClick ShowHint = True ParentFont = False ParentShowHint = False end object SpeedButton3: TSpeedButton Left = 4 Height = 38 Hint = 'Imprimer la simulation' Top = 270 Width = 132 Caption = 'Imprimer' Font.Color = cl3DDkShadow Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000AB836900AE88 6E01C2A68D06C1A98F00BCA18700000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000CDB7A100BB9D7F03DECFBF1AEBE1D74AF3EC E68CEFE7DF95DACAB912DDCDBD0000000000A5A5A5009C9C9C009C9C9C049C9C 9C1AA8A8A839B3B3B337AAAAAA0DC1C1C1008F8F8F0000000000000000000000 000000000000000000000000000000000000000000000000000000000000583F 2400FFFFFF00CAB39C07E2D4C727ECE3DA5DF3EDE89EF8F4F0D5FAF7F4F6FBF9 F7FFFCFAF8FBEDE4DA7793653502CBBAA900FFFFFF00A6A6A63FA8A8A8A3B3B3 B3D7C4C4C4F1C5C5C5EFBFBFBFB6B7B7B7419A9A9A03A6A6A600000000000000 0000000000000000000000000000000000000000000000000000D8C7B50AE5D8 CC35EEE5DD71F4EFE9B1F8F5F1E3F9F7F4FBF8F5F2FFF5F1EDFFF3EEE9FFF5F0 EBFFFCFAF8FFFAF6F2ECDCD2C7603433332C45454563A7A7A7D9DADADAFFE8E8 E8FFECECECFFD5D5D5FFCECECEFFC7C7C7EABFBFBF81AFAFAF16C2C2C2009494 9400000000000000000000000000000000000000000000000000E2D5C734F7F2 EEDCFCFAF8FFF7F4F0FFF5F0EBFFF3EFE9FFF4EFEAFFF6F1ECFFF7F2EDFFF6F1 ECFFF3EEEAFFEAE7E4FFB6B2AFF25C5B5AE94F4F4FFCA5A5A5FFF8F8F8FFF8F7 F8FFF7F7F7FFD4D4D4FFCBCBCBFFD3D3D3FFCFCFCFFCC7C7C7BFBBBBBB439999 9903A8A8A8000000000000000000000000000000000000000000DFC9B508F8F3 EF9CFCFAF8FFF7F4EFFFF9F5F1FFF7F3EEFFF5F0EBFFECE7E3FFD8D4D1FFB8B5 B2FF918F8CFF6F6C6AFF5E5C5BFF605F5FFF777776FFB7B7B7FFF7F7F7FFEEF1 EEFFDFE9DFFFE1E4E1FFBEBEBEFFC5C5C5FFD3D3D3FFD5D5D5FFD0D0D0EBC5C5 C583B2B2B217CACACA0090909000000000000000000000000000A0A1A12EBBB8 B68CE5E3E0F9F6F4F1FFE9E6E3FFCBC7C4FFA7A4A1FF84817FFF6D6B69FF6867 65FF777675FF929291FFB1B1B1FFCCCCCCFFDEDEDEFFE5E5E5FFEBEAEAFFC5D9 C4FF88C588FFC6DCC4FFD3D2D2FFB9B9B9FFBEBEBEFFCECECEFFD8D8D8FFD7D7 D7FDCFCFCFC1C0C0C04595959504A7A7A7000000000000000000C6C6C5E4D8D8 D8FEDDDDDDFF999897FF7D7C7AFF777574FF7F7E7DFF969595FFB2B2B2FFCCCC CCFFDFDFDFFFE6E6E6FFE2E2E2FFD2D2D2FFBCBCBCFFA3A3A3FF929292FFA8B0 A6FFAFCDABFFC9D5C4FFD7D3D0FFCAC9C7FFBABABAFFB9B9BAFFC6C6C6FFD6D6 D6FFDDDDDDFFD9D9D9ECC9C9C9847E7E7E15EFEFEF0000000000EBEAE9F3F7F7 F7FFF3F3F3FFB5B5B5FFB2B2B2FFCCCCCCFFDFDFDFFFE6E6E6FFE2E2E2FFD2D2 D2FFBBBBBBFFA3A3A3FF8E8E8EFF7E7E7EFF747474FF6E6E6EFF686868FF6766 66FF8C8A89FFBFBBB7FFC8C2BDFFC5BFBAFFC3C0BDFFBBBABAFFB7B7B8FFBFBF BFFFCFCFCFFFDEDEDEFFD7D7D7F56A6A6A660000000E00000001ECEAE9ABF1F1 F1FFDEDEDEFFBFBFBEFFDADADAFFD2D2D2FFBBBBBBFFA3A3A3FF8D8D8DFF7E7E 7EFF747474FF6E6E6EFF686868FF636363FF5E5E5EFF595959FF545454FF4F4F 4FFF4B4B4BFF646261FF9E9994FFB6AFA8FFB5ADA6FFB8B3AEFFBAB9B8FFB7B7 B8FFBABABAFFC7C7C7FFD1D1D1F47D7D7D5A0000001D0000000BDFDBD834C6C6 C3D4919290FF838180FFB9B7B5FF9D9C9BFF757576FF6D6D6DFF696969FF6363 63FF5E5E5EFF595959FF545454FF505050FF4C4C4CFF484848FF444444FF4242 42FF454545FF444444FF4E4E4DFF7E7A76FFA49C94FFA79E96FFABA39CFFB5B2 B0FFB8B8B8FFB8B8B8FFBBBBBBF3949494470000000300000001D5DFD800C1BD B83FC9C5C1CECCC9C5FFD3D1CDFFCAC7C3FF9D9A98FF696868FF535353FF4F4F 4FFF4C4C4CFF484848FF444444FF414141FF3D3D3DFF3A3A3AFF383838FF4444 44FF4C4C4CFF4A4A4AFF474747FF484848FF65625FFF908881FF9C9289FF9E94 8CFFADA8A3FFB8B7B7FFB6B6B6F29B9B9B420000000300000001BAA9A400CBD2 CC00BDB7B123BFBAB594C6C1BCEDC5BFBAFFC1BBB6FFAAA5A1FF747270FF4747 47FF3C3C3CFF3A3A3AFF383838FF353535FF333333FF313131FF414141FF5151 51FF515151FF4F4F4FFF4D4D4DFF4B4B4BFF494949FF545351FF7A746EFF9288 7EFF958A80FFA29A94FFB3B1AFF2AEAEAD3CFFFFFF0000000000000000000000 0000A8A19900A1999005AEA7A041B2ABA4ADB4ADA6F4B4ADA6FFAEA7A1FF8C87 83FF545251FF323232FF2D2D2DFF2D2D2DFF2B2B2BFF3B3B3BFF585858FF5757 57FF545454FF525252FF4F5050FF4E4E4FFF4F4F4FFF545454FF5C5A58FF766F 69FF807871FB887C71BE988C8289A59F9B1DA49E990000000000000000000000 00000000000044392B00A8A19A00958D850BA19A914EA49C94B5A59C94F5A69D 95FF9B938CFF716C68FF3D3D3CFF272727FF313131FF565657FF5D5D5DFF6161 60FF6A6967FF787673FF8C8884FFA39D98FFBAB4ADFFD1CAC2FFCDC4BBFF9289 7FFF696663FA5756565B5E616200442E28000000000000000000000000000000 00000000000000000000000000006C685E009D9288008C837A0D958C8250978E 84B3988E85F3978D84FF867E77F9595652F15F5C59FD787471FFB5ADA6FFCFC6 BDFFE0D6CCFFEDE3D7FFF5EBE0FFFAEFE5FFFBF1E7FFFBF2E9FFFAF1E9FFC7BD B4FF7C766FFF585858A8404041064A4A4A000000000000000000000000000000 000000000000000000000000000000000000000000005D534A008F877D008179 6E0B8A8076488B8177698A80764E8C83793E8F857BBF888179FFDDD2C8FFFBEF E4FFF9EEE3FFF9EFE4FFF8EFE6FFF9F0E7FFF9F1E9FFFAF2EAFFFBF4EDFFF3EC E4FFA69C93FF656361E54E4E4F2E525252000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000092877D0092867C0094887D42867D75E9B6AEA7FFF9EF E6FFF9F0E6FFF9F1E8FFF9F1EAFFFAF2EBFFFAF3EDFFFAF4EEFFFBF5EFFFFCF7 F2FFE0D6CCFF9C9791FF62626377A1A1A1004343430000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000091867C007F716602958A8086BCB4ADFFF9F1 E8FFFAF2EAFFFAF3ECFFFAF4EDFFFBF5EFFFFBF5F0FFFBF6F1FFFCF7F2FFFCF8 F4FFF9F3EDFFC8BEB4FF797978C4353536114949490000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000D7C8B800D3C3B328F1E8DEDEFAF4 EDFFFAF4EEFFFBF5EFFFFBF6F0FFFCF7F2FFFCF7F3FFFCF8F4FFFCF9F5FFFDF9 F6FFFEFBF8FFE6DDD4FF98948FF4545455485C5C5C0000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000D2BEA90032000001EDE2D789FAF4 EEFFFBF6F1FFFCF7F2FFFCF8F3FFFCF8F5FFFDF9F6FFFDFAF7FFFDFAF8FFFDFB F8FFFEFCFAFFF9F4F0FFBFB5ACFF6C6B6A970000000244444400000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000E6D8CB00E2D3C42DF6EF E9E2FCF8F4FFFCF9F5FFFDF9F6FFFDFAF7FFFDFBF8FFFDFBF9FFFEFCFAFFFFFD FBFFFFFEFCFFFFFFFEFFE3DBD2FF898682DC434546234E4E4E00000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000D1BDA90083511D02EFE6 DD8FFCF9F5FFFEFBF8FFFEFCFAFFFFFDFBFFFFFDFBFFFDFCFAFFF9F8F7FFF2F2 F1FFE9E9E8FFDEDEDEFFCCCAC9FF999897F65F5F5F5069696900000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000E9DED200E5D8 CB31F4F0EBE3F2F0EFFFE9E7E6FFDDDDDCFFD1D1D0FCC5C5C4F2B9B9B9E2AFAF AFCCA7A7A7B0A0A0A0919B9B9B71959696507373731581818100000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000D5C2AF00FFF0 C502BDBAB866AFAFAEB8A6A6A6999E9E9E78979797589191913B8B8B8B248383 83126D6D6E060808080030303000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000007575 750075757504696A6A08242526013A3B3C000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = SpeedButton3Click ShowHint = True ParentFont = False ParentShowHint = False end object SpeedButton4: TSpeedButton Left = 4 Height = 38 Hint = 'Exporter la simulation au format image PNG' Top = 308 Width = 132 Caption = 'Export PNG' Font.Color = clTeal Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000026272C0089663D007659370A926537198845 14028E501B000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000002525280025252800262629031A1A 1B04000000019E9E9F18DADADA1BF2F2F207ECECEC00EEEEEE00000000000000 00000000000000000000252528002A292A0000000000936B392EBC79347EAA5D 14346843210291541B0000000000000000000000000000000000000000000000 000000000000000000000000000025252800252528002525280B222225294242 443F89898B53D2D2D2B5F1F1F1D3F0F0F0A5F0F0F070F0F0F03EF0F0F019EFEF EF06FFFFFF00E0E0E00027272B0021222402010C1E098A653639C07B3394BC68 1683B466193B7E4F2104995A1D00000000000000000000000000000000000000 00000000000025252800252528002525280125252812252528381E1E21539F9F A0A8EAEAEAF2EFEFEFFDF0F0F0FFF0F0F0FFF0F0F0FCF0F0F0EEF0F0F0CEF1F1 F19EF1F1F16BF3F3F33AD3D2D216322D2F0D17152013906E443FC3803C95BB6D 2091BC6D1E88B86A1D42B86C1F05B66A1F000000000000000000000000000000 0000000000002525280025252802252528182525283D252528501E1E2154B2B2 B3C0F3F3F3FFF1F1F1FFF1F1F1FFF0F0F0FFF0EFEFFFEFEEEEFFEFEEEEFFEDEC ECFFEBEAEAFBE7E7E7ECDBDBDBCAC1C5C5A6A9B6B4A8ABAD9DB1BF9058A4B879 3494BD732890C1701E87C3721F49C1712007C272200000000000000000000000 00000000000025252800252528032525282025252843252528491E1E214CB4B4 B5BCEDECECFFEBEAEAFFE8E7E8FFE2E3E3FFD9DDDDFFCCD5D5FFBBC9C9FFA6BA BAFF8CA9A2FF72988DFF5A8B7EFF447C76FF2B6A62FF507966FCBAA27AEABA95 65D1C99258B9C9843DA1C67B2C90C4752350C36F1908C4721D00000000000000 0000252528002525280025252806252528202525283A252528401E1E2144B6B6 B7B9DEE0DFFF98B0AAFF6E908AFF567C78FF3F706CFF286661FF175C57FF1058 5AFF06564BFF00523DFF005A47FF005846FF015441FF497A65FFC4AD88FFC6A8 7FFFD4AE84FDD8AB7DF4D7A673E3D49E66C4D29A5F37D39B6000000000002525 280025252800252528062525281A2525282D25252833242427361D1D203ABBBA BBB6DEE0E0FF447063FF004532FF004A39FF025042FF075951FF0A5B52FF1064 57FF136251FF155443FF275A4CFF548177FF5B807BFF748177FFCDAA86FFCFA9 7FFFD7B085FFDAB184FFDCB286FFDCB285F4DBB1844EDBB18400000000002525 280025252804252528142525282025252825252528282424272B1D1D202FB7B7 B7B2DBDCDCFF729489FF255F4DFF33665AFF3F7068FF5C807FFF5E7B7AFF5A6F 6FFF606A68FF5E5F61FF5D585CFF625E63FF585762FF7A7272FFCDAC86FFD0AB 84FFD8B288FFDBB387FFDDB487FFDDB487F4DDB4864DDDB48600000000002525 2800252528062525281025252815252528182525281C2424271F1A1A1D23BDBC BDADBDC9C6FF9FA3A1FF625958FF574C4BFF57524EFF5D5A5AFF534F4FFF5451 55FF5A6169FF484E51FF353231FF373438FF524D61FF82767EFFD1B08EFFD0AC 84FFD7B287FFDDB689FFDFB689FFDFB689F4DFB6894DDFB68900000000002525 28002525280125252803252528062525280A2525280D2323261114151817C5C4 C4A9A7BAB4FFADB4AAFFB8A08FFF9F8B77FF867663FF504B48FF403B3BFF3F39 39FF45474BFF3A3D3DFF282017FF4A4033FF6C6369FF83767EFFD2B490FFD4AE 87FFD9B388FFDEB88CFFE1B98BFFE1B98BF4E1B98B4DE1B98B00000000000000 000000000000252528002525280025252801252528021C1C1F040101040BC9C9 C9A5B3B9B7FFB1B2ACFFEFD2B5FFEDCCA9FFEFCDA8FFC4AE9FFF8A8899FF7975 84FF64626AFF605149FF8D7357FFDDBB8DFFE9C999FFCDB591FFDABC9AFFD5B1 89FFDAB486FFE0BB8EFFE2BB8EFFE3BC8EF4E2BB8D4DE3BB8E00000000000000 000000000000000000000000000000000000252528006666680000000004C5C6 C78BC7C0BCFEB6ACA4FFF5D4B4FFF8CB9FFFFBCD9FFFF8CB9DFFB6A095FF7E76 8AFF7F7B91FFB59076FFFDCD97FFFFCB97FFFDCB99FFF4D3AEFFEFCFABFFEDCF A9FFE8C59AFFE5BE8FFFE3BD90FFE5BE90F4E4BE904DE5BE9000000000000000 0000000000000000000000000000000000000000000094949300CCCED000ABAF B32CDDD1C5DEDECBB8FFF5D4B5FFFCC593FFFBC593FFFCC591FFF0BE8FFFA892 8FFF7A7082FFC39574FFFEC38DFFFABE89FFF2C498FFEFD3B1FFEFCEA9FFEFD0 AEFFEED2B0FFE9C79EFFE5BE91FFE7C193F4E7C1924DE7C19200000000000000 0000000000000000000000000000000000000000000000000000BCBEC000A1A9 B01DE4D4C4D7EBCEB0FFF1D4B9FFF9BE89FFF8BD88FFF8BC87FFF8BC85FFEBB4 85FFBA957FFFE3AB7DFFF6B881FFF4B57EFFEDBE92FFF0D4B3FFEFCFABFFEFD2 B0FFEFD4B4FFEED4B4FFE7C498FFE8C394F4E9C4944DE9C39400000000000000 0000000000000000000000000000000000000000000000000000BCBEC100A0A9 B21EE9D5C1D8F6CCA3FFEFD4BBFFF5B784FFF4B47EFFF3B37CFFF2B27BFFF2B1 7AFFF2B179FFF1AF78FFF0AE77FFEEAC74FFEBB88BFFF2D5B6FFF0D1ADFFF0D4 B2FFF0D6B6FFF1D9BCFFEBCFACFFEAC596F4EAC5964DEAC69600000000000000 0000000000000000000000000000000000000000000000000000BDC0C200A1AB B51EEAD2BDD8F9C493FFEED1B8FFF0B583FFEFAC73FFEDAA72FFEDA971FFECA8 70FFEBA76FFFEAA66FFFEAA56EFFE9A36BFFE8B286FFF4D9B9FFF2D3B0FFF1D6 B5FFF1D8B9FFF2DBBEFFEFD9BBFFEDCB9FF4ECC7964DECC79700000000000000 0000000000000000000000000000000000000000000000000000BEC0C300A2AD B71EE9CFB8D8F8BB86FFEDCBADFFECB58AFFEAA26AFFE7A06BFFE7A16AFFE79F 69FFE59E68FFE49D69FFE49C68FFE29A65FFE3AD81FFF5DABCFFF5D7B4FFF3D8 B8FFF3DABCFFF3DDC0FFF3DFC4FFF1D5B1F4EECA984DEFCB9C00000000000000 0000000000000000000000000000000000000000000000000000BEC2C300A4B0 B91EE7CCB4D8F4B37BFFEBC19DFFEAB995FFE49964FFE39A65FFE29A64FFE198 63FFE09763FFDF9763FFDE9662FFDD935EFFE0A87DFFF4DBBDFFF5D8B7FFF6DB BCFFF4DCBFFFF4DFC3FFF5E1C7FFF4DDBFF4F1D1A54DF2D4AB00000000000000 0000000000000000000000000000000000000000000000000000BFC2C400A5B1 BB1EE6C9B0D8EFAB73FFE9B488FFE8BFA0FFDF945DFFDE945EFFDD925CFFDB91 5AFFDA8F58FFD98E56FFD88E57FFD78C55FFDCA477FFF4DCC0FFF6DCBDFFF8E1 C5FFF7E2C8FFF5E2C8FFF5E4CAFFF6E2C8F4F4D9B44DF4DCBB00000000000000 0000000000000000000000000000000000000000000000000000C1C3C400A7B3 BC1EE4C5ADD8EAA36CFFE4A675FFE5C1A5FFDB935DFFDA935FFFDA9968FFDBA0 74FFDEA981FFE0B391FFE3BDA1FFE6C5ADFFE9D0BAFFF9E9D3FFFAE6CCFFFBE9 CFFFF8E7CFFFF6E5CCFFF6E5CDFFF7E6CDF4F6DEBB4DF6E0C100000000000000 0000000000000000000000000000000000000000000000000000C2C3C500A9B5 BD1EE2C2AAD8E59B66FFE19A66FFE5C7AFFFE7CAB3FFE7CAB4FFE8CCB7FFE9CA B3FFE9C7ACFFEAC1A1FFEBBC96FFEBB588FFEBBD92FFFAE4C8FFFCE3C4FFFDE8 CCFFF8E9D1FFFAEAD2FFF8E8D1FFF8E8D0F4F7E0BD4DF7E3C400000000000000 0000000000000000000000000000000000000000000000000000C1C3C500A9B6 BF1EE0BEA6D8DF935CFFDD925CFFDD9F73FFE0A67CFFDFA071FFE09C6AFFE19A 67FFE29A66FFE49C66FFE69F68FFE8A068FFE9B385FFF9E4C9FFFCE4C6FFFDE9 CEFFF9EAD4FFFCEED6FFFAEBD4FFF9EAD3F4F8E2BF4DF9E5C700000000000000 0000000000000000000000000000000000000000000000000000C1C3C400AAB2 B91DE0C9B8D7DFA579FFDB9866FFDA915BFFD98D56FFD98E56FFDB8F58FFDC92 5CFFDD9460FFDF9662FFE09864FFE29962FFE5AD81FFF9E5CBFFFCE4C8FFFDEA D1FFF9ECD8FFFDF0DBFFFBEED9FFFAECD6F4FAE4C34DFAE7CA00000000000000 0000000000000000000000000000000000000000000000000000B2B2B3009192 9309D7D6D571ECE8E4F1EEE3DAFFEAD5C5FFE5C4ACFFE0B491FFDCA379FFDA98 68FFD8915DFFD98F59FFDA8F59FFDB8F58FFE1A97BFFF8E5CEFFFBE4CBFFFDEB D4FFF9EDDBFFFDF2DFFFFCF0DEFFFAEEDAF4FAE6C74DFAE9CE00000000000000 000000000000000000000000000000000000000000000000000000000000DCDC DD00D1D1D225F2F2F2E1FCFDFEFFFAFBFCFFF7F9FAFFF5F5F5FFF2EFECFFEEE4 DDFFEAD7C9FFE6C7B0FFE1B797FFDDA57BFFDFAE85FFF7E3CDFFFAE5CDFFFCEB D6FFF9EFDFFFFDF4E3FFFDF3E2FFFAF0DEF4FAE8CB4DFAEBD200000000000000 000000000000000000000000000000000000000000000000000000000000DFDF DF00D5D5D526F3F3F3E1FFFFFFFFFEFEFEFFFEFEFEFFFEFEFEFFFDFDFEFFFCFD FDFFFAFCFDFFF8F9FAFFF6F6F6FFF2F0EEFFEDE1D5FFF9EEDEFFFBEFDDFFFCF0 DFFFF9F1E2FFFEF6E6FFFDF5E5FFFAF1E1F4FAEACE4DFAEDD500000000000000 000000000000000000000000000000000000000000000000000000000000E1E1 E100D7D7D727F4F4F4E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFFF6EEE6FFF7EDDEFFFCF5E7FFFCF6 E8FFFCF4E7FFFFF7E9FFFEF6E9FFFAF2E4F4FAECD24DFAEED900000000000000 000000000000000000000000000000000000000000000000000000000000D9D9 D900D0D0D01AEEEEEEC4FCFCFCF8FCFCFCFDFDFDFDFFFEFEFEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFCFFFAF4EDFFF8EFE3FFFBF2 E6FFFEF8ECFFFFFAEEFFFEF7ECFFFAF4E7F4FAEDD64DFAF0DC00000000000000 000000000000000000000000000000000000000000000000000000000000C3C3 C300A8A8A801D9D9D929E3E3E355E9E9E96CEEEEEE87F0F0F0A1F2F2F2B7F4F4 F4CEF7F7F7E2FAFAFAEEFBFBFBF5FCFCFCFCFDFDFDFFFFFFFFFFFEFCFBFFFAF5 EFFFF8F0E5FFFBF4E8FFFDF8EEFFFBF5EBF4FAEFD94DFAF1DF00000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000006363630037373701A6A6A606C7C7C70DD9D9 D916DEDEDE26E0E0E03DE3E3E353E8E8E86AEDEDED86F0F0F0A0F2F2F2B5F3F4 F4CCF6F4F3E1F6F1EAEDF3EBE1F5F6EFE4EDFBF0DA46FAF1E000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000006262620035353501A7A7A707C7C7C70FD8D8 D819DFDFE02CE0E1E346DFDDD960E4DDD36CF6EEDF1BF1E9DC00 } NumGlyphs = 0 OnClick = SpeedButton4Click ShowHint = True ParentFont = False ParentShowHint = False end object SpeedButton5: TSpeedButton Left = 4 Height = 38 Hint = 'Export de la simulation au format image JPG' Top = 346 Width = 132 Caption = 'Export JPG' Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000AFC68600B2C7 8A07BBAC7D1E9E937C05FF0000007EBCD1000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000A1C37500A3BF6A019FC1 7258A8A97CBF78BECC7D3666760FCDFFFF000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000B5CF91008DB95E009BC06E3990BD 64BB9CAD83F572C1D3D21D363D340000000E0000000100000000000000000000 0000000000000000000000000000BF8F5E00BF8F5E00BF8F5E00BF8F5E000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000E0EEC6009BBF6C00A2C2742092BD64A583BA 61DA9AAE88FE72C2D3D21A30373C0000001F0000000D0000000200000000B9AD 0E00CCA00001A0C05B0C95C78C298FCA9654A3AF7576BB947229B38A65000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000A3C27500A9C57B0E97BE688A85B85BD081BB 6FF39AAF8AFF71C1D3D31A2F363E0000001F0100000F6A752D0B99C6801F91CA 9D4A8ACCB28083CCC2B67ECBCDE07DCFD5F68BB7A3EF7D8073700000000B3E38 2500020201000000000000000000000000000000000000000000000000000000 00000000000000000000AAC57C00B7CC8B049DBE6C6A8DB75CC881B866E683BC 76FF9BAE8AFF71C0D1D5344C405457765A5976AD957C7FC6B8AB7CCBC9D67BC9 D1F383C9D5FE95CBD7FFABCDD6FF88C7D8FF82D4E5FF6E9DA2B3292113501916 0F15000000010101000000000000000000000000000000000000000000000000 0000000000009CB96800A2C07200A3BF714294B860BF86B55ED883BA74FB86BB 77FF9CAE89FF74C3D1F360A1A1DB67AFB6F073BBC6FD88C4D0FFA3CDD6FFB9CE DAFFBFC6DAFFB1B1BCFFD0D0CFFFA5C7CCFFC3BAA1FF7DA19FB9302A1B6D2F2A 1C5217140E1A0000000200000000000000000000000000000000000000000000 000000000000A5BF7200F9E9D400A6C1747D90B55CD888B86EF387BA77FF89BA 77FF9DAE89FF7AC6D6FF80ABB6FF9EB6BEFFB2BBCCFFB4B5DCFFA5A3E7FF8E8C E9FF7775E5FF6463A4FFC1C1C1FFACCED2FFD8D6C7FF81A7A7B6322B1B693A34 2363393322442B271A0E302B1D00242116000000000000000000000000000000 000000000000BBCD8D0000000000A9C2768D91B35CF68BB872FD8AB977FF8DB9 78FF9FAE8AFF83C1CDFF8C909EFF8886C1FF6F6DCEFF6665E0FF6362E6FF5C5B D8FF5251B0FF6A6983FFD7D7D5FFACD4DDFFD9F5FBFF83AEB2B3342D1B613F39 2659463F2B4F4C442E304D452E074F4730003E37250000000000000000000000 000000000000BDCC8D0000000000ABC0769093B05BF88EB672FD8DB877FF90B8 78FFA3B08CFF73AEBAFF5C6083FF6362B8FF5856C0FF5654C0FF4A49A7FF4548 82FF526B8CFF71889AFFD8D8D7FFAED4DEFFD9F4FBFF87B2B6AD39301D55453E 2A4C4C452E43534B333A574F35245C5338055B5237005C533800000000000000 000000000000BFCB8D00FFFFFF00ADBE769097AF5BF892B572FD91B777FF94B7 78FFA5AF8BFF84BFC9FF595F66FF616076FF565877FF414C69FF46617DFF5C8E B3FF649AC3FF90A4B2FFE4E4E3FFAED5DEFFD9F5FAFF8CB8BDA73E351F484C44 2E40534B3237595036305B52382A5C53381A5C5338045C533800000000000000 000000000000C1CA8E00FFFFFF00B0BD76909AAC5BF895B372FD95B678FF98B6 79FFA7AE8AFF94DDE9FF9AB7BCFF979490FF676868FF566D7FFF4A6A83FF6580 95FFA4ACB2FFEBEAE8FFEEEFEEFFAAD3DDFFBBECF8FF8BC0C6A2463A223B534A 32345950362C5C5338275C5338225C53381E5C5338115C533803000000000000 000000000000C3C98E00FFFFFF00B2BB75919DAA5BF898B272FD98B478FF9CB5 79FFA9AE8AFF99E3EFFF9DC2C5FF9F958EFF9B7162FF906455FF928079FFD6D4 D2FFFCFAF9FFF8F6F3FFE8E8E5FFA0D1DEFF93D7E2FB8FB3B17F4C3F252D5950 36295C5338235C53381E5C53381A5C5338165C5338125C53380A000000000000 000000000000C4C78D00FFFFFF00B4B975919FA85AF89BB072FD9CB378FF9FB4 79FFABAE8AFF9EE6EFFFA1C2C2FFADA6A1FFAA9E99FFB5ACA8FFE0DDDCFFEFEE EBFFE0E6DAFFC7DBC1FFD2DFD0FFA2CFD8FDA0B39BE9A6896B5C4D472D215C53 381F5C53381B5C5338175C5338135C53380E5C53380B5C533808000000000000 000000000000C6C68D00FFFFFF00B6B77492A2A55AF89EAE72FD9FB278FFA2B2 78FFADAE8AFFA3E8EFFFA4C5C6FFBCB9B6FFCECDCBFFD6D7D4FFCED9CFFFC0DB C6FFB8DEC0FFB5DEBBFFD1E3D2FFBCCBCEFEB2B3A2F0A9978772524D3A234238 1A155A5034135C53380F5C53380C5C5338085C5338055C533803000000000000 000000000000C7C48C00FFFFFF00B7B47392A4A259F8A0AC71FDA1B077FFA5B1 78FFAFAE8AFFA9EBF1FF73969AFF82827FFFB9C2B8FFB1C9B9FFB0D5C0FFB4DF C7FFB8E3C7FFB7E1C0FFD2E4D5FFC4DDDDFFCBE9E9FFCFDBDBEBC7CAC9BAB0AF AD736B675C1C564C2E085C5338065C5338035C5338015C533800000000000000 000000000000C8C38C00FFFFFF00B8B27393A5A058F8A2AA70FDA4AE77FFA7AF 78FFB0AE8AFFADEDF2FF638588FF4B5045FFA8BEABFFAFCDB9FFB4D8C3FFB8E1 CAFFB9E4CBFFB7E2C6FFD4E6D9FFA4D7D4FF9CEEECFFB2F7F9FFC5EDF0FFCFD2 D2D6797673252F1D00025C5338015C5338005C5338005C533800000000000000 000000000000C9C18C00FFFFFF01B9B07293A69D56F8A4A870FDA6AC76FFA9AD 77FFB2AE89FFB1EEF2FF7B9A9BFF646750FFAEBFABFFB6CEBAFFBBD9C5FFC3E4 D2FFCEEBDCFFD9EDE1FFE3ECE9FFA8D9D5FF8DDED6FF96E8E3FFBDEAEBFFC4C4 C49D00000006FFFF00005C5338005C5338000000000000000000000000000000 000000000000CAC08C00FFFFFF01BAAD7194A79A55F8A5A66EFDA7AA75FFAAAB 76FFB3AD89FFB2EEF2FF9DBEBDFFA0A698FFC1CABDFFCFD8CFFFDBE4DFFFE6E6 E4FFEAD4D4FFE1C1C0FFC7C9C5FFB1E7E5FFA2E7DEFF9CDFD4FFC6DCD9F7B2AE AF56FFFFFF000000000000000000000000000000000000000000000000000000 000000000000CBBE8C00FFFFFF01BAAB7095A89653F8A6A36DFDA8A875FFACA9 76FFB3AC89FFB4EDF1FFB5D5D6FFB8BEC0FFB2C6BFFFA0C4B3FFC3DCD2FFDBBD BAFFE99E9EFFDB9F9BFFCCABA2FFC7B5AEFFB9C2B8FFB3D9CDFFCFD5D4D48784 851F909090000000000000000000000000000000000000000000000000000000 000000000000CBBD8B00FFFFFF01BBA86E95A99352F8A7A16CFDA9A674FFADA7 75FFB3AC89FFB6EEF1FF88BDD0FF7192ABFF79B192FFA9CAA9FFD9E2D2FFE9B3 B1FFEDA6A6FFDA9A96FFD39D97FFD39D96FFCAB0A8FFCADED6FFC7C7C7980000 00043A3A3A000000000000000000000000000000000000000000000000000000 000000000000CBBB8A00FFFFFF01BAA56D96A89050F8A79E6BFDAAA473FFAEA5 74FFB3AB88FFB7EEF1FFB3CAC4FFCAB89AFFD5CBA4FFF1DDB9FFF7DDC1FFF4C4 BEFFEDAFAFFFDC8B89FFD88C89FFD88E8AFFCDC7C0FFD4E6E5F6B1AFAF52F8F8 F800000000000000000000000000000000000000000000000000000000000000 000000000000CBB98900FFFFFF01BAA36C96A88D4EF7A79C69FDAAA171FFADA3 72FFB3AA88FFB9EEF2FFCFD1BDFFE2B989FFEEC797FFF7D3A6FFFDDEB4FFFEE3 BFFFFBDFC6FFF2C4B6FFE7A29BFFE3948DFFE8D8C6FFD9DAD8D18180821D8C8C 8C00000000000000000000000000000000000000000000000000000000000000 000000000000CBB78800FFFFFF02BAA16A97A78A4CF7A79968FDADA375FFB6AA 80FFB7AE8EFFBCEEF1FFCADFDCFFE3D0BBFFF1CFAAFFF9CF9EFFFED19DFFFFD5 A3FFFFDBACFFFFE1B7FFFEE0BCFFFAD8B9FFF1E6D6FFCACACA94000000033434 3400000000000000000000000000000000000000000000000000000000000000 000000000000CAB68700FFFFFF02B89E6897A8884DF8B1A277FDBDB28EFFC3B8 95FFC0B699FFB4E4E8FF94D2E1FFA8D6E2FFCDE4E8FFEAEAE2FFF8E3CBFFFCD8 B0FFFDD19FFFFED19DFFFFD6A3FFFDDCB0FFEAE2D6FCB7B6B65EF1EDEB000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000CAB58800FBF9DC02BDA27198B79A6AF9C0B28FFDC5BA9AFFCABD 9EFFBBB298FF8CCAD6FF86D2E5FF8BD9ECFF92DEF0FFA0E1F2FFB8E6F2FFD6EB F0FFEDEBE2FFF6E1CAFFFAD7AFFFF9D8B2FFD8CFC6FAB7A79856A48E7A00FFFF FF00000000000000000000000000000000000000000000000000000000000000 000000000000D0BC9400EAE1BE02CCB6909BC5AB84FBC7B99AFDCBC0A3FFCDC1 A5FFB9B39BFF8ACDDBFF8EDCEFFF97E1F3FF9DE2F2FEA1DEE9FAA6D7DCF5ACCE C9EFBCC3B3E8CDC4B0E8E1D8CAF3ECE6DEFBC7B9AAF7C1A78E59AA846300F9FC EE00000000000000000000000000000000000000000000000000000000000000 000000000000D4C09C00E8DCBB02D4C0A09ECCB593FCCEC0A5FECFC4ABFFD5C9 B3FEBEBAA5F69ABFB9EE9EBAAEE7A3AC93DFA6A180D9A8966CD3AD9363D0B497 67D1BA9E6ED3BFA478D6C3AB83DAC9B798E2C2AB8EEDCDB39A5DB48C6800F9FC EF00000000000000000000000000000000000000000000000000000000000000 000000000000D5C19F00E2D3B102D9C6AAA0D2BD9FFDD4C2A8FBD9C9B2FBC9B3 95EAA78B5DD3A38553CFA88754CFAE8E5CD1B59868D5BCA175D9C2A980DCC7B0 89DECBB591DFCEB996DBD0BC9BD1D2BE9EC2D1BB9EAFD6C1AB3CC4A48600F9FC EF00000000000000000000000000000000000000000000000000000000000000 000000000000D7C4A300DFCEAB02DECDB4A1DAC7AEFFDAC7B0F9C9B495EBB9A2 7BDEBCA67FDFC2AD88DFC7B390DDCCB897D6CFBD9DCAD2C0A2B8D4C2A6A1D6C4 A986D8C6AD69D7C5AB48D4C0A52CD4BFA518D9C5AE0AFCFBF901F9F6F2000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000DFCEB300EBE5BC01E4D4BF8AE0CEBAEAD6C6AED5CEBDA0BBD2C1 A5A5D5C5AA8BD7C7AE6EDAC9B152DBCBB338DDCDB622DECEB911E4D6C506F2E5 E000EDE0D8000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000F0E6D900D6BFA400E3D3BF1BD4BDA43ADCCCB62BE1D1BC17E8D9 C709F8E9E101F2E1D40000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = SpeedButton5Click ShowHint = True ParentFont = False ParentShowHint = False end object SpeedButton6: TSpeedButton Left = 4 Height = 38 Hint = 'Copier simulation dans le presse-papier' Top = 422 Width = 132 Caption = 'Copier' Font.Color = clOlive Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000B4B4B400C7C7C700828282007F7F7F008D8D8D009292 920096969601969696019A9A9A019A9A9A019A9A9A019B9B9B019A9A9A019999 9901999999019999990199999901999999019A9A9A01959595018B8B8B01C8C8 C80157575700FFFFFF00EFEFEF00000000000000000000000000000000000000 000000000000A7A7A700A8A8A800A9A9A901A7A7A703A5A5A505A7A7A706A5A5 A506949494069494940797979708979797099A9A9A0A9F9F9F129898980A9595 9509959595099494940993939309929292099292920992929209A0A0A00BA9A9 A90AA5A5A50595959501000000000C0C0C000000000000000000000000000000 0000A7A7A700ABABAB00A5A5A501A5A6A605ABA8A70EBFB1A514B0ABA719ABAA AA49B4B4B48BB6B6B68FB7B7B790B9B9B991B9B9B993BABABA9BBCBCBC93BEBE BE92BFBFBF92C0C0C092C2C2C292C3C3C392C5C5C592C5C5C58DBAB8B656ABA8 A52DA7A7A7179E9E9E05474747007A7A7A000000000000000000000000000000 00009393930067676700A6A6A603ADA9A60E8A9BAA29467EAE7D758DA29AA8AB AECCD2D2D2FFD5D5D5FFD5D5D5FFD6D6D6FFD7D7D7FFD8D8D8FFDADADAFFDBDB DBFFDCDCDCFFDDDDDDFFDEDEDEFFDFDFDFFFE1E1E1FFE1E0E0FF96ADC1D07190 AB73ABA9A630A4A4A40BA6A6A601A6A6A6000000000000000000000000000000 0000A2A2A2009D9D9D00A7A7A706B2ACA7187493AD482F74AFE899AAB9FFC6C7 C7FFD5D5D5FFD4D4D4FFD6D6D6FFD7D7D7FFD7D7D7FFD8D8D8FFD9D9D9FFDBDB DBFFDCDCDCFFDDDDDDFFDFDFDFFFE0E0E0FFE2E1E1FFE5E5E4FF7BA4C7FF4C82 B2AFB0AAA541A4A4A412A3A3A30292929200FFFFFF000000000000000000FFFF FF00FFFFFF00BABABA01A8A8A80AAEAAA7247B95AC563074AFECA2B1BDFFCCCB CAFFD6D6D6FFD2D2D2FFC1C1C1FFC0C0C0FFD5D5D5FFDADADAFFDBDBDBFFDCDC DCFFDDDDDDFFDFDFDFFFE0E0E0FFE1E1E1FFE3E3E3FFE6E6E5FF7CA6C9FF4D83 B2B5AFAAA64EA8A8A81BA8A8A80381818100B7B7B7000000000000000000C0C0 C000FFFFFF00AAAAAA02A7A7A70FADAAA72D7E97AC5C3175AFECA2B1BEFFCDCC CBFFD8D8D8FFC1C1C1FF2B2B2AFF425565FF8CB9E1FFCFD7DEFFDEDDDCFFDEDE DEFFDFDFDFFFE0E0E0FFE2E2E2FFE3E3E3FFE5E5E5FFE8E7E6FF7EA8CBFF4B82 B2B2AFAAA650A8A8A820A4A4A405FFFFFF009B9B9B0000000000000000009E9E 9E0094949400A2A2A202A6A6A60DAFAAA6217392AD493075B0E9A3B2BFFFCECD CDFFD9D9D9FFC0C0C0FF495A65FF63AADFFF50ADFCFF7FBAEEFFD2D9E0FFE0E0 DFFFE0E0E0FFE2E2E2FFE3E3E3FFE4E4E4FFE6E6E6FFE9E9E8FF7FA9CCFF3F7E B49CB3ABA532A8A8A817A9A9A90499999900A7A7A70000000000000000003C3C 3C0000000000A3A3A301A7A7A704C3B3A5094A81B1292E74B0E5A3B2BFFFD0CF CEFFDAD9D9FFD5D6D6FFA2CCE3FF6FC6FDFF5CB8FBFF4FACFAFF80BBEFFFD5DC E2FFE3E3E2FFE3E3E3FFE5E5E5FFE6E6E6FFE8E8E8FFEBEAE9FF81AACEFF2C76 B783DBB89A0AA9A9A907BFBFBF01FFFFFF00E4E4E40000000000000000000000 0000F7F7F700FFFFFF00B2B2B2010029C3002271B61D2D74B1E3A4B3C0FFD1D1 D0FFDADADAFFDBDBDAFFD3DBDFFF9DD3F1FF6EC5FBFF5CB8FBFF4FACFAFF81BC F0FFD7DEE5FFE6E6E5FFE6E6E6FFE8E8E8FFE9E9E9FFECEBEBFF82ACCFFF2373 B87A0971CA00B3B3B301CDCDCD00D8D8D8000000000000000000000000000000 00000000000000000000000000002371B4001D6FB61C2E75B1E3A5B4C0FFD3D2 D1FFDCDCDCFFDCDCDCFFDEDDDDFFD6DDE1FF9ED4F2FF6EC5FCFF5CB8FBFF4FAC FAFF82BDF2FFDAE1E8FFE9E9E8FFE9E9E9FFEBEBEBFFEEEDECFF84ADD1FF2273 B97A2D7BBE000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6FB51C2F75B2E3A5B4C1FFD4D3 D3FFDDDDDDFFDDDDDDFFDFDFDFFFE1E0E0FFD9E0E4FF9FD5F3FF6EC5FCFF5CB8 FBFF4FACFAFF84BEF3FFDDE4EBFFECEBEBFFECECECFFEFEEEDFF85AED1FF2273 B97A2D7BBE000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6FB51C2F76B2E3A6B5C2FFD6D5 D4FFDEDEDEFFDFDFDFFFE0E0E0FFE1E1E1FFE4E3E3FFDBE3E6FFA0D6F4FF6EC5 FCFF5CB8FBFF4FACFAFF85BFF4FFDFE7EEFFEFEFEEFFF0EFEEFF86B0D3FF2274 B97A2D7BBE000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6EB51C2F76B3E3A7B6C3FFD7D7 D6FFE0E0E0FFE0E0E0FFE2E2E2FFE3E3E3FFE4E4E4FFE7E6E6FFDEE5E9FFA1D7 F5FF6EC5FCFF5CB8FBFF4FACFBFF86BCECFFE2E5E7FFF3F2F1FF88B1D4FF2374 B97A2E7CBF000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6EB51C3077B3E3A7B7C3FFD9D8 D8FFE1E1E1FFE2E2E2FFE3E3E3FFE5E5E5FFE6E6E6FFE7E7E7FFEAE9E9FFE1E8 ECFFA2D8F6FF6EC5FCFF5FB3F1FF5B7A95FF838383FFE3E1E1FF8AB3D6FF2374 BA7A2E7CBF000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6EB51C3077B4E3A8B7C4FFDBDA DAFFE3E3E3FFE3E3E3FFE5E5E5FFE6E6E6FFE7E7E7FFE9E9E9FFEAEAEAFFEDEC EBFFE3EBEFFFA6D9F4FF8EABBEFF807F7EFF605F5FFFAFAEADFF8DB6D9FF2374 BA7A2F7DC0000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6EB51C3178B4E3A9B8C5FFDDDC DBFFE4E4E4FFE5E5E5FFE6E6E6FFE8E8E8FFE9E9E9FFEBEBEBFFECECECFFEDED EDFFEFEFEFFFEAECEEFFC8C8C8FF9E9E9EFFA6A6A6FFE7E7E6FF8CB5D8FF2375 BA7A2F7DC0000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6EB51C3278B5E3AAB9C6FFDEDD DDFFE5E5E5FFE7E7E7FFE8E8E8FFE9E9E9FFEBEBEBFFECECECFFEDEDEDFFEFEF EFFFF0F0F0FFF2F2F2FFEEEEEEFFD8D8D8FFEEEEEEFFF8F7F6FF8DB6D9FF2475 BA7A307EC1000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001C6EB41C3279B5E3ABBAC7FFE0DF DFFFE7E7E7FFE8E8E8FFEAEAEAFFEBEBEBFFECECECFFEEEEEEFFEFEFEFFFF0F0 F0FFF1F1F1FFF3F3F3FFF4F4F4FFF6F6F6FFF7F7F7FFF8F7F6FF8EB7DAFF2475 BA7A307EC1000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001B6EB41C337AB6E3ACBBC7FFE2E1 E0FFE8E8E8FFEAEAEAFFEBEBEBFFEDEDEDFFEEEEEEFFF0F0F0FFF1F1F1FFF2F2 F2FFF3F3F3FFF5F5F5FFF6F6F6FFF7F7F7FFF8F8F8FFF9F8F7FF8FB8DCFF2475 BB7A307FC1000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001B6DB41C337AB7E3ADBCC9FFE4E3 E2FFEBEBEBFFEDEDEDFFE8E8E8FFE6E6E6FFE7E7E7FFE8E8E8FFE9E9E9FFEBEB EBFFECECECFFEDEDEDFFEEEEEEFFF2F2F2FFFAFAF9FFFCFBF9FF91BADDFF2475 BB7A317FC2000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001B6DB41C347BB8E3A7B7C5FFDCDC DCFFD8D9D9FFD7D8D8FFC4C4C4FFC3C3C3FFC3C3C3FFC3C3C3FFC3C3C3FFC3C3 C3FFC4C4C4FFC4C4C4FFC4C4C4FFC7C7C7FFE1E4E6FFDEE7F0FF7DB0DBFF2677 BB7A317FC2000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001E6DB11C317DBEE3588EBCFF6693 BAFF6491B8FF6B94B6FFB4B9BEFFD0CECCFFD0D0D0FFD3D3D3FFD2D2D2FFD2D2 D2FFD3D3D3FFD0D0D0FFD0CECCFFB5BABEFF6D9DC6FF599FDAFF4995D6FF2B79 BC7A3280C3000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4001F6DB01B2E7CBFE03686C9FF3686 CAFF3787CBFF3C89CAFF6697C1FF7B9FBDFFC2C8CDFFEEEEEDFFEEEEEEFFEEEE EEFFEEEEEDFFC2C8CDFF7EA1BFFF6B9CC6FF4692D3FF4392D6FF408FD1FF2B79 BC76317FC1000000000000000000000000000000000000000000000000000000 00000000000000000000000000002371B4002270B3092674B7622876B9812877 B97F2977BA7F2977BA7F2576BB7F2A77B97DA5B2BDBCEEEDEDFFF4F4F4FFF4F4 F4FFEEEDEDFFA5B2BDBC2C79BA7D2778BD7F2B79BC7F2B7ABC802B79BC792674 B72C2775B8000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000B4B4B400B0B0B030BCBCBC7DBEBEBE80BEBE BE80BCBCBC7DB0B0B030B4B4B400000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = SpeedButton6Click ShowHint = True ParentFont = False ParentShowHint = False end object SpeedButton1: TSpeedButton Left = 4 Height = 40 Hint = 'Pour déplacer cette palette, glissez-déposez à partir de cette zone...' Top = 232 Width = 132 Color = clAqua Flat = True Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001CAC660021B26D001EAF69000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000019A86100585858055D5D5D685B5B5B1E1BAB 6500000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC6600585858075F5F5F82676767F8616161B95B5B 5B1D1BAB65000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000005D5D5D0A5D5D5D83676767F9777777FF6F6F6FFF5F5F 5FBD5B5B5B210000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000005D5D5D325D5D5DAA6B6B6BF7797979FF717171FF5F5F 5FC65B5B5B600000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC660054545416676767E7797979FF6F6F6FFF5B5B 5B571BAB65000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000001CAC66001CAC 66001CAC6600000000000000000056565618676767E7797979FF6F6F6FFF5B5B 5B590000000000000000000000001CAC66001CAC660000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000019A76100565656055B5B 5B655B5B5B0E1CAC66001CAC660053535313676767E7797979FF6E6E6EFF5B5B 5B551CAC65001CAC66001CAC66005B5B5B5E5B5B5B1F1CAC6500000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001BAB6500565656075F5F5F826060 60EC5D5D5D695B5B5B595B5B5B595B5B5B686A6A6AEF7A7A7AFF707070FF5F5F 5F925B5B5B595B5B5B595B5B5B595F5F5FCA5F5F5FBC5B5B5B1D1DAD67000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000005B5B5B0A5F5F5F806D6D6DF87777 77FF727272FF707070FF6F6F6FFF6F6F6FFF777777FF7C7C7CFF797979FF7070 70FF6F6F6FFF6F6F6FFF6F6F6FFF727272FF6F6F6FFF616161B95B5B5B200000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000005B5B5B32636363DD777777FF8080 80FF7E7E7EFF7D7D7DFF7B7B7BFF797979FF7B7B7BFF7B7B7BFF7C7C7CFF7B7B 7BFF797979FF797979FF797979FF7A7A7AFF777777FF686868FA5D5D5D680000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000001BAB65005D5D5D47666666E46F6F 6FFF6A6A6AE9686868E7676767E7676767E9727272FD7B7B7BFF777777FF6A6A 6AEF676767E7676767E7676767E76B6B6BF8696969FB5F5F5F82595959080000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000029C178005D5D5D475D5D 5DCD5858583054545418545454185656562E676767E9797979FF6F6F6FFF5B5B 5B685555551856565618565656185D5D5DAB5D5D5D835757570519A861000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000019A7610020B26C005C5C 5C315D5D5D091CAC66001CAC660054545417676767E7797979FF6F6F6FFF5B5B 5B581CAC66001CAC66001CAC66005D5D5D315B5B5B091CAC6500000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000001CAC 66001CAC6600000000001CAC660054545417676767E7797979FF6F6F6FFF5B5B 5B581CAB650000000000000000001CAC66001CAC660000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000005D5D5D0A59595930696969E97C7C7CFF6F6F6FFF5D5D 5D695C5C5C130000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000005D5D5D325D5D5DCC6F6F6FFE7D7D7DFF737373FF6060 60E95C5C5C660000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000001CAC66005D5D5D47666666E4767676FF6B6B6BFA5F5F 5F82595959080000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000002AC179005D5D5D47646464D95F5F5F805656 56051AA762000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000019A7610020B26C005B5B5B305A5A5A091BAB 6500000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000001CAC66001CAC66000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnMouseDown = SpeedButton1MouseDown OnMouseMove = SpeedButton1MouseMove OnMouseUp = SpeedButton1MouseUp ShowHint = True ParentShowHint = False end object SpeedButton2: TSpeedButton Left = 4 Height = 38 Hint = 'Export de la simulation au format Postscript' Top = 384 Width = 132 Caption = 'Export PS' Font.Color = clBlue Font.Style = [fsBold] NumGlyphs = 0 OnClick = SpeedButton2Click ParentFont = False end object SpeedButton7: TSpeedButton Left = 4 Height = 38 Top = 192 Width = 132 Caption = 'Grouper tout' Font.Color = clRed Font.Style = [fsBold] Glyph.Data = { 36100000424D3610000000000000360000002800000020000000200000000100 2000000000000010000064000000640000000000000000000000000000000000 0000000000000000000000000000000000000000000100000007000000110000 0016000000160000001600000016000000160000001600000010000000060000 0001000000000000000100000007000000110000001600000016000000160000 0016000000160000001600000010000000060000000100000000000000000000 000000000000000000000000000000000000000000080000001F000000390000 00430000004300000043000000430000004300000042000000370000001E0000 000800000001000000080000001F000000390000004300000043000000430000 00430000004300000042000000370000001E0000000800000001000000000000 000200000008000000100000001500000017000000241D1D1D574E4C4BFC4C4A 49FF4C4A49FF4D4B4AFF454343FF3A3837FF3D3B3AFF403E3DEF191818570000 001E0000000D0000001E1B1A1A56444241FC3D3B3AFF3A3838FF42403FFF4D4B 4AFF4C4A49FF4C4A49FF4B4948EF1F1E1D570000001F00000007000000030000 000F0000002400000036000000400000004315171959595958FF979695FFB7B5 B3FFB7B5B4FFB8B7B5FFBAB9B7FF9C9A98FF959390FF7C7A7AFF4B4948FF1A19 19530000002C1B1B1A534C4A48FF7D7B79FF959391FF979593FFB9B7B5FFBAB8 B5FFB8B6B4FFB7B5B3FF989695FF5B5957FF23222151000000110000000C0000 002A743A0A8A964909D1A75108FFAC5002FF65564CFFA1A1A1FFBAB9BAFF7A7B 7BFF5E6064FF525559FF575759FF646261FF656361FF9D9B99FF8B8986FF4E4C 4AF60000004D4D4B4AE88A8887FF9D9B99FF676562FF615F5DFF5C5A59FF5B59 58FF676564FF7F7D7BFFBCBAB9FFA4A29FFF5C5A59FC00000016000000148F4B 10A3AE5B15FFCD8747FFDC995CFFEAA562FF565C62FFD1D1D0FF828385FF8E75 5DFFD8985BFFF0A45AFF73665AFF575656FF565453FF555352FF565453FF5856 55FF595655FF585655FF565453FF555352FF565453FF595756FF5A5857DF0000 00140B0B0B09595756AB878584FFD4D2CFFF615F5EFF0000001600000016B15F 18FFDCA068FFE1A569FFE09D5CFFE69C54FF5B6067FFDFDFDEFF7C7E7FFFC78D 55FFE69C54FFE99D53FF60656AFFF2F4F6FFF0F0F1FFEFEFEFFFEFEFF0FFEFF0 F1FFF0F0F2FFF0F0F1FFEFEFF0FFEFEFEFFFF0F0F1FFF5F5F6FF6C6A68FF0000 00250000001E302F2E5383817FFFE2E0DDFF676564FF0000001600000016B868 21FFE8B98CFFE2A260FFE3A261FFEAA55FFF62676DFFE8E8E9FF949597FF987E 65FFE6A25EFFF2A85DFF8B7F73FF767573FF73716EFF716F6CFF71706EFF7273 73FF737576FF747473FF72706EFF716F6CFF73716EFF777573FF737170E20000 0048000000465E5C5BBB999796FFEBE9E8FF6F6C6CFF0000001000000016C780 3FFFEAC29DFFE6AA69FFE7AB6BFFEEAE6AFF797674FFCBCDCFFFE4E4E5FF9394 96FF6B6E72FF6D7074FF717172FF716F6FFF9F9D9CFFE7E7E6FFC7C9CBFF8A83 7EFFC96912FF707375E6D3D3D3FFE8E7E6FF979594FF72706FFF757271FF7573 72FF737170FFA09E9DFFE6E5E4FFC9C8C7FF777573EA0000000600000016CB86 46FFEECDAEFFEAB273FFEAB375FFEEB575FFDBAA73FF777B7EFFC9CACBFFF2F2 F2FFF3F3F3FFF4F4F4FFF4F4F4FFF4F4F4FFF3F3F3FFCBCCCDFF818080FFE0C3 A6FFCB711EFF0303032E868382FFD1CFCEFFF7F5F4FFF8F5F5FFF8F6F6FFF8F6 F6FFF8F5F5FFF6F4F4FFCFCECDFF858382FF696766270000000100000013D08F 51FFF2D9C3FFF0BA7BFFEFBB7EFFF1BC7EFFF4BC7AFFE3BD91FF929191FF7A77 74FF7B7875FF7B7876FF7B7979FF797A7CFF787A7EFF87837FFFE1B279FFFADD C3FFD07726FF0000004802020248837A7ADC8D8282FF8C8182FF8C8182FF8C81 82FF8C8182FF8A8281FF888382F86B686728000000010000000000000009CD85 3EFFF5E1CFFFF4DABBFFF4C388FFF5C182FFF7C98EFFFFFFFFFFFFFFFFFFFFFE FAFFFFFBF5FFF8F5EFFFEFECE5FFFECA8BFFFEC681FFFBC787FFF9DBBAFFFBE2 CEFFDD7E2FFF207D6DFF297E6AFF2A7D68FF2A7C67FF297C67FF297C67FF297B 65F4236A57BE123A3066000000280000000B000000000000000000000002BF7D 3A63D8995BFFF2DDCAFFF9EEE3FFF9DBB6FFFFFCF4FFCCE4F2FF96C1D8FF84B3 CBFF7AAAC2FF78A5BCFFA6C0CCFFEAE1D4FFFEDEB9FFFCEFE3FFF8DCC8FFE897 56FF7D9B66FF45A981FF4CA97FFF4DA97FFF4DA97FFF4DA97FFF4DA97FFF4DAA 7FFF469D7BFF36886FFF256A58A1000000140000000000000000000000000000 0001C583414DD48B41F8E2AD79FFF4DECAFFFFFFFFFF72B4D7FF6EACCAFF6098 B6FF5086A4FF3F7896FF205B7DFFEAEBEBFFFAD9BEFFEEAD76FFD08C43FF6B9A 66FF37A179FF3EA178FF40A077FF40A076FF41A077FF41A177FF41A177FF42A2 77FF4CA97FFF5EB38DFF328370FF000000160000000000000000000000000000 00000000000000000002D18D475FDD9143E1F2A154FF79BADCFF689EB7FF5888 A0FF4A7992FF3B6982FF235675FFFEA85BFFD49A53FF759E67FF32A57DFF3AA6 7DFF3FA67CFF3EA47AFF3AA377FF3AA377FF3FA47AFF41A67CFF42A67CFF41A6 7BFF3FA479FF71C09DFF318371FF000000160000000000000000000000000000 000000000000000000000000000600000020546F7FD07EB1CBFF77B7D8FF72B2 D3FF6EAACEFF64A1C4FF3B708FFF6A9093FF75CDACFF36AA7EFF3EAB80FF40AB 80FF3EA97EFF35A678FFAED6C5FFACD4C1FF35A679FF3FAA7EFF42AB80FF41AB 7FFF3DA97DFF82CDACFF308472FF000000160000000000000000000000000000 0000000000000000000100000012132B3C4A5293BCFF86C9ECFF7EBDDEFF77B5 D6FF70AECFFF6BA8C9FF64A0C4FF4883ABFF87CEB6FF3CB180FF40B182FF40B0 82FF38AE7EFF74C4A2FFFFF9FCFFFFF2F3FF6FBF9DFF39AF7FFF40B183FF3FB0 82FF3AAE7FFF92D8BBFF2F8673FF000000130000000000000000000000000000 0000000000000000000700000023255882DC7CBDE0FF8ECEEEFF82C2E3FF7CBB DBFF75B3D4FF6FACCDFF6BA7C8FF5B93B9FF437999FF66CDA0FF3CB684FF3AB4 83FF40B785FFFFFFFDFFFFF9F6FFFCF3EFFFF4ECE6FF41B786FF3CB584FF3AB3 83FF60C49DFFA5E5CBFF2E8776FF000000090000000000000000000000000000 0000000000000000000E0A294B6C0D3D70FF7EBFE1FF93D4F4FF88C9E9FF81C1 E1FF7BB9DAFF74B2D3FF70AECFFF5688ABFF05265FFF75ACB2FF8ADFBBFF44BE 8BFFAAD7D9FFA0C4DDFF84B2CBFF7AA8C2FF7FA5BEFF86B4B6FF47C28FFF87DA BAFFB6F1D9FF6FBBA7FF2D807063000000020000000000000000000000000000 000000000000000000140E3966BC144B7BFFA5EAFFFF9DE0FFFF93D4F4FF89CB EBFF82C1E2FF7AB9DAFF76B5D6FF6AA4C5FF082354FF275F81FF8DD7BEFFC5FF E6FF82B8DBFF72ADCCFF6098B6FF5087A4FF427897FF2E5C7FFFCBFFECFF8AD1 BEFF3E9786FF2C7E6E4D00000001000000000000000000000000000000000000 00000000000000000016144074F8195581FF5D99C0FF5C97BCFF5E97BCFF86C5 E5FF8DCEEFFF84C4E3FF7EC0DFFF649ABCFF0B2350FF134176FF297E687F3394 7BFF86BCDBFF6A9EB7FF5888A0FF4B7992FF3D6A83FF2E5775FF399984FF2D88 7687000000030000000000000000000000000000000000000000000000000000 00000000000000000016154476FF1C5A86FF205B8AFF275E8DFF295B88FF173F 6AFF3F6F95FF77B4D5FF84C6E5FF26476DFF112A5AFF16427AFF000000210000 002B77ADCBFF7BB9D9FF74B3D4FF6EAACDFF629BBEFF386481FF0000002C0000 000C000000010000000000000000000000000000000000000000000000000000 00000000000000000015154274FF18608FFF2A74A4FF3D83B2FF4C8CB9FF5C91 BDFF4B75A0FF2A4E78FF22416AFF233C68FF152F5DFF18477BFF0000002E325E 7D9A8FD0EEFF83C3E4FF79B7D9FF72AFD0FF6BA7CAFF6098BBFF3761849E0000 001D000000050000000000000000000000000000000000000000000000000000 0000000000000000000F144173FF185E8DFF2B79ABFF3B83B4FF478AB9FF538F BCFF5288B6FF4776A2FF355985FF244370FF14315FFF174679FF02070E411648 78F39CDFFDFF8ACBEBFF7FBFDFFF77B6D6FF71AFD0FF6EACCCFF1C4571F5061A 314B0000000D0000000000000000000000000000000000000000000000000000 00000000000000000006113D6EC4164D7CFF2478ADFF327FB1FF3D85B4FF4387 B6FF4481B0FF3C709EFF2D5984FF1E3E6AFF153767FF123D6DBB0E3561B11449 7AFFA7ECFFFF94D7F6FF89CAE9FF80BFDFFF78B7D7FF76B6D6FF0E2754FF113B 6ABE000000140000000000000000000000000000000000000000000000000000 000000000000000000010F37613E134174FF195F8EFF287CAFFF317FB1FF3781 B2FF3478A9FF2E6897FF21517DFF143663FF154275FF09223C39144072F01A55 83FF6FACD0FF619BBFFF86C6E6FF8CCEEEFF83C4E4FF82C3E3FF0D244FFF1845 78F8000000160000000000000000000000000000000000000000000000000000 0000000000000000000000000002103B6A62134174FF185484FF1F6C9BFF246F A0FF236796FF1C5786FF174574FF154174FF103C6B5E00000018164476FF1D59 87FF245F8EFF29608DFF234E7BFF406F95FF67A0C2FF3F698CFF142C59FF1B49 7BFF000000160000000000000000000000000000000000000000000000000000 000000000000000000000000000000000001103B6A39124071C0144073FF1444 76FF144073FF144275FF124173C0103C6B390000000100000014174274FF1A64 92FF327DAEFF468BB9FF5992BEFF527FAAFF355A84FF284671FF17325EFF1B49 7BFF000000140000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000D144173FF1A5F 90FF2E7EB0FF3E87B5FF4A8BBAFF4A85B1FF3C6C99FF284976FF163360FF1746 7AFF0000000D0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000004103D6EB11648 79FF2277AAFF317FB2FF3983B5FF387AAAFF2D6492FF1C426FFF173B6CFF1340 72B2000000040000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000061240 74FF164B7CFF1D6A9BFF2470A1FF226696FF195380FF154070FF144477FF0000 0006000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0004113E70AE144173FF174175FF174375FF154275FF124073AD000000040000 0000000000000000000000000000000000000000000000000000 } NumGlyphs = 0 OnClick = SpeedButton7Click ParentFont = False end end optgeo-2.21/saisiech.lfm0000750000175000017500000000537212247333133015427 0ustar georgeskgeorgeskobject saisiechoix: Tsaisiechoix Left = 60 Height = 328 Top = 140 Width = 856 BorderIcons = [] BorderStyle = bsDialog Caption = 'Que voulez vous faire ?' ClientHeight = 328 ClientWidth = 856 OnCreate = FormCreate OnShow = FormShow LCLVersion = '1.0.10.0' object StaticText2: TLabel Left = 8 Height = 21 Top = 192 Width = 548 Caption = 'Vous pouvez changer les indices du milieu dans lequel s''effectue la simulation:' Font.Style = [fsBold] ParentColor = False ParentFont = False end object StaticText3: TLabel Left = 8 Height = 21 Top = 224 Width = 86 Caption = 'Pour le vert:' Color = clGreen Font.Style = [fsBold] ParentColor = False ParentFont = False Transparent = False end object StaticText4: TLabel Left = 8 Height = 21 Top = 256 Width = 99 Caption = 'Pour le rouge:' Color = clRed Font.Style = [fsBold] ParentColor = False ParentFont = False Transparent = False end object StaticText5: TLabel Left = 8 Height = 21 Top = 288 Width = 88 Caption = 'Pour le bleu:' Color = clBlue Font.Style = [fsBold] ParentColor = False ParentFont = False Transparent = False end object radiochoix: TRadioGroup Left = 8 Height = 177 Top = 8 Width = 689 AutoFill = True Caption = 'Voulez vous:' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 155 ClientWidth = 685 Color = clAqua ItemIndex = 0 Items.Strings = ( 'Créér une nouvelle simulation' 'Créér une nouvelle simulation en choisissant les dimensions de l''espace de travail' 'Ouvrir une simulation existante' ) ParentFont = False ParentColor = False TabOrder = 0 end object BitBtn1: TBitBtn Left = 720 Height = 301 Top = 8 Width = 121 Caption = 'Suivant >' Default = True Font.Style = [fsBold] ModalResult = 1 NumGlyphs = 2 ParentFont = False TabOrder = 1 end object Edit_indice_vert_par_defaut: TEdit Left = 112 Height = 28 Top = 217 Width = 65 TabOrder = 2 Text = '1' end object Edit_indice_rouge_par_defaut: TEdit Left = 112 Height = 28 Top = 249 Width = 65 TabOrder = 3 Text = '1' end object Edit_indice_bleu_par_defaut: TEdit Left = 112 Height = 28 Top = 281 Width = 65 TabOrder = 4 Text = '1' end end optgeo-2.21/unit8.pas0000750000175000017500000000434412247333133014711 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit8; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin, LResources,UnitScaleFont,UChaines; type { Tsaisienombresommet } Tsaisienombresommet = class(TForm) BitBtn1: TBitBtn; GroupBox1: TGroupBox; StaticText1: TLabel; SpinEdit1: TSpinEdit; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisienombresommet: Tsaisienombresommet; nbpoly:integer; implementation procedure Tsaisienombresommet.BitBtn1Click(Sender: TObject); begin nbpoly:=spinedit1.value; end; procedure Tsaisienombresommet.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; CAPTION:=rsNombreDeSomm; GROUPBOX1.CAPTION:=rsSommetsDeCeP; STATICTEXT1.CAPTION:=rsNombre; end; procedure Tsaisienombresommet.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit8.lrs} end. optgeo-2.21/Unit17.lfm0000750000175000017500000001702412247333133014723 0ustar georgeskgeorgeskobject saisiepreferences: Tsaisiepreferences Left = 605 Height = 396 Top = 177 Width = 767 BorderIcons = [] BorderStyle = bsDialog Caption = 'Préférences: propriétés par défaut à la création' ClientHeight = 396 ClientWidth = 767 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '1.0.10.0' object PageControl1: TPageControl Left = 0 Height = 385 Top = 0 Width = 513 ActivePage = TabSheet1 TabIndex = 0 TabOrder = 0 object TabSheet1: TTabSheet Caption = 'Element par élément' ClientHeight = 352 ClientWidth = 505 object Label1: TLabel Left = 32 Height = 21 Top = 16 Width = 103 Caption = 'Type d''élément' ParentColor = False end object Label2: TLabel Left = 232 Height = 21 Top = 16 Width = 125 Caption = 'Couleur par défaut' ParentColor = False end object Label3: TLabel Left = 232 Height = 21 Top = 112 Width = 136 Caption = 'Epaisseur par défaut' ParentColor = False end object Label4: TLabel Left = 360 Height = 21 Top = 16 Width = 152 Caption = 'Couleur axe par défaut' ParentColor = False end object Labelcouleur: TLabel Left = 232 Height = 13 Top = 40 Width = 3 AutoSize = False ParentColor = False end object Labelcouleuraxe: TLabel Left = 360 Height = 13 Top = 40 Width = 3 AutoSize = False ParentColor = False end object Label5: TLabel Left = 368 Height = 21 Top = 112 Width = 114 Caption = 'Police par défaut' ParentColor = False end object ComboBox1: TComboBox Left = 8 Height = 28 Top = 64 Width = 209 ItemHeight = 20 Items.Strings = ( 'Miroir plan' 'Miroir sphérique concave paraxial' 'Miroir sphérique convexe paraxial' 'Miroir sphérique concave réel' 'Miroir sphérique convexe réel' 'Miroir cônique' 'Lentille mince convergente idéale' 'Lentille mince divergente idéale' 'Lentille épaisse' 'Polyhèdre réfractant' 'Polycercle réfractant' 'Sphère réfractante' 'Rayon unique' 'Onde plane' 'Source ponctuelle' 'Ecran' 'Lame semi-réfléchissante' 'Diaphragme' 'Oeil' 'Fléche' 'Texte' 'Prisme' 'Réseau' ) OnChange = ComboBox1Change Style = csDropDownList TabOrder = 0 end object SpinEdit1: TSpinEdit Left = 256 Height = 28 Top = 136 Width = 41 MaxValue = 10 MinValue = 1 OnChange = SpinEdit1Change TabOrder = 1 Value = 1 end object boutoncouleur: TButton Left = 232 Height = 25 Top = 72 Width = 89 Caption = 'Modifier' OnClick = boutoncouleurClick TabOrder = 2 end object boutoncouleuraxe: TButton Left = 360 Height = 25 Top = 72 Width = 113 Caption = 'Modifier' OnClick = boutoncouleuraxeClick TabOrder = 3 end object boutonpolice: TButton Left = 360 Height = 25 Top = 320 Width = 113 Caption = 'Modifier' OnClick = boutonpoliceClick TabOrder = 5 end object BitBtn3: TBitBtn Left = 8 Height = 41 Top = 192 Width = 305 Caption = '&Rétablir les valeurs d''origine de tous les éléments' Kind = bkRetry NumGlyphs = 0 OnClick = BitBtn3Click TabOrder = 4 end object Memo2: TMemo Left = 360 Height = 161 Top = 144 Width = 113 TabOrder = 6 end end object TabSheet2: TTabSheet Caption = 'Pour tous les éléments' ClientHeight = 359 ClientWidth = 505 object Label6: TLabel Left = 32 Height = 14 Top = 8 Width = 329 Caption = 'Indiquer ici les propriétés communes à appliquer à tous les éléments:' ParentColor = False end object Labelcouleur1: TLabel Left = 16 Height = 13 Top = 60 Width = 3 AutoSize = False ParentColor = False end object Labelcouleuraxe1: TLabel Left = 160 Height = 13 Top = 60 Width = 3 AutoSize = False ParentColor = False end object Label7: TLabel Left = 336 Height = 14 Top = 32 Width = 123 Caption = 'Couleur rayon par défaut' ParentColor = False end object Labecouleurrayon: TLabel Left = 336 Height = 13 Top = 60 Width = 3 AutoSize = False ParentColor = False end object SpinEdit2: TSpinEdit Left = 48 Height = 21 Top = 192 Width = 41 MaxValue = 10 MinValue = 1 OnChange = SpinEdit2Change TabOrder = 0 Value = 1 end object boutoncouleu1: TButton Left = 16 Height = 25 Top = 92 Width = 89 Caption = 'Modifier' OnClick = boutoncouleu1Click TabOrder = 1 end object boutoncouleuraxe1: TButton Left = 160 Height = 25 Top = 92 Width = 113 Caption = 'Modifier' OnClick = boutoncouleuraxe1Click TabOrder = 2 end object Button1: TButton Left = 336 Height = 25 Top = 92 Width = 113 Caption = 'Modifier' OnClick = Button1Click TabOrder = 4 end object Memo1: TMemo Left = 160 Height = 137 Top = 176 Width = 113 TabOrder = 3 end end end object BitBtn2: TBitBtn Left = 520 Height = 169 Top = 216 Width = 232 Caption = '&Ok et enregistrer sur disque' Kind = bkYes NumGlyphs = 0 OnClick = BitBtn2Click TabOrder = 1 end object BitBtn1: TBitBtn Left = 520 Height = 199 Top = 6 Width = 232 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 2 end object FontDialog1: TFontDialog Font.Height = -11 MinFontSize = 0 MaxFontSize = 0 left = 120 top = 288 end object ColorDialog1: TColorDialog Color = clBlack CustomColors.Strings = ( 'ColorA=000000' 'ColorB=000080' 'ColorC=008000' 'ColorD=008080' 'ColorE=800000' 'ColorF=800080' 'ColorG=808000' 'ColorH=808080' 'ColorI=C0C0C0' 'ColorJ=0000FF' 'ColorK=00FF00' 'ColorL=00FFFF' 'ColorM=FF0000' 'ColorN=FF00FF' 'ColorO=FFFF00' 'ColorP=FFFFFF' 'ColorQ=C0DCC0' 'ColorR=F0CAA6' 'ColorS=F0FBFF' 'ColorT=A4A0A0' ) left = 56 top = 288 end end optgeo-2.21/unit12.lfm0000750000175000017500000000227412247333133014757 0ustar georgeskgeorgeskobject saisiediametre: Tsaisiediametre Left = 200 Height = 106 Top = 108 Width = 328 BorderIcons = [] BorderStyle = bsDialog Caption = 'Saissez le diamètre de la lentille' ClientHeight = 106 ClientWidth = 328 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object GroupBox1: TGroupBox Left = 8 Height = 89 Top = 8 Width = 209 Caption = 'Saisissez' ClientHeight = 71 ClientWidth = 205 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 32 Width = 52 Caption = 'Diamètre=' ParentColor = False end object log1: TLabel Left = 160 Height = 14 Top = 32 Width = 21 Caption = 'log1' ParentColor = False end object editdia: TEdit Left = 64 Height = 21 Top = 32 Width = 89 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 224 Height = 83 Top = 16 Width = 97 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 1 end end optgeo-2.21/Unit9.lfm0000750000175000017500000000256112247333133014644 0ustar georgeskgeorgeskobject saisietexte: Tsaisietexte Left = 231 Height = 83 Top = 180 Width = 632 BorderIcons = [] BorderStyle = bsDialog Caption = 'Saisir le texte à afficher' ClientHeight = 83 ClientWidth = 632 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object SpeedButton1: TSpeedButton Left = 368 Height = 57 Top = 16 Width = 73 Caption = 'Police' Color = clBtnFace NumGlyphs = 0 OnClick = SpeedButton1Click end object GroupBox1: TGroupBox Left = 8 Height = 65 Top = 8 Width = 353 Caption = 'Texte' ClientHeight = 47 ClientWidth = 349 TabOrder = 0 object Edit1: TEdit Left = 8 Height = 21 Top = 16 Width = 329 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 448 Height = 55 Top = 16 Width = 89 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 1 end object BitBtn2: TBitBtn Left = 552 Height = 55 Top = 17 Width = 73 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 TabOrder = 2 end object FontDialog1: TFontDialog Font.Height = -11 MinFontSize = 0 MaxFontSize = 0 left = 216 top = 256 end end optgeo-2.21/unit4.pas0000750000175000017500000000756312247333133014713 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit4; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons,{$ifdef windows}shellapi,windows,{$endif }LResources,UnitScaleFont, LazHelpHTML,UTF8Process,UChaines; type { TForm4 } TForm4 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; StaticText5: TLabel; StaticText6: TLabel; StaticText7: TLabel; StaticText8: TLabel; Label1: TLabel; Label2: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure StaticText5Click(Sender: TObject); procedure StaticText8Click(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var Form4: TForm4; implementation procedure TForm4.BitBtn1Click(Sender: TObject); begin close; end; procedure TForm4.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; BITBTN2.CAPTION:=rsAnnuler; CAPTION:=rsAProposDeCeL; LABEL1.CAPTION:=Format(rsEnCliquantSu, ['"', '"']); LABEL2.CAPTION:=rsDeLaLicenseG; STATICTEXT1.CAPTION:=rsOptGeoLogici; STATICTEXT2.CAPTION:=rsDeuxDimensio; STATICTEXT3.CAPTION:=rsVersion200Be; STATICTEXT4.CAPTION:=rsCopyrightJea; STATICTEXT5.CAPTION:=rsJeanmarieBia; STATICTEXT6.CAPTION:=rsPourTouteRem; STATICTEXT7.CAPTION:=rsVRifierQueVo; STATICTEXT8.CAPTION:=rsSiteWebDeLAu; end; procedure TForm4.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure TForm4.StaticText5Click(Sender: TObject); begin {$ifdef windows} ShellExecute( 0, Nil, PChar('mailto:jeanmarie.biansan@free.fr'),Nil, Nil, SW_NORMAL ); {$endif} end; procedure TForm4.StaticText8Click(Sender: TObject); var v: THTMLBrowserHelpViewer; BrowserPath, BrowserParams: string; p: LongInt; URL: String; BrowserProcess: TProcessUTF8; begin v:=THTMLBrowserHelpViewer.Create(nil); try v.FindDefaultBrowser(BrowserPath,BrowserParams); //debugln(['Path=',BrowserPath,' Params=',BrowserParams]); url:='http://jeanmarie.biansan.free.fr/logiciel.html'; p:=System.Pos('%s', BrowserParams); System.Delete(BrowserParams,p,2); System.Insert(URL,BrowserParams,p); // start browser BrowserProcess:=TProcessUTF8.Create(nil); try BrowserProcess.CommandLine:=BrowserPath+' '+BrowserParams; BrowserProcess.Execute; finally BrowserProcess.Free; end; finally v.Free; end; end; initialization {$i Unit4.lrs} end. optgeo-2.21/saisiegr.pas0000750000175000017500000000763112247333133015452 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiegr; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,unit222, LResources,LCLType,UnitScaleFont,UChaines; type { Tsaisiegrille } Tsaisiegrille = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editpash: TEdit; Editpasv: TEdit; GroupBox2: TGroupBox; cocheattraction: TCheckBox; GroupBox3: TGroupBox; cocheafficher: TCheckBox; log1: TLabel; log2: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiegrille: Tsaisiegrille; implementation uses ray1; procedure Tsaisiegrille.BitBtn1Click(Sender: TObject); begin try grillex:=abs(strtofloat(editpash.text)); except application.messagebox(pchar(rsValeurDuPasH), pchar(rsAttention3), mb_ok); modalresult:=mrno; exit; end; if grillex=0 then begin application.messagebox(pchar(rsValeurDuPasH), pchar(rsattention),mb_ok); modalresult:=mrno; exit; end; if ((grillex>(xxmax-xxmin)/3) or (grillex<(xxmax-xxmin)/1000)) then begin if application.messagebox(pchar(rsValeurDuPasH2), pchar(rsattention),mb_yesno)=idno then begin modalresult:=mrno; exit; end; end; try grilley:=abs(strtofloat(editpasv.text)); except application.messagebox(pchar(rsValeurDuPasH), pchar(rsattention),mb_ok); modalresult:=mrno; exit; end; if grilley=0 then begin application.messagebox(pchar(rsValeurDuPasV), pchar(rsattention),mb_ok); modalresult:=mrno; exit; end; if ((grilley>(yymax-yymin)/3) or (grilley<(yymax-yymin)/1000)) then begin if application.messagebox(pchar(rsValeurDuPasV2), pchar(rsattention),mb_yesno)=idno then begin modalresult:=mrno; exit; end; end; tracergrille:=cocheafficher.checked; attractiongrille:=cocheattraction.checked; form1.afficherlagrille1.checked:=tracergrille; form1.attractiondelagrille1.checked:=attractiongrille; end; procedure Tsaisiegrille.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; CAPTION :=rsPropriTSDeLa; COCHEAFFICHER.CAPTION :=rsAfficher2; COCHEATTRACTION.CAPTION :=rsAttraction; GROUPBOX1.CAPTION :=rsPasDeLaGrill; GROUPBOX2.CAPTION :=rsAttractionDe; GROUPBOX3.CAPTION :=rsAfficherLaGr; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; STATICTEXT1.CAPTION :=rsPasHorizonta; STATICTEXT2.CAPTION :=rsPasVertical; end; procedure Tsaisiegrille.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiegr.lrs} end. optgeo-2.21/rtftoplaintext.pas0000750000175000017500000000641412247333133016731 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit RTFtoPlainText; {$mode objfpc}{$H+} interface function Rtf2PlainText(const rtf:string):string; implementation function Rtf2PlainText(const rtf:string):string; var s:string; niveau,i:integer; slash:boolean; label 999; begin niveau:=0; i:=0; slash:=false; s:=''; if rtf='' then begin result:=''; exit; end; repeat inc(i); if rtf[i]='{' then begin inc(niveau); goto 999; end; if rtf[i]='}' then begin dec(niveau); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''e9' then begin s:=s+'é'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''ea' then begin s:=s+'ê'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''e8' then begin s:=s+'è'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''e0' then begin s:=s+'à'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''b0' then begin s:=s+'°'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''ee' then begin s:=s+'î'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''f9' then begin s:=s+'ù'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''eb' then begin s:=s+'ë'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''e4' then begin s:=s+'ä'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''e7' then begin s:=s+'ç'; inc(i,3); goto 999; end; if ((rtf[i]='\') and (i+3<=length(rtf))) then if copy(rtf,i,4)='\''b5' then begin s:=s+'µ'; inc(i,3); goto 999; end; if rtf[i]='\' then begin slash:=true; goto 999; end; if ((rtf[i]=' ') and slash) then begin slash:=false; goto 999; end; if ((niveau=0) and not(slash) and not(rtf[i]=#00)) then begin s:=s+rtf[i]; goto 999; end; 999: until i=length(rtf); result:=s; end; end. optgeo-2.21/saisiecercle.lfm0000750000175000017500000002312112247333133016262 0ustar georgeskgeorgeskobject saisiepolycercle: Tsaisiepolycercle Left = 447 Height = 606 Top = 240 Width = 603 ActiveControl = BitBtn1 BorderIcons = [] BorderStyle = bsDialog Caption = 'Propriétés de ce polycercle' ClientHeight = 606 ClientWidth = 603 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.30.2' object radiosortant: TRadioGroup Left = 7 Height = 136 Top = 352 Width = 313 AutoFill = True Caption = 'Rayon réfléchi (sens sortant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 118 ClientWidth = 309 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 0 end object radioentrant: TRadioGroup Left = 8 Height = 136 Top = 208 Width = 313 AutoFill = True Caption = 'Rayon réfléchi (sens entrant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 118 ClientWidth = 309 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 1 end object GroupBox2: TGroupBox Left = 343 Height = 168 Top = 425 Width = 241 Caption = 'Indice de réfraction du milieu' ClientHeight = 150 ClientWidth = 237 TabOrder = 2 object StaticText2: TLabel Left = 8 Height = 14 Top = 24 Width = 69 Caption = 'Pour le rouge:' ParentColor = False end object StaticText3: TLabel Left = 8 Height = 14 Top = 48 Width = 61 Caption = 'Pour le vert:' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 72 Width = 61 Caption = 'Pour le bleu:' ParentColor = False end object StaticText7: TLabel Left = 8 Height = 14 Top = 104 Width = 47 Caption = 'Matériau:' ParentColor = False end object editnrouge: TEdit Left = 80 Height = 21 Top = 24 Width = 49 TabOrder = 3 end object editnvert: TEdit Left = 80 Height = 21 Top = 48 Width = 49 TabOrder = 0 end object editnbleu: TEdit Left = 80 Height = 21 Top = 72 Width = 49 TabOrder = 1 end object combomateriaux: TComboBox Left = 64 Height = 21 Top = 104 Width = 169 ItemHeight = 13 OnChange = combomateriauxChange Style = csDropDownList TabOrder = 2 end end object ComboBox1: TComboBox Left = 0 Height = 21 Top = 32 Width = 81 ItemHeight = 13 OnChange = ComboBox1Change Style = csDropDownList TabOrder = 3 end object GroupBox3: TGroupBox Left = 88 Height = 97 Top = 0 Width = 208 Caption = 'Coordonnées de ce sommet' ClientHeight = 79 ClientWidth = 204 TabOrder = 4 object StaticText5: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editx: TEdit Left = 24 Height = 21 Top = 24 Width = 97 TabOrder = 0 end object edity: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 9 Height = 41 Top = 552 Width = 313 Caption = 'Supprimer ce polycercle' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 OnClick = boutonsupClick TabOrder = 5 end object radiorectiligne: TRadioGroup Left = 8 Height = 97 Top = 104 Width = 217 AutoFill = True Caption = 'Ce sommet est relié au suivant par:' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 79 ClientWidth = 213 ItemIndex = 1 Items.Strings = ( 'Un segment de droite' 'Un arc de cercle' ) TabOrder = 6 end object radiorentrant: TRadioGroup Left = 232 Height = 97 Top = 104 Width = 313 AutoFill = True Caption = 'En allant de Ai vers Ai+1, le sommet du cercle est:' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 79 ClientWidth = 309 ItemIndex = 0 Items.Strings = ( 'A gauche' 'A droite' ) TabOrder = 7 end object GroupBox1: TGroupBox Left = 345 Height = 57 Top = 208 Width = 231 Caption = 'Son rayon de courbure vaut:' ClientHeight = 39 ClientWidth = 227 TabOrder = 8 object StaticText1: TLabel Left = 8 Height = 14 Top = 15 Width = 18 Caption = 'Ri=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 15 Width = 21 Caption = 'log3' ParentColor = False end object editrayon: TEdit Left = 32 Height = 21 Top = 8 Width = 89 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 343 Height = 65 Top = 352 Width = 241 Caption = 'Couleur à l''écran' ClientHeight = 47 ClientWidth = 237 TabOrder = 9 object ColorGrid1: TColorBox Left = 38 Height = 22 Top = 8 Width = 126 ItemHeight = 16 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 304 Height = 93 Top = 5 Width = 280 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 10 end object BitBtn2: TBitBtn Left = 8 Height = 40 Top = 504 Width = 312 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 11 end object RadioGroupaigu: TRadioGroup Left = 345 Height = 69 Top = 272 Width = 237 AutoFill = True Caption = 'Son angle au centre est:' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 51 ClientWidth = 233 ItemIndex = 0 Items.Strings = ( 'Aigu' 'Obtu' ) TabOrder = 12 end end optgeo-2.21/saisiegr.lfm0000750000175000017500000000510212247333133015434 0ustar georgeskgeorgeskobject saisiegrille: Tsaisiegrille Left = 200 Height = 241 Top = 108 Width = 340 BorderIcons = [] BorderStyle = bsDialog Caption = 'Propriétés de la grille' ClientHeight = 241 ClientWidth = 340 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object GroupBox1: TGroupBox Left = 8 Height = 105 Top = 8 Width = 225 Caption = 'Pas de la grille' ClientHeight = 87 ClientWidth = 221 TabOrder = 0 object StaticText1: TLabel Left = 16 Height = 14 Top = 24 Width = 76 Caption = 'Pas horizontal=' ParentColor = False end object StaticText2: TLabel Left = 24 Height = 14 Top = 56 Width = 64 Caption = 'Pas vertical=' ParentColor = False end object log1: TLabel Left = 184 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 184 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editpash: TEdit Left = 96 Height = 21 Top = 24 Width = 81 TabOrder = 0 end object Editpasv: TEdit Left = 96 Height = 21 Top = 56 Width = 81 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 8 Height = 56 Top = 176 Width = 225 Caption = 'Attraction de la grille' ClientHeight = 38 ClientWidth = 221 TabOrder = 1 object cocheattraction: TCheckBox Left = 38 Height = 17 Top = 8 Width = 68 Caption = 'Attraction' TabOrder = 0 end end object GroupBox3: TGroupBox Left = 8 Height = 49 Top = 120 Width = 225 Caption = 'Afficher la grille' ClientHeight = 31 ClientWidth = 221 TabOrder = 2 object cocheafficher: TCheckBox Left = 38 Height = 17 Top = 8 Width = 58 Caption = 'Afficher' TabOrder = 0 end end object BitBtn1: TBitBtn Left = 241 Height = 157 Top = 14 Width = 96 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 3 end object BitBtn2: TBitBtn Left = 241 Height = 47 Top = 185 Width = 95 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 4 end end optgeo-2.21/saisiemp.pas0000750000175000017500000001240212247333133015446 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiemp; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, Colorbox, ExtCtrls, Buttons,unit222, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiemiroirplan } Tsaisiemiroirplan = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; GroupBox2: TGroupBox; cochehachures: TCheckBox; GroupBox3: TGroupBox; editepaisseur: TSpinEdit; GroupBox4: TGroupBox; StaticText1: TLabel; editx1: TEdit; StaticText2: TLabel; edity1: TEdit; GroupBox5: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiemiroirplan: Tsaisiemiroirplan; mp_hachuresmiroirplan:boolean; mp_epaisseurmiroirplan:integer; mp_couleurmiroirplan:tcolor; mp_x1,mp_x2,mp_y1,mp_y2:extended; implementation procedure Tsaisiemiroirplan.BitBtn1Click(Sender: TObject); begin mp_hachuresmiroirplan:=cochehachures.Checked; mp_epaisseurmiroirplan:=editepaisseur.Value; mp_couleurmiroirplan:=colorgrid1.Selected; try mp_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox('Valeur inacceptable pour x1 !', pchar(rsattention),mb_ok); exit; end; end; if ((mp_x1xxmax)) then begin application.messagebox('Valeur inacceptable pour x1 !', pchar(rsattention),mb_ok); exit; end; try mp_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox('Valeur inacceptable pour x2 !', pchar(rsattention),mb_ok); exit; end; end; if ((mp_x2xxmax)) then begin application.messagebox('Valeur inacceptable pour x2 !', pchar(rsattention),mb_ok); exit; end; try mp_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox('Valeur inacceptable pour y1 !', pchar(rsattention),mb_ok); exit; end; end; if ((mp_y1yymax)) then begin application.messagebox('Valeur inacceptable pour y1 !', pchar(rsattention),mb_ok); exit; end; try mp_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox('Valeur inacceptable pour y2 !', pchar(rsattention),mb_ok); exit; end; end; if ((mp_y2yymax)) then begin application.messagebox('Valeur inacceptable pour y2 !', pchar(rsattention),mb_ok); exit; end; ReTaillePMiroirPlan(ListeMiroirPlan,nombremiroirplan,nombremiroirplan+1); inc(nombremiroirplan); if not (ListeMiroirPlan[-1+nombremiroirplan].create(mp_x1,mp_y1,mp_x2,mp_y2, mp_epaisseurmiroirplan, mp_couleurmiroirplan,mp_hachuresmiroirplan)) then begin ReTaillePMiroirPlan(ListeMiroirPlan,nombremiroirplan,nombremiroirplan-1); dec(nombremiroirplan); application.messagebox('Taille du miroir trop petite !', pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisiemiroirplan.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeM; CAPTION :=rsAjoutDUnMiro8; COCHEHACHURES.CAPTION :=rsHachures; GROUPBOX1.CAPTION :=rsCouleurLCran6; GROUPBOX2.CAPTION :=rsAspect; GROUPBOX3.CAPTION :=rsEpaisseurTra5; GROUPBOX4.CAPTION :=rsPoint1; GROUPBOX5.CAPTION :=rsPoint2; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; STATICTEXT1.CAPTION :=rsX; STATICTEXT2.CAPTION :=rsY; STATICTEXT3.CAPTION :=rsX; STATICTEXT4.CAPTION :=rsY; end; procedure Tsaisiemiroirplan.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiemp.lrs} end. optgeo-2.21/saisiesp1.pas0000750000175000017500000002345712247333133015551 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiesp1; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,unit222, Buttons, Spin, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiesp } Tsaisiesp = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox9: TGroupBox; Image1: TImage; GroupBox1: TGroupBox; Spinmaxsegment: TSpinEdit; StaticText1: TLabel; StaticText18: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; radiocouleur: TRadioGroup; GroupBox3: TGroupBox; editepaisseur: TSpinEdit; GroupBox4: TGroupBox; GroupBox5: TGroupBox; StaticText5: TLabel; StaticText6: TLabel; editsx: TEdit; editsy: TEdit; GroupBox6: TGroupBox; spinnombrerayons: TSpinEdit; boutonsup: TBitBtn; GroupBox7: TGroupBox; StaticText7: TLabel; Spinmaxenfant: TSpinEdit; radiovirtuelle: TRadioGroup; StaticText8: TLabel; StaticText9: TLabel; StaticText10: TLabel; StaticText11: TLabel; StaticText12: TLabel; editvav: TEdit; editvaa: TEdit; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; log6: TLabel; GroupBox8: TGroupBox; cochesurfacesonde: TCheckBox; StaticText13: TLabel; StaticText14: TLabel; StaticText15: TLabel; editlistechemins: TEdit; StaticText16: TLabel; StaticText17: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure radiovirtuelleClick(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiespp: Tsaisiesp; ra_couleur:tcolor; ra_epaisseur,ra_nombrerayons,ra_maxenfant,ra_maxsegment:integer; ra_x1,ra_x2,ra_y1,ra_y2,ra_sx,ra_sy:extended; ra_virtuelavant,ra_virtuelarriere,ravirtuelle:boolean; implementation procedure Tsaisiesp.BitBtn1Click(Sender: TObject); begin ra_epaisseur:=editepaisseur.value; ra_nombrerayons:=spinnombrerayons.value; ra_maxenfant:=spinmaxenfant.value; ra_maxsegment:=spinmaxsegment.value; case radiocouleur.ItemIndex of 0: ra_couleur:=clred; 1: ra_couleur:=clgreen; 2: ra_couleur:=clblue; 3: ra_couleur:=clblack; end; try ra_sx:=strtofloat(editsx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce41), pchar(rsattention),mb_ok); exit; end; end; if ((ra_sxxxmax)) then begin application.messagebox(pchar(rsValeurInacce41), pchar(rsattention),mb_ok); exit; end; try ra_sy:=strtofloat(editsy.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce42), pchar(rsattention),mb_ok); exit; end; end; if ((ra_syyymax)) then begin application.messagebox(pchar(rsValeurInacce42), pchar(rsattention),mb_ok); exit; end; try ra_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; if ((ra_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try ra_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((ra_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try ra_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try ra_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; ravirtuelle:=(radiovirtuelle.itemindex=1); ReTaillePsourceponctuelle(Listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+1); inc(nombresourceponctuelle); if not (ListeSourcePonctuelle[-1+nombresourceponctuelle].create(ra_nombrerayons, ra_sx,ra_sy,ra_x1,ra_y1,ra_x2,ra_y2, ra_couleur,ra_epaisseur,editvav.text,editvaa.text,ra_maxenfant,ravirtuelle, cochesurfacesonde.checked,editlistechemins.text,ra_maxsegment)) then begin ReTaillePsourceponctuelle(Listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle-1); dec(nombresourceponctuelle); application.messagebox(pchar(rsValeursEntrE), pchar(rsattention),mb_ok); end else modalresult:=mrok; Rafraichit; end; procedure Tsaisiesp.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIESP.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIESP.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet8; CAPTION :=rsSaisieDUneSo; COCHESURFACESONDE.CAPTION // msgctxt ';TSAISIESP.COCHESURFACESONDE.CAPTION'; :=rsTracer; GROUPBOX1.CAPTION // msgctxt ';TSAISIESP.GROUPBOX1.CAPTION'; :=rsPoint1; GROUPBOX2.CAPTION // msgctxt ';TSAISIESP.GROUPBOX2.CAPTION'; :=rsPoint2; GROUPBOX3.CAPTION // msgctxt ';TSAISIESP.GROUPBOX3.CAPTION'; :=rsEpaisseurLCr3; GROUPBOX4.CAPTION // msgctxt ';TSAISIESP.GROUPBOX4.CAPTION'; :=rsTracerEnPoin3; GROUPBOX5.CAPTION // msgctxt ';TSAISIESP.GROUPBOX5.CAPTION'; :=rsSource; GROUPBOX6.CAPTION // msgctxt ';TSAISIESP.GROUPBOX6.CAPTION'; :=rsNombreDeRayo3; GROUPBOX7.CAPTION // msgctxt ';TSAISIESP.GROUPBOX7.CAPTION'; :=rsPourChaqueRa; GROUPBOX8.CAPTION :=rsTracerDesSur2; GROUPBOX9.CAPTION :=rsNombreMaxDeS3; LOG1.CAPTION // msgctxt ';TSAISIESP.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIESP.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIESP.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIESP.LOG4.CAPTION'; :=rsLog4; LOG5.CAPTION // msgctxt ';TSAISIESP.LOG5.CAPTION'; :=rsLog5; LOG6.CAPTION // msgctxt ';TSAISIESP.LOG6.CAPTION'; :=rsLog6; RADIOCOULEUR.CAPTION :=rsCouleurDeLaS; RADIOVIRTUELLE.CAPTION :=rsTypeDeSource; STATICTEXT1.CAPTION // msgctxt ';TSAISIESP.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT10.CAPTION // msgctxt ';TSAISIESP.STATICTEXT10.CAPTION'; :=rsListeDesSegm; STATICTEXT11.CAPTION // msgctxt ';TSAISIESP.STATICTEXT11.CAPTION'; :=rsEntreParenth; STATICTEXT12.CAPTION // msgctxt ';TSAISIESP.STATICTEXT12.CAPTION'; :=rsEtSansEspace; STATICTEXT13.CAPTION // msgctxt ';TSAISIESP.STATICTEXT13.CAPTION'; :=rsDonnerLesVal2; STATICTEXT14.CAPTION // msgctxt ';TSAISIESP.STATICTEXT14.CAPTION'; :=rsDOndeSParezC2; STATICTEXT15.CAPTION // msgctxt ';TSAISIESP.STATICTEXT15.CAPTION'; :=rsExemple12014; STATICTEXT16.CAPTION // msgctxt ';TSAISIESP.STATICTEXT16.CAPTION'; :=rsRemarqueSiLa2; STATICTEXT17.CAPTION // msgctxt ';TSAISIESP.STATICTEXT17.CAPTION'; :=rsNePeutTreEtN; STATICTEXT18.CAPTION // msgctxt ';TSAISIESP.STATICTEXT18.CAPTION'; :=rsNombreMaxima35; STATICTEXT2.CAPTION // msgctxt ';TSAISIESP.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIESP.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIESP.STATICTEXT4.CAPTION'; :=rsY; STATICTEXT5.CAPTION // msgctxt ';TSAISIESP.STATICTEXT5.CAPTION'; :=rsX; STATICTEXT6.CAPTION // msgctxt ';TSAISIESP.STATICTEXT6.CAPTION'; :=rsY; STATICTEXT7.CAPTION // msgctxt ';TSAISIESP.STATICTEXT7.CAPTION'; :=rsNombreMaxima35; STATICTEXT8.CAPTION // msgctxt ';TSAISIESP.STATICTEXT8.CAPTION'; :=rsVersLAvant3; STATICTEXT9.CAPTION // msgctxt ';TSAISIESP.STATICTEXT9.CAPTION'; :=rsVersLArriRe3; radiocouleur.Items[0]:=rsRouge; radiocouleur.Items[1]:=rsVert; radiocouleur.Items[2]:=rsBleu; radiocouleur.Items[3]:=rsLumiReBlanch; end; procedure Tsaisiesp.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure Tsaisiesp.radiovirtuelleClick(Sender: TObject); begin if radiovirtuelle.itemindex=1 then begin cochesurfacesonde.enabled:=false; editlistechemins.enabled:=false; end; if radiovirtuelle.itemindex=0 then begin cochesurfacesonde.enabled:=true; editlistechemins.enabled:=true; end; end; initialization {$i saisiesp1.lrs} end. optgeo-2.21/saisiemscopa.pas0000750000175000017500000001711712247333133016324 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiemscopa; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont,UChaines; type { Tsaisiemiroirscopa } Tsaisiemiroirscopa = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; gridaxe: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; GroupBox3: TGroupBox; ColorGrid1: TColorBox; GroupBox4: TGroupBox; editepaisseur: TSpinEdit; GroupBox5: TGroupBox; cochehachures: TCheckBox; cocheaxe: TCheckBox; GroupBox6: TGroupBox; StaticText5: TLabel; editfocale: TEdit; GroupBox7: TGroupBox; boutonsup: TBitBtn; GroupBox8: TGroupBox; checktrou: TCheckBox; StaticText6: TLabel; editdiametretrou: TEdit; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; log6: TLabel; procedure BitBtn1Click(Sender: TObject); procedure checktrouClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiemiroirscopa: Tsaisiemiroirscopa; mscopa_hachures,mscopa_axe,mscopa_trou:boolean; mscopa_epaisseur:integer; mscopa_couleur,mscopa_couleuraxe:tcolor; mscopa_x1,mscopa_x2,mscopa_y1,mscopa_y2,mscopa_focale,mscopa_diametretrou:extended; implementation uses unit222; procedure Tsaisiemiroirscopa.BitBtn1Click(Sender: TObject); begin mscopa_hachures:=cochehachures.Checked; mscopa_trou:=checktrou.checked; mscopa_axe:=cocheaxe.Checked; mscopa_epaisseur:=editepaisseur.Value; mscopa_couleur:=colorgrid1.selected; mscopa_couleuraxe:=gridaxe.selected; if mscopa_trou then try mscopa_diametretrou:=strtofloat(editdiametretrou.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce32), pchar(rsattention),mb_ok); exit; end; end; if not(mscopa_trou) then mscopa_diametretrou:=0; try mscopa_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; try mscopa_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; try mscopa_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; try mscopa_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; try mscopa_focale:=strtofloat(editfocale.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce24), pchar(rsattention),mb_ok); exit; end; end; if (mscopa_focale=0) then begin application.messagebox(pchar(rsLaFocaleDoit), pchar(rsattention),mb_ok); exit; end; mscopa_focale:=abs(mscopa_focale); ReTaillePMscopa(ListeMscopa,nombreMscopa,nombreMscopa+1); inc(nombremscopa); if not (Listemscopa[-1+nombremscopa].create2(mscopa_x1,mscopa_y1,mscopa_x2,mscopa_y2, mscopa_focale,mscopa_epaisseur, mscopa_couleur,mscopa_couleuraxe,mscopa_hachures,mscopa_axe, mscopa_trou,mscopa_diametretrou)) then begin ReTaillePMscopa(ListeMscopa,nombreMscopa,nombreMscopa-1); dec(nombremscopa); application.messagebox(pchar(rsTailleDuMiro2), pchar(rsattention),mb_ok); end else modalresult:=mrok; Rafraichit; end; procedure Tsaisiemiroirscopa.checktrouClick(Sender: TObject); begin editdiametretrou.enabled:=checktrou.checked; end; procedure Tsaisiemiroirscopa.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.BOUTONSUP.CAPTION'; :=rsSupprimerCeM; CAPTION :=rsAjoutDUnMiro11; CHECKTROU.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.CHECKTROU.CAPTION'; :=rsTrouer; COCHEAXE.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.COCHEAXE.CAPTION'; :=rsAxeOptique; COCHEHACHURES.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.COCHEHACHURES.CAPTION'; :=rsHachures; GROUPBOX1.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX1.CAPTION'; :=rsPoint1; GROUPBOX2.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX2.CAPTION'; :=rsPoint2; GROUPBOX3.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX3.CAPTION'; :=rsCouleurDuMir; GROUPBOX4.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX4.CAPTION'; :=rsEpaisseurTra8; GROUPBOX5.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX5.CAPTION'; :=rsAspect; GROUPBOX6.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX6.CAPTION'; :=rsFocale; GROUPBOX7.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX7.CAPTION'; :=rsCouleurDeLAx6; GROUPBOX8.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.GROUPBOX8.CAPTION'; :=rsTrouerLeMiro; LOG1.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.LOG4.CAPTION'; :=rsLog4; LOG5.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.LOG5.CAPTION'; :=rsLog5; LOG6.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.LOG6.CAPTION'; :=rsLog6; STATICTEXT1.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT2.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.STATICTEXT4.CAPTION'; :=rsY; STATICTEXT5.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.STATICTEXT5.CAPTION'; :=rsF; STATICTEXT6.CAPTION // msgctxt ';TSAISIEMIROIRSCOPA.STATICTEXT6.CAPTION'; :=rsDiamTreDuTro; end; procedure Tsaisiemiroirscopa.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiemscopa.lrs} end. optgeo-2.21/saisielmd.lfm0000750000175000017500000004424412247333133015612 0ustar georgeskgeorgeskobject saisielentillemd: Tsaisielentillemd Left = 317 Height = 344 Top = 228 Width = 576 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''une lentille mince divergente paraxiale' ClientHeight = 344 ClientWidth = 576 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF00FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0FFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFF000FFFFFFFFFF0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF000FFFF000FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FF00 0FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFF0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFF0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFF000FFF000 00000FFF0000FFF000000000FFF0000FFF000000000FFF000FFF00000000FFF0 00FFF00000000FFF000000000000FFF000FFF00000000FFF0000FFF000000000 FFF0000FFF000000000FFF000FFF00000000FFF000FF000000000FFF0000FF0F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0FFFFFFFFFFF0000FF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFF 0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF0FFFFFF0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF0FFFFFFFFFFF0000FF0FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF0F FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FF000000F0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0000FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF000FF000FFFFFFFF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFF000FFFFFF F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF000FFFFFF000FFFFFFF000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0FFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 97 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 79 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 55 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 126 Height = 14 Top = 55 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 8 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 48 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 272 Height = 97 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 79 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 8 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 6 Height = 14 Top = 55 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 8 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 48 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 129 Top = 104 Width = 177 Caption = 'Couleur de la lentille' ClientHeight = 111 ClientWidth = 173 TabOrder = 2 object Colorgrid1: TColorBox Left = 10 Height = 22 Top = 31 Width = 100 ItemHeight = 16 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 8 Height = 65 Top = 240 Width = 176 Caption = 'Epaisseur trait à l''écran' ClientHeight = 47 ClientWidth = 172 TabOrder = 3 object editepaisseur: TSpinEdit Left = 38 Height = 21 Top = 11 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox5: TGroupBox Left = 192 Height = 65 Top = 240 Width = 185 Caption = 'Aspect' ClientHeight = 47 ClientWidth = 181 TabOrder = 4 object cocheaxe: TCheckBox Left = 14 Height = 17 Top = 16 Width = 78 Caption = 'Axe optique' Checked = True State = cbChecked TabOrder = 0 end end object GroupBox6: TGroupBox Left = 384 Height = 57 Top = 104 Width = 185 Caption = 'Focale (valeur absolue)' ClientHeight = 39 ClientWidth = 181 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 16 Width = 21 Caption = '|f|=' ParentColor = False end object log5: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log5' ParentColor = False end object editfocale: TEdit Left = 30 Height = 21 Top = 8 Width = 89 TabOrder = 0 end end object GroupBox7: TGroupBox Left = 192 Height = 129 Top = 104 Width = 185 Caption = 'Couleur de l''axe optique' ClientHeight = 111 ClientWidth = 181 TabOrder = 6 object gridaxe: TColorBox Left = 22 Height = 22 Top = 31 Width = 84 ItemHeight = 16 TabOrder = 0 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 312 Width = 560 Caption = 'Supprimer cette lentille' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 7 end object BitBtn1: TBitBtn Left = 384 Height = 96 Top = 168 Width = 184 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 8 end object BitBtn2: TBitBtn Left = 384 Height = 37 Top = 268 Width = 184 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 9 end end optgeo-2.21/optgeo.ini0000750000175000017500000000001312247333133015120 0ustar georgeskgeorgeskfr_FR fr optgeo-2.21/unit_quelobjet.pas0000750000175000017500000000210612247333133016665 0ustar georgeskgeorgeskunit unit_quelobjet; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons,UnitScaleFont,UChaines; type { TForm_quelobjet } TForm_quelobjet = class(TForm) BitBtn1: TBitBtn; ComboBox1: TComboBox; procedure ComboBox1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { private encreation:boolean; declarations } public { public declarations } end; var Form_quelobjet: TForm_quelobjet; implementation { TForm_quelobjet } procedure TForm_quelobjet.ComboBox1Change(Sender: TObject); begin end; procedure TForm_quelobjet.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; CAPTION:=rsPropriTSDeLO; end; procedure TForm_quelobjet.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$I unit_quelobjet.lrs} end. optgeo-2.21/uchaines.pas0000750000175000017500000017137212247333133015447 0ustar georgeskgeorgeskunit UChaines; {$mode objfpc} interface uses Classes, SysUtils; resourcestring rsOptGeoEstDif = 'OptGeo est diffusé sous license GPL; veuillez la lire:'; rsBienvenue = 'Bienvenue...'; rsImpossibleDe = 'Impossible de créer le fichier de configuration primaire ' +'d''OptGeo. Vérifiez que vous avez le droit d''écriture dans le ré' +'pertoire d''installation d''OptGeo. Pour utiliser OptGeo sans fichier ' +'de configuration, cliquez sur OK. Sinon, cliquez sur Abandon, rendez le ' +'répertoire d''installation d''OptGeo accessible en écriture,puis ' +'relancez OptGeo'; rsErreurCritiq = 'Erreur critique !'; rsOptGeoEstExC = 'OptGeo est exécuté pour la première fois, ou bien son ' +'fichier de configuration est corrompu: vous allez maintenant le créer !'; rsJeNeParviens = 'Je ne parviens pas à créer le répertoire exemples que ' +'vous m''indiquez! Vérifiez que vous avez des droits suffisants !'; rsMaisEuh = 'Mais euh !!'; rsJeNeParviens2 = 'Je ne parviens pas à créer le répertoire de ' +'simulations personnelles que vous m''indiquez! Vérifiez que vous avez ' +'des droits suffisants !'; rsJeNeParviens3 = 'Je ne parviens pas à créer le répertoire de ' +'configuration personnelle que vous m''indiquez! Vérifiez que vous avez ' +'des droits suffisants !'; rsRepertoireDe = 'Repertoire des exemples introuvable et incréable!'; rsRepertoireDe2 = 'Repertoire des simulations personnelles introuvable et ' +'incréable !'; rsRepertoireDe3 = 'Repertoire de configuration personnelle introuvable et ' +'incréable. Vous ne pourrez pas sauver vos modifications ' +'d''environnement !'; rsPositionnezL = 'Positionnez l''extrémité du segment et cliquez...'; rsPositionnezL2 = 'Positionnez l''extrémité du 1er segment et cliquez...'; rsPositionnezL3 = 'Positionnez l''extrêmité du 2nd segment...'; rsPositionnezL4 = 'Positionnez le point suivant et cliquez...'; rsPointsSaisis = 'Points saisis aberrants !'; rsAttention = 'Attention !'; rsRelierLesPoi = 'Relier les points %s et %s par:'; rsPositionnezL5 = 'Positionnez le sommet d''arc de cercle suivant...'; rsPositionnezL6 = 'Positionnez le point 2 (direction du rayon) et cliquez...'; rsPositionnezL7 = 'Positionnez le point D (direction du rayon) et cliquez...'; rsPositionnezL8 = 'Positionnez le point 1 (rayon1 limitant le faisceau) et ' +'cliquez...'; rsPositionnezU = 'Positionnez un point de la surface et cliquez...'; rsPositionnezL9 = 'Positionnez le sommet de la 2ème face...'; rsPositionnezL10 = 'Positionnez le bord intérieur (point 1) et cliquez...'; rsPositionnezL11 = 'Positionnez le point 2 (autre bord du miroir) et ' +'cliquez...'; rsPositionnezL12 = 'Positionnez l''autre extrémité du trait et cliquez...'; rsPositionnezL13 = 'Positionnez le foyer de la conique et cliquez...'; rsPositionnezL14 = 'Positionnez le point 2 (autre bord de l''écran) et ' +'cliquez...'; rsPositionnezL15 = 'Positionnez le point 2 (centre pupille) et cliquez...'; rsPositionnezL16 = 'Positionnez le point 2 (autre bord de la lame) et ' +'cliquez...'; rsPositionnezL17 = 'Positionnez le point A (sommet du prisme) et cliquez...'; rsPositionnezL18 = 'Positionnez le point 2 (autre bord de la lentille) et ' +'cliquez...'; rsSommetsTropP = 'Sommets trop proches !'; rsAttention2 = 'Attention !!'; rsPositionnezL19 = 'Positionnez le centre de courbure de la 1ère face puis ' +'cliquez...'; rsPositionnezL20 = 'Positionnez le centre de courbure de la 2ème face puis ' +'cliquez...'; rsSaisissezLeD = 'Saisissez le diamètre de la lentille...'; rsDonnEsAberra = 'Données aberrantes!'; rsRayonDeLaSph = 'Rayon de la sphère trop petit ou trop grand!'; rsTailleDuMiro = 'Taille du miroir trop petite, ou débordant de l''écran !'; rsTailleDuTrai = 'Taille du trait trop petite !'; rsTailleDeLCra = 'Taille de l''écran trop petite !'; rsTailleDeLOei = 'Taille de l''oeil trop petite !'; rsTailleDeLaLa = 'Taille de la lame trop petite !'; rsPointsTropPr = 'Points trop proches !'; rsPositionnezL21 = 'Positionnez le point 2 (rayon 2 limitant le faisceau) ' +'puis cliquez...'; rsPositionnezL22 = 'Positionnez le point 2 (extrémité du plan d''onde) ' +'puis cliquez...'; rsNombreDeRayo = 'Nombre de rayons convergents vers cet objet virtuel'; rsNombreDeRayo2 = 'Nombre de rayons émis par cette source ponctuelle'; rsN = 'n'; rsRayonIntRieu = 'Rayon intérieur du diaphragme trop petit !'; rsPositionnezL23 = 'Positionnez le bord extérieur (point 2) et cliquez..'; rsTailleDuMiro2 = 'Taille du miroir trop petite !'; rsPositionnezL24 = 'Positionnez le foyer et cliquez.'; rsPositionnezL25 = 'Positionnez le centre de courbure et cliquez.'; rsPositionnezL26 = 'Positionnez le sommet de la conique et cliquez...'; rsDonnEsDeCons = 'Données de construction de la conique aberrantes !'; rsPourFinirPos = 'Pour finir, positionnez l''autre extrémité du miroir et ' +'cliquez.'; rsDonnEsDeCons2 = 'Données de construction du miroir aberrantes !'; rsTailleDuPris = 'Taille du prisme trop petite !'; rsDernierPoint = 'Dernier point pour l''angle au sommet...'; rsTailleDeLaLe = 'Taille de la lentille trop petite !'; rsPositionnezU2 = 'Positionnez un foyer et cliquez.'; rsEpaisseurDuD = 'Epaisseur du diaphragme trop petite, ou diaphragme dé' +'bordant de l''écran !'; rsTailleDuMiro3 = 'Taille du miroir trop petite ou focale trop courte, ou ' +'débordant de l''écran !'; rsTailleDuMiro4 = 'Taille du miroir trop petite ou focale trop courte, ou ' +'débordant de l''écran !'; rsTailleDuMiro5 = 'Taille du miroir trop petite ou focale trop courte, ou ' +'miroir débordant de l''écran !'; rsTailleDuMiro6 = 'Taille du miroir trop petite ou focale trop courte, ou ' +'miroir débordant de l''écran !'; rsCommentaires = 'Commentaires sur la simulation de titre non précisé...'; rsValeurInacce = 'Valeur inacceptable pour le rayon !'; rsValeurInacce2 = 'Valeur inacceptable pour x !'; rsValeurInacce3 = 'Valeur inacceptable pour y !'; rsValeurInacce4 = 'Valeur inacceptable pour indice rouge !'; rsValeurInacce5 = 'Valeur inacceptable pour indice vert !'; rsValeurInacce6 = 'Valeur inacceptable pour indice bleu !'; rsPointsAberra = 'Points aberrants !'; rsDPlacer = 'Déplacer'; rsFinDPl = 'Fin dépl.'; rsDupliquer = 'Dupliquer'; rsFinDupl = 'Fin dupl.'; rsPropriTS = 'Propriétés'; rsFinProp = 'Fin prop.'; rsSupprimer = 'Supprimer'; rsFinSup = 'Fin sup.'; rsGrouper = 'Grouper'; rsImpossibleDe2 = 'Impossible de grouper moins de 2 éléments !'; rsAttention3 = 'Attention'; rsNombreMaxima = 'Nombre maximal de groupes deja atteint !'; rsFinGroupemen = 'Fin groupement'; rsFinDeLaCrAti = 'Fin de la création d''un groupe'; rsCliquezSurLe = 'Cliquez sur les croix violettes des éléments à ' +'grouper, puis sur Fin...'; rsLeGroupeNVie = 'Le groupe n°%s vient d''être créé. Ses éléments ' +'pourront être translatés ensemble.'; rsFait = 'Fait !'; rsGrouperDesLM = 'Grouper des éléments'; rsModeAjoutDUn = 'Mode: ajout d''un rayon lumineux. Esc pour annuler.'; rsModeAjoutDUn2 = 'Mode: ajout d''un miroir plan. Esc pour annuler.'; rsModeAjoutDUn3 = 'Mode: ajout d''un trait ou d''une fléche. Esc pour ' +'annuler.'; rsModeAjoutDUn4 = 'Mode: ajout d''un miroir conique concave. Esc pour ' +'annuler.'; rsModeAjoutDUn5 = 'Mode: ajout d''un miroir conique convexe. Esc pour ' +'annuler.'; rsModeAjoutDUn6 = 'Mode: ajout d''un polyhèdre réfractant. Esc pour ' +'annuler.'; rsModeAjoutDUn7 = 'Mode: ajout d''un prisme isocèle. Esc pour annuler.'; rsModeAjoutDUn8 = 'Mode: ajout d''une polysphère réfractante. Esc pour ' +'annuler.'; rsModeAjoutDUn9 = 'Mode: ajout d''un écran. Esc pour annuler.'; rsModeAjoutDUn10 = 'Mode: ajout d''un oeil. Esc pour annuler.'; rsModeAjoutDUn11 = 'Mode: ajout d''une lame semi-réfléchissante. Esc pour ' +'annuler.'; rsModeAjoutDUn12 = 'Mode: ajout d''un miroir sphérique concave. Esc pour ' +'annuler.'; rsModeAjoutDUn13 = 'Mode: ajout d''un miroir sphérique convexe. Esc pour ' +'annuler.'; rsModeAjoutDUn14 = 'Mode: ajout d''une lentille mince convergente. Esc pour ' +'annuler.'; rsModeAjoutDUn15 = 'Mode: ajout d''une lentille épaisse. Esc pour annuler.'; rsModeAjoutDUn16 = 'Mode: ajout d''une sphère réfractante. Esc pour ' +'annuler.'; rsModeAjoutDUn17 = 'Mode: ajout d''une lentille mince divergente. Esc pour ' +'annuler.'; rsModeAjoutDUn18 = 'Mode: ajout d''un miroir sphérique concave. Esc pour ' +'annuler.'; rsModeAjoutDUn19 = 'Mode: ajout d''un miroir sphérique convexe. Esc pour ' +'annuler.'; rsModeAjoutDUn20 = 'Mode: ajout d''une source ponctuelle. Esc pour annuler.'; rsModeAjoutDUn21 = 'Mode: ajout d''une onde plane'; rsModeDPlaceme = 'Mode: déplacement d''un élément existant. Esc pour ' +'annuler.'; rsModePropriTS = 'Mode: propriétés d''un élément existant. Esc pour ' +'annuler.'; rsModeDuplicat = 'Mode: duplication d''un élément existant. Esc pour ' +'annuler.'; rsModeSuppress = 'Mode: suppression d''un élément existant. Esc pour ' +'annuler.'; rsModeMesureDe = 'Mode: mesure de distance. Esc pour annuler.'; rsModeMesureDA = 'Mode: mesure d''angle. Esc pour annuler.'; rsModeAjoutDUn22 = 'Mode: ajout d''un texte. Esc pour annuler.'; rsModeAjoutDUn23 = 'Mode: ajout d''un diaphragme. Esc pour annuler.'; rsModeAjoutDUn24 = 'Mode: ajout d''un groupe. Esc pour annuler. %sFin%s ' +'pour achever le groupement.'; rsDPlacerUnLMe = 'Déplacer un élément existant: translation, rotation, ' +'changement focale ou rayon de courbure...'; rsDupliquerUnL = 'Dupliquer un élément existant'; rsGrouperDesLM2 = 'Grouper des éléments existants pour les translater ' +'ensemble'; rsPropriTSDUnL = 'Propriétés d''un élément existant'; rsSupprimerUnL = 'Supprimer un élément existant'; rsActions = 'Actions'; rsPourDPlacerC = 'Pour déplacer cette palette, glissez-déposez à partir ' +'de cette zone...'; rsImprimer = 'Imprimer'; rsImprimerLaSi = 'Imprimer la simulation'; rsExportPNG = 'Export PNG'; rsExporterLaSi = 'Exporter la simulation au format image PNG'; rsExportJPG = 'Export JPG'; rsExportDeLaSi = 'Export de la simulation au format image JPG'; rsCopier = 'Copier'; rsCopierSimula = 'Copier simulation dans le presse-papier'; rsAfficherLaGr = 'Afficher la grille'; rsAfficherLesA = 'Afficher les angles'; rsAide = 'Aide'; rsAideSurOptGe = 'Aide sur OptGeo'; rsAjouter = 'Ajouter'; rsAjusterAutom = 'Ajuster automatiquement à la plus petite taille'; rsAPropos = 'A propos'; rsAssocierLesF = 'Associer les fichiers .opt avec OptGeo'; rsAttractionDe = 'Attraction de la grille'; rsBaseDeRegist = 'Base de registre'; rsMesurerUnAng = 'Mesurer un angle'; rsAjouterUnMir = 'Ajouter un miroir parabolique (ou elliptique, ' +'hyperbolique) concave'; rsAjouterUnMir2 = 'Ajouter un miroir parabolique (ou elliptique, ' +'hyperbolique) convexe'; rsAjouterUnDia = 'Ajouter un diaphragme à iris'; rsMesurerLaDis = 'Mesurer la distance entre deux points'; rsAjouterUnCra = 'Ajouter un écran'; rsCacherDesSeg = 'Cacher des segments de rayon'; rsAjouterUnTra = 'Ajouter un trait, une fléche...'; rsAjouterUneLe = 'Ajouter une lentille épaisse'; rsAjouterUneLe2 = 'Ajouter une lentille mince convergente paraxiale'; rsAjouterUneLe3 = 'Ajouter une lentille mince divergente paraxiale'; rsAjouterUneLa = 'Ajouter une lame semi-réfléchissante'; rsAjouterUnMir3 = 'Ajouter un miroir plan'; rsAjouterUnMir4 = 'Ajouter un miroir sphérique convexe paraxial'; rsAjouterUnMir5 = 'Ajouter un miroir sphérique convexe réel'; rsAjouterUnMir6 = 'Ajouter un miroir sphérique concave paraxial'; rsAjouterUnMir7 = 'Ajouter un miroir sphérique concave réel'; rsAjouterUnOei = 'Ajouter un oeil stylisé'; rsAjouterUneOn = 'Ajouter une onde plane'; rsAjouterUnPol = 'Ajouter un polygône réfractant'; rsAjouterUnePo = 'Ajouter une polycercle réfractant'; rsAjouterUnPri = 'Ajouter un prisme isocéle'; rsAjouterUnRay = 'Ajouter un rayon'; rsAjouterUnObj = 'Ajouter un objet ponctuel réel'; rsAjouterUneSp = 'Ajouter une sphère réfractante'; rsAjouterUnObj2 = 'Ajouter un objet ponctuel virtuel'; rsA = 'A'; rsAjouterUnTex = 'Ajouter un texte sur le dessin'; rsOptGeo = 'OptGeo'; rsAnglesDIncid = 'Angles d''incid. et de réfr.'; rsAttraction = 'Attraction'; rsGrille = 'Grille'; rsNormales = 'Normales'; rsFacteurDeZoo = 'Facteur de zoom'; rsCommentaireS2 = 'Commentaire sur la simulation'; rsContacterLAu = 'Contacter l''auteur'; rsCopierSimula2 = 'Copier simulation dans le presse papier'; rsCouleurDeFon = 'Couleur de fond'; rsDFinirLeRPer = 'Définir le répertoire personnel'; rsDiaphragme = 'Diaphragme'; rsDivers = 'Divers'; rsDPlacerUnLMe2 = 'Déplacer un élément'; rsDSassocier = 'Désassocier'; rsDuDernierRPe = 'du dernier répertoire de chargement autre que ceux ci-' +'dessus'; rsDupliquerUnL2 = 'Dupliquer un élément'; rsDeMonRPertoi = 'de mon répertoire personnel'; rsDuRPertoireE = 'du répertoire %sexemples%s'; rsEcran = 'Ecran'; rsEditerLeComm = 'Editer le commentaire de la simulation'; rsEdition = 'Edition'; rsElMentsChois = 'Eléments à choisir'; rsEmpennageDes = 'Empennage des rayons'; rsEnregistrerS = 'Enregistrer simulation sous'; rsEnregistrerS2 = 'Enregistrer simulation'; rsFichier = 'Fichier'; rsOptions = 'Options'; rsJoindreParUn = 'Joindre par un arc de cercle'; rsJoindreParUn2 = 'Joindre par un segment'; rsLameSemiRFlC = 'Lame semi réfléchissante'; rsLentille = 'Lentille'; rsLentilleMinc = 'Lentille mince convergente'; rsLentilleMinc2 = 'Lentille mince divergente'; rsLicenseGPL = 'License GPL'; rsManuellement = 'Manuellement'; rsExporterGrap = 'Exporter graphe'; rsPNG = 'PNG'; rsJPG = 'JPG'; rsLangue = 'Langue'; rsPrisme = 'Prisme'; rsMesureDAngle = 'Mesure d''angle'; rsMesureDeDist = 'Mesure de distance'; rsMiroirCNique = 'Miroir cônique'; rsMiroirPlan = 'Miroir plan'; rsreseau = 'Réseau'; rsMiroirSphRiq = 'Miroir sphérique concave'; rsMiroirSphRiq2 = 'Miroir sphérique convexe'; rsModifierLesD = 'Modifier les dimensions de l''espace de travail'; rsAfficherLesN = 'Afficher les normales'; rsNouvelleSimu = 'Nouvelle simulation'; rsOeilStylis = 'Oeil stylisé'; rsOndePlane = 'Onde plane'; rsOptionsDeLaG = 'Options de la grille'; rsOptionsDesNo = 'Options des normales'; rsOuvrirSimula = 'Ouvrir simulation'; rsPolyhDreRFra = 'Polyhèdre réfractant'; rsPolysphReRFr = 'Polysphère réfractante'; rsPrFRences = 'Préférences'; rsPropriTSDUnL2 = 'Propriétés d''un élément'; rsQuitter = 'Quitter'; rsRayonsFantom = 'Rayons fantomes'; rsRayonUnique = 'Rayon unique'; rsRefaire = 'Refaire'; rsAnnuler = 'Annuler'; rsSiteWeb = 'Site Web'; rsSource = 'Source'; rsObjetPonctue = 'Objet ponctuel réel ou virtuel'; rsAjouterOuDit = 'Ajouter (ou éditer) le commentaire de la simulation'; rsCoord = 'Coord.'; rsAfficherLesC = 'Afficher les coordonnées des segments'; rsSphReRFracta = 'Sphère réfractante'; rsZoom = 'Zoom:'; rsMiroirs = 'Miroirs:'; rsSources = 'Sources:'; rsDioptres = 'Dioptres:'; rsEcrans = 'Ecrans:'; rsDivers2 = 'Divers:'; rsAfficher = 'Afficher:'; rsSupprimerUnL2 = 'Supprimer un élément'; rsSurfacesDOnd = 'Surfaces d''onde'; rsSystMeOptiqu = 'Système optique idéal'; rsSystMeOptiqu2 = 'Système optique réel'; rsTexteSurLeDe = 'Texte sur le dessin'; rsTousLesLMent = 'Tous les éléments'; rsTraitFlChe = 'Trait, fléche...'; rsOK = '&OK'; rsSupprimerCet = 'Supprimer cette sphère'; rsPropriTSDeCe = 'Propriétés de cette sphère'; rs17 = '1,7'; rs15 = '1,5'; rs16 = '1,6'; rs17b = '1.7'; rs15b = '1.5'; rs16b = '1.6'; rsRayonDeCourb = 'Rayon de courbure'; rsIndiceDeRFra = 'Indice de réfraction du milieu'; rsCoordonnEsDu = 'Coordonnées du centre'; rsCouleurLCran = 'Couleur à l''écran'; rsLog1 = 'log1'; rsLog2 = 'log2'; rsLog3 = 'log3'; rsRayonRFlChiS = 'Rayon réfléchi (sens entrant)'; rsRayonRFlChiS2 = 'Rayon réfléchi (sens sortant)'; rsR = 'R='; rsPourLeRouge = 'Pour le rouge:'; rsPourLeVert = 'Pour le vert:'; rsPourLeBleu = 'Pour le bleu:'; rsX = 'x='; rsY = 'y='; rsMatRiau = 'Matériau:'; rsDonnEsAberra2 = 'Données aberrantes !'; rsCliquezPourA = 'Cliquez pour afficher les propriétés de cet élément...'; rsCliquezPourD = 'Cliquez pour dupliquer cet élément...'; rsPositionnezL27 = 'Positionnez le sommet de l''arc de cercle entre les ' +'points %s et %s...'; rsPositionnezL28 = 'Positionnez le sommet de l''arc de cercle entre les ' +'points %s et 1...'; rsVoulezVousLC = 'Voulez-vous l''écraser ?'; rsCeFichierExi = 'Ce fichier existe déjà.'; rsVoulezVousLC2 = 'Voulez-vous l''écraser ?'; rsPourPrendreE = 'Pour prendre en compte le changement de langue de ' +'l''interface, Optgeo doit maintenant être arrété. Puis relancez le.'; rsChangementDe = 'Changement de langue'; rsNombreMaxima2 = 'Nombre maximal de prismes deja atteint !'; rsFichierDesIn = 'Fichier des indices de réfraction non trouvé !'; rsEspaceDeTrav = 'Espace de travail: horiz: [%s,%s]; vert: [%s,%s] '; rsLaSimulation = 'La simulation a été modifiée est les modifications ' +'n''ont pas été sauvegardées. Voulez vous vraiment quitter OptGéo ?'; rsAttention4 = 'Attention !!!'; rsNombreMaxima3 = 'Nombre maximal de miroirs plans deja atteint !'; rsPositionnezL29 = 'Positionnez le point 1 (premier bord du miroir) et ' +'cliquez...'; rsNombreMaxima4 = 'Nombre maximal de traits déjà atteint !'; rsPositionnezL30 = 'Positionnez le point 1 (extrémité 1 du trait) et ' +'cliquez...'; rsNombreMaxima5 = 'Nombre maximal d''écran deja atteint !'; rsPositionnezL31 = 'Positionnez le point 1 (premier bord de l''écran) et ' +'cliquez...'; rsNombreMaxima6 = 'Nombre maximal d''écran deja atteint !'; rsPositionnezL32 = 'Positionnez le centre du diaphragme et cliquez...'; rsNombreMaxima7 = 'Nombre maximal d''écran deja atteint !'; rsPositionnezL33 = 'Positionnez le point 1 (premier bord de l''écran) et ' +'cliquez...'; rsX1 = 'x1'; rsX2 = 'x2'; rsX5 = 'x5'; rsX10 = 'x10'; rsX20 = 'x20'; rsX50 = 'x50'; rsX100 = 'x100'; rsAjoutDUnMiro = 'Ajout d''un miroir plan:'; rsCliquerSurLO = 'Cliquer sur l''origine du segment...'; rsCliquerSurLe = 'Cliquer sur le centre (intersection des droites)...'; rsNombreMaxima8 = 'Nombre maximal de rayons deja atteint !'; rsPositionnezL34 = 'Positionnez le point 1 (origine du rayon) et cliquez...'; rsNombreMaxima9 = 'Nombre maximal de spheres deja atteint !'; rsPositionnezL35 = 'Positionnez le centre de la sphère et cliquez...'; rsPositionnezL36 = 'Positionnez le centre d''inertie G du prisme et ' +'cliquez...'; rsNombreMaxima10 = 'Nombre maximal de polyhèdres deja atteint !'; rsPositionnezL37 = 'Positionnez le point 1 du polyhèdre et cliquez...'; rsSommetsDeCeP = 'Sommets de ce polyhèdre'; rsNombreMaxima11 = 'Nombre maximal de miroirs sphériques convergents ' +'paraxiaux deja atteint !'; rsPositionnezL38 = 'Positionnez le point 1 (premier bord du miroir) et ' +'cliquez...'; rsNombreMaxima12 = 'Nombre maximal de miroirs sphériques convergents ' +'paraxiaux deja atteint !'; rsPositionnezL39 = 'Positionnez le point 1 (premier bord du miroir) et ' +'cliquez...'; rsNombreMaxima13 = 'Nombre maximal de miroirs sphériques convergents ' +'paraxiaux deja atteint !'; rsPositionnezL40 = 'Positionnez le point 1 (premier bord du miroir) et ' +'cliquez...'; rsNombreMaxima14 = 'Nombre maximal de miroirs sphériques convergents ' +'paraxiaux deja atteint !'; rsPositionnezL41 = 'Positionnez le point 1 (premier bord du miroir) et ' +'cliquez...'; rsNombreMaxima15 = 'Nombre maximal de lentilles mines convergentes ' +'paraxiales deja atteint !'; rsPositionnezL42 = 'Positionnez le point 1 (premier bord de la lentille) et ' +'cliquez...'; rsNombreMaxima16 = 'Nombre maximal de lentilles mines convergentes ' +'paraxiales deja atteint !'; rsPositionnezL43 = 'Positionnez le point 1 (premier bord de la lentille) et ' +'cliquez...'; rsNombreMaxima17 = 'Nombre maximal de sources ponctuelles deja atteint !'; rsPositionnezL44 = 'Positionnez le point objet virtuel et cliquez...'; rsPositionnezL45 = 'Positionnez le point objet réel et cliquez...'; rsNombreMaxima18 = 'Nombre maximal d''ondes planes deja atteint !'; rsPositionnezL46 = 'Positionnez le point 1 (origine d''un rayon et du plan ' +'d''onde) et cliquez...'; rsAjoutDUnRayo = 'Ajout d''un rayon:'; rsNombreMaxima19 = 'Nombre maximal de miroirs deja atteint !'; rs = ''''; rsAjoutDUnMiro2 = 'Ajout d''un miroir concave:'; rsAjoutDUnMiro3 = 'Ajout d''un miroir convexe:'; rsNombreMaxima20 = 'Nombre maximal de lentilles deja atteint !'; rsAjoutDUneLen = 'Ajout d''une lentille convergente:'; rsAjoutDUneLen2 = 'Ajout d''une lentille divergente:'; rsNombreMaxima21 = 'Nombre maximal de lames deja atteint !'; rsAjoutDUneLam = 'Ajout d''une lame semi-réfléchissante:'; rsNombreMaxima22 = 'Nombre maximal de miroirs deja atteint !'; rsAjoutDUnMiro4 = 'Ajout d''un miroir concave:'; rsAjoutDUneLen3 = 'Ajout d''une lentille épaisse:'; rsAjoutDUnMiro5 = 'Ajout d''un miroir convexe:'; rsNombreMaxima23 = 'Nombre maximal de miroirs coniques deja atteint !'; rsAjoutDUnMiro6 = 'Ajout d''un miroir cônique:'; rsNombreMaxima24 = 'Nombre maximal d''écrans deja atteint !'; rsAjoutDUnCran = 'Ajout d''un écran:'; rsNombreMaxima25 = 'Nombre maximal de diaphragmes deja atteint !'; rsAjoutDUnDiap = 'Ajout d''un diaphragme:'; rsNombreMaxima26 = 'Nombre maximal de polysphères deja atteint !'; rsSommetsDeCet = 'Sommets de cette polysphére'; rsSommet = 'Sommet %s'; rsNombreMaxima27 = 'Nombre maximal de polyhedres deja atteint !'; rsNombreMaxima28 = 'Nombre maximal de source ponctuelle deja atteint !'; rsAjoutDUneSou = 'Ajout d''une source ponctuelle:'; rsNombreMaxima29 = 'Nombre maximal d''onde plane deja atteint !'; rsAjoutDUneCet = 'Ajout d''une cette onde plane:'; rsMm = 'mm'; rsCommentaires3 = 'Commentaires sur la simulation de nom non précisé...'; rsEspaceDeTrav2 = 'Espace de travail: horiz: [%s , %s]; vert: [%s , %s] '; rsLaSimulation2 = 'La simulation a été modifiée et les modifications ' +'n''ont pas été sauvegardées. Voulez vous vraiment commencer une ' +'nouvelle simulation ?'; rsImpossibleDe3 = 'Impossible de sauver le commentaire'; rsErreurDCritu = 'Erreur d''écriture sur le disque'; rsCommentaires4 = 'Commentaires sur la simulation %s'; rsUnFichierPor = 'Un fichier portant ce nom existe déjà. Voulez-vous l''é' +'craser ?'; rsEspaceDeTrav3 = 'Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - ' +'Simulation: %s'; rsFichierInacc = 'Fichier inaccessible !'; rsFichierInacc2 = 'Fichier inaccessible en lecture!'; rsFichierEndom = 'Fichier endommagé!!!'; rsErreur = 'Erreur !!!'; rsCommentaires5 = 'Commentaires sur la simulation %sopt'; rsEspaceDeTrav4 = 'Espace de travail: horiz: [%s , %s]; vert: [%s , %s] - ' +'Simulation: %s'; rsPositionnezL47 = 'Positionnez le premier bord du miroir (point 1) et ' +'cliquez...'; rsPositionnezL48 = 'Positionnez le premier bord du miroir (point 1) et ' +'cliquez...'; rsNombreMaxima30 = 'Nombre maximal de textes deja atteint !'; rsPositionnezL49 = 'Positionnez le bord supérieur gauche du texte et ' +'cliquez...'; rsNombreMaxima31 = 'Nombre maximal de texte deja atteint !'; rsAjoutDUnText = 'Ajout d''un texte:'; rsNombreMaxima32 = 'Nombre maximal de lentilles épaisses deja atteint !'; rsPositionnezL50 = 'Positionnez le sommet de la 1ère face...'; rsLAffichageDe = 'L''affichage des angles impose le tracé des normales'; rsPositionnezL51 = 'Positionnez le sommet 1 de la polysphère et cliquez...'; rsSommetsDeCet2 = 'Sommets de cette polysphère'; rsAjoutDUneMes = 'Ajout d''une mesure de distance:'; rsAjoutDUneMes2 = 'Ajout d''une mesure d''angle:'; rsAjoutDUnTrai = 'Ajout d''un trait...'; rsPositionnezL52 = 'Positionnez le point 1 (rétine) et cliquez...'; rsNombreMaxima33 = 'Nombre maximal d''yeux deja atteint !'; rsNombreMaxima34 = 'Nombre maximal d''yeux deja atteint !'; rsAjoutDUnOeil = 'Ajout d''un oeil stylisé:'; rsDoisJeCrErLe = 'Dois je créer le groupe n°%s en y mettant tous les élé' +'ments présents ?'; rsCrAtion = 'Création ?'; rsUnAuMoinsDes = 'Un au moins des objets actuels ne rentre pas sur ce ' +'nouvel espace de travail !'; rsRedimensionn = 'Redimensionnement impossible'; rsJeNeParviens4 = 'Je ne parviens pas à créer le répertoire de ' +'simulations personnelles que vous m''indiquez! Vérifiez que vous avez ' +'des droits suffisants !'; rsSuivant = 'Suivant >'; rsQueVoulezVou = 'Que voulez vous faire ?'; rsVoulezVous = 'Voulez vous:'; rsChoixDuSPara = 'Choix du séparateur décimal'; rsChoisissezAu = 'Choisissez aussi éventuellement:'; rsCrRUneNouvel = 'Créér une nouvelle simulation'; rsCrRUneNouvel2 = 'Créér une nouvelle simulation en choisissant les ' +'dimensions de l''espace de travail'; rsOuvrirUneSim = 'Ouvrir une simulation existante'; rsLaVirgule = 'La virgule: ,'; rsLePoint = 'Le point: .'; rsCoordonnEsDe = 'Coordonnées des segments'; rsAProposDeCeL = 'A propos de ce logiciel'; rsEnCliquantSu = 'En cliquant sur le bouton %sOK%s, vous déclarez accepter ' +'les termes'; rsDeLaLicenseG = 'de la license GNU GPL'; rsOptGeoLogici = 'OptGeo, logiciel de simulation d''optique géométrique'; rsDeuxDimensio = 'à deux dimensions, libre et gratuit, sous license GPL.'; rsVersion200Be = 'Version 2.21 du 02/12/2013, écrite en Lazarus'; rsPourTouteRem = 'Pour toute remarque, cliquer sur:'; rsVRifierQueVo = 'Vérifier que vous avez la dernière version ? Cliquer sur:'; rsSiteWebDeLAu = 'Site Web de l''auteur'; rsModifierLEsp = 'Modifier l''espace de travail'; rsRespecterRap = 'Respecter rapport hauteur/largeur de l''écran'; rsAbscisseMin = 'Abscisse min.:'; rsAbscisseMax = 'Abscisse max.:'; rsOrdonnEMin = 'Ordonnée min.:'; rsOrdonnEMax = 'Ordonnée max.:'; rsPourAvoirUnR = 'pour avoir un repère approximativement orthonormé'; rsExpressionIl = 'Expression illégale pour la l''abscisse minimale !'; rsExpressionIl2 = 'Expression illégale pour la l''abscisse maximale !'; rsExpressionIl3 = 'Expression illégale pour la l''ordonnée minimale !'; rsExpressionIl4 = 'Expression illégale pour la l''ordonnée maximale !'; rsXmaxDoitTreS = 'xmax doit être supérieur à xmin !'; rsYmaxDoitTreS = 'ymax doit être supérieur à ymin !'; rsSupprimerCeP = 'Supprimer ce polycercle'; rsPropriTSDeCe2 = 'Propriétés de ce polycercle'; rsSonRayonDeCo = 'Son rayon de courbure vaut:'; rsCoordonnEsDe2 = 'Coordonnées de ce sommet'; rsCouleurLCran2 = 'Couleur à l''écran'; rsCeSommetEstR = 'Ce sommet est relié au suivant par:'; rsCetArcDeCerc = 'En allant de Ai vers Ai+1, le sommet de l''arc de cercle est:'; rsRi = 'Ri='; rsToujours = 'Toujours'; rsJamais = 'Jamais'; rsSeulementSiL = 'Seulement si le réfracté existe'; rsSeulementSiL2 = 'Seulement si le réfracté n''existe pas'; rsUnSegmentDeD = 'Un segment de droite'; rsUnArcDeCercl = 'Un arc de cercle'; rsRentrant = 'A gauche'; rsSortant = 'A droite'; rsSeulementSiL3 = 'Seulement si le réfracté n''existe pas'; rsValeurInacce7 = 'Valeur inacceptable pour Ri !'; rsOK2 = 'OK'; rsSupprimerCeD = 'Supprimer ce diaphragme'; rsAjoutDUnDiap2 = 'Ajout d''un diaphragme'; rsCentreC = 'Centre C'; rsRayonExtRieu = 'Rayon extérieur'; rsCouleurDuDia = 'Couleur du diaphragme'; rsAnglePolaire = 'Angle polaire du diaphragme'; rsEpaisseurDuT = 'Epaisseur du trait'; rsRayonIntRieu2 = 'Rayon intérieur'; rsLog4 = 'log4'; rsRad = 'rad'; rsRext = 'Rext='; rsT = 't='; rsRint = 'Rint='; rsValeurInacce8 = 'Valeur inacceptable pour cx !'; rsValeurInacce9 = 'Valeur inacceptable pour cy !'; rsValeurInacce10 = 'Valeur inacceptable pour Rint !'; rsValeurInacce11 = 'Valeur inacceptable pour Rext !'; rsValeurInacce12 = 'Valeur inacceptable pour t !'; rsSupprimerCet2 = 'Supprimer cet écran'; rsAjoutDUnCran2 = 'Ajout d''un écran'; rsCouleurLCran3 = 'Couleur à l''écran'; rsEpaisseurTra = 'Epaisseur trait à l''écran'; rsPoint1 = 'Point 1'; rsPoint2 = 'Point 2'; rsValeurInacce13 = 'Valeur inacceptable pour x1 !'; rsValeurInacce14 = 'Valeur inacceptable pour x2 !'; rsValeurInacce15 = 'Valeur inacceptable pour y1 !'; rsValeurInacce16 = 'Valeur inacceptable pour y2 !'; rsSupprimerCeT3 = 'Supprimer ce trait'; rsAjoutDUnTrai2 = 'Ajout d''un trait, fléche...'; rsTailleDeLaPr = 'Taille de la première extrémité'; rsTailleDeLaSe = 'Taille de la seconde extrémité'; rsCouleurDuTra = 'Couleur du trait'; rsCoordonnEsPo = 'Coordonnées point 1'; rsCoordonnEsPo2 = 'Coordonnées point 2'; rsFormeDeLaPre = 'Forme de la première extrémité'; rsFormeDeLaSec = 'Forme de la seconde extrémité'; rsStyleDuTrait = 'Style du trait (valable si épaisseur=1)'; rsEn11000DeLaD = 'en 1/1000 de la diagonale'; rsDeLEspaceDeT = 'de l''espace de travail'; rsDeLEspaceDeT2 = 'de l''espace de travail'; rsNormale = 'Normale'; rsFlChe = 'Fléche'; rsTraitPerpend = 'Trait perpendiculaire'; rsCercle = 'Cercle'; rsCroix = 'Croix +'; rsCroixX = 'Croix x'; rsDisque = 'Disque'; rsPlein = 'Plein'; rsPointillS = 'Pointillés'; rsTirS = 'Tirés'; rsTirSPoints = 'Tirés - Points'; rsTirSPointsPo = 'Tirés - Points - Points'; rsTailleDuTrai2 = 'Taille du trait trop petite ou points hors de l''espace ' +'de travail !'; rsPropriTSDeLa = 'Propriétés de la grille'; rsAfficher2 = 'Afficher'; rsPasDeLaGrill = 'Pas de la grille'; rsPasHorizonta = 'Pas horizontal='; rsPasVertical = 'Pas vertical='; rsValeurDuPasH = 'Valeur du pas horizontal illégale !'; rsValeurDuPasH2 = 'Valeur du pas horizontal très faible ou très forte. ' +'Etes-vous sûr ?'; rsValeurDuPasV = 'Valeur du pas vertical illégale !'; rsValeurDuPasV2 = 'Valeur du pas vertical très faible ou très forte. Etes-' +'vous sûr ?'; rsSupprimerCet4 = 'Supprimer cette lame'; rsAjoutDUneLam2 = 'Ajout d''une lame semi-réfléchissante'; rsCouleurLCran4 = 'Couleur à l''écran'; rsEpaisseurTra2 = 'Epaisseur trait à l''écran'; rsSupprimerCet5 = 'Supprimer cette lentille'; rsAjoutDUneLen4 = 'Ajout d''une lentille épaisse'; rsCoordonnEsDe3 = 'Coordonnées des sommets des faces'; rsRayonsDeCour = 'Rayons de courbure des faces'; rsDiamTre = 'Diamètre'; rsIndiceDeRFra2 = 'Indice de réfraction du verre'; rsCouleurLCran5 = 'Couleur à l''écran'; rsLog5 = 'log5'; rsLog6 = 'log6'; rsLog7 = 'log7'; rsSommetS1 = 'Sommet S1'; rsR2 = 'R2='; rsD = 'D='; rsSommetS2 = 'Sommet S2'; rsSigneSiCentr = 'Signe + si centre de courbure Ci à gauche de Si'; rsSurLAxeOrien = 'sur l''axe orienté de S1 vers S2, signe - sinon.'; rsR1 = 'R1='; rsValeurInacce17 = 'Valeur inacceptable pour S1x !'; rsValeurInacce18 = 'Valeur inacceptable pour S1y !'; rsValeurInacce19 = 'Valeur inacceptable pour S2x !'; rsValeurInacce20 = 'Valeur inacceptable pour S2y !'; rsValeurInacce21 = 'Valeur inacceptable pour R1 !'; rsValeurInacce22 = 'Valeur inacceptable pour R2 !'; rsValeurInacce23 = 'Valeur inacceptable pour le diamètre !'; rsTypeDeLentil = 'Type de lentille incompatible avec les valeurs proposé' +'es, ou lentille débordant de l''espace de travail !'; rsAjoutDUneLen5 = 'Ajout d''une lentille mince convergente paraxiale'; rsAxeOptique = 'Axe optique'; rsCouleurDeLaL = 'Couleur de la lentille'; rsEpaisseurTra3 = 'Epaisseur trait à l''écran'; rsAspect = 'Aspect'; rsFocaleValeur = 'Focale (valeur absolue)'; rsCouleurDeLAx = 'Couleur de l''axe optique'; rsF = '|f|='; rsValeurInacce24 = 'Valeur inacceptable pour la focale !'; rsLaFocaleDoit = 'La focale doit être non nulle !'; rsAjoutDUneLen6 = 'Ajout d''une lentille mince divergente paraxiale'; rsEpaisseurTra4 = 'Epaisseur trait à l''écran'; rsCouleurDeLAx2 = 'Couleur de l''axe optique'; rsSupprimerCeM = 'Supprimer ce miroir'; rsAjoutDUnMiro7 = 'Ajout d''un miroir parabolique, elliptique ou hyperbolique'; rsAxeFocal = 'Axe focal'; rsConcave = 'Concave'; rsHachures = 'Hachures'; rsFoyerF = 'Foyer F'; rsExcentricit = 'Excentricité'; rsCouleurDuMir = 'Couleur du miroir'; rsAnglePolaire2 = 'Angle polaire de l''axe focal'; rsAnglesPolair = 'Angles polaires FMi (extrémités)'; rsParamTre = 'Paramétre'; rsCouleurDeLAx3 = 'Couleur de l''axe'; rsAspectLCran = 'Aspect à l''écran'; rsConcaveOuCon = 'Concave ou convexe ?'; rsE = 'e='; rsT0 = 't0='; rsP = 'P='; rsT1 = 't1='; rsT2 = 't2='; rsValeurInacce25 = 'Valeur inacceptable pour fx !'; rsValeurInacce26 = 'Valeur inacceptable pour fy !'; rsValeurInacce27 = 'Valeur inacceptable pour e !'; rsValeurInacce28 = 'Valeur inacceptable pour p !'; rsValeurInacce29 = 'Valeur inacceptable pour t0 !'; rsValeurInacce30 = 'Valeur inacceptable pour t1 !'; rsValeurInacce31 = 'Valeur inacceptable pour t2 !'; rsAjoutDUnMiro8 = 'Ajout d''un miroir plan'; rsCouleurLCran6 = 'Couleur à l''écran'; rsEpaisseurTra5 = 'Epaisseur trait à l''écran'; rsAjoutDUnMiro9 = 'Ajout d''un miroir sphérique convexe paraxial'; rsTrouer = 'Trouer'; rsEpaisseurTra6 = 'Epaisseur trait à l''écran'; rsFocale = 'Focale'; rsCouleurDeLAx4 = 'Couleur de l''axe'; rsTrouerLeMiro = 'Trouer le miroir en son centre'; rsDiamTreDuTro = 'Diamètre du trou:'; rsValeurInacce32 = 'Valeur inacceptable pour le diametre du trou !'; rsValeurInacce33 = 'Valeur inacceptable pour le rayon de courbure !'; rsLeRayonDeCou = 'Le rayon de courbure doit être non nul !'; rsTailleDuMiro7 = 'Taille du miroir trop petite, ou débordant de l''écran !'; rsAjoutDUnMiro10 = 'Ajout d''un miroir sphérique convexe réel'; rsObtu = 'Obtu'; rsAxeDeSymTrie = 'Axe de symétrie'; rsEpaisseurTra7 = 'Epaisseur trait à l''écran'; rsCouleurDeLAx5 = 'Couleur de l''axe'; rsAngleDOuvert = 'Angle d''ouverture'; rsDiamTreAngul = 'Diamètre angulaire du trou:'; rsVuDepuisLeCe = '(vu depuis le centre C)'; rsAjoutDUnMiro11 = 'Ajout d''un miroir sphérique concave paraxial'; rsEpaisseurTra8 = 'Epaisseur trait à l''écran'; rsCouleurDeLAx6 = 'Couleur de l''axe'; rsLaDistanceEn = 'La distance entre les points 1 et 2 doit être infé' +'rieure au double du rayon !'; rsTailleDuMiro8 = 'Taille du miroir trop petite, ou débordant de l''écran !'; rsAjoutDUnMiro12 = 'Ajout d''un miroir sphérique concave réel'; rsEpaisseurTra9 = 'Epaisseur trait à l''écran'; rsCouleurDeLAx7 = 'Couleur de l''axe'; rsAngleDOuvert2 = 'Angle d''ouverture'; rsOptionsPourL = 'Options pour le tracé des normales aux dioptres et miroirs'; rsTracer = 'Tracer'; rsTracerLesNor = 'Tracer les normales'; rsEpaisseurDeL = 'Epaisseur de la trace'; rsCouleurDeLaT = 'Couleur de la trace'; rsLongueurTrac = 'Longueur trace (en % de la diagonale de l''espace de ' +'travail)'; rsAfficherVale = 'Afficher valeurs angles (en degrés)'; rsNombreDeDCim = 'Nombre de décimales:'; rsTailleDeLOei2 = 'Taille de l''oeil trop petite !'; rsSupprimerCet6 = 'Supprimer cet oeil'; rsAjoutDUnOeil2 = 'Ajout d''un oeil'; rsCouleurDeLOe = 'Couleur de l''oeil'; rsEpaisseurTra10 = 'Epaisseur trait à l''écran'; rsValeurInacce34 = 'Valeur inacceptable pour Dx !'; rsValeurInacce35 = 'Valeur inacceptable pour Dy !'; rsValeursEntrE = 'Valeurs entrées aberrantes !'; rsSupprimerCet7 = 'Supprimer cette onde plane'; rsSaisieDUneOn = 'Saisie d''une onde plane'; rsEpaisseurLCr = 'Epaisseur à l''écran'; rsTracerEnPoin = 'Tracer en pointillé le prolongement des différents ' +'segments des rayons'; rsExtrMitRayon = 'Extrémité rayon 1 (point D)'; rsNombreDeRayo3 = 'Nombre de rayons'; rsPourChaqueRa = 'Pour chaque rayon, rayons enfants:'; rsTracerDesSur = 'Tracer des surfaces d''onde issues de cette onde plane'; rsNombreMaxDeS = 'Nombre max. de segments par rayon'; rsCouleurDesRa = 'Couleur des rayons'; rsListeDesSegm = 'Liste des segments concernés'; rsEntreParenth = '(entre parenthéses et séparés par des virgules'; rsEtSansEspace = 'et sans espaces); exemple: (1,4,10)'; rsDOndeSParezC = 'd''onde (séparez ces valeurs par un unique espace; ne ' +'mettez ni parenthèses ni virgule de séparation)'; rsDonnerLesVal = 'Donner les valeurs de chemins optiques pour lesquels vous ' +'voulez que soient tracées des surfaces'; rsExemple12014 = '(exemple: 120 145 276)'; rsRemarqueSiLa = 'Remarque: si la simulation comprend au moins une lentille ' +'mince et/ou un miroir paraxial, le tracé des ces surfaces'; rsNePeutTreEtN = 'ne peut être et ne sera pas fait.'; rsNombreMaxima35 = 'Nombre maximal:'; rsVersLAvant = 'Vers l''avant:'; rsVersLArriRe = 'Vers l''arrière:'; rsRouge = 'Rouge'; rsVert = 'Vert'; rsBleu = 'Bleu'; rsLumiReBlanch = 'Lumière blanche'; rsSupprimerCeP2 = 'Supprimer ce prisme'; rsAjoutDUnPris = 'Ajout d''un prisme'; rsCentreDInert = 'Centre d''inertie'; rsAngleAuSomme = 'Angle au sommet'; rsAnglePolaire3 = 'Angle polaire de la hauteur principale'; rsHauteur = 'Hauteur'; rsCouleurDuPri = 'Couleur du prisme'; rsA2 = 'A='; rsHauteur2 = 'Hauteur='; rsCouleur = 'Couleur:'; rsSeulemenxtSi = 'Seulemenxt si le réfracté existe'; rsSeulementSiL4 = 'Seulement si le réfracté n''existe pas'; rsSeulementSiL5 = 'Seulement si le réfracté n''existe pas'; rsValeurInacce36 = 'Valeur inacceptable pour gx !'; rsValeurInacce37 = 'Valeur inacceptable pour gy !'; rsValeurInacce38 = 'Valeur inacceptable pour l''angle au sommet !'; rsValeurInacce39 = 'Valeur inacceptable pour l''angle polaire !'; rsValeurInacce40 = 'Valeur inacceptable pour la hauteur!'; rsPourLeTracDe = 'Pour le tracé des surfaces d''onde:'; rsNombreDePoin = 'Nombre de points calculés pour tracer une surface d''onde:'; rsLesDeuxPoint = 'Les deux points doivent être distincts !'; rsSupprimerCeR = 'Supprimer ce rayon'; rsSaisieDUnRay = 'Saisie d''un rayon'; rsOriginePoint = 'Origine (point 1)'; rsExtrMitPoint = 'Extrémité (point 2)'; rsEpaisseurLCr2 = 'Epaisseur à l''écran'; rsTracerEnPoin2 = 'Tracer en pointillé le prolongement des différents ' +'segments du rayon'; rsRayonsEnfant = 'Rayons enfants'; rsNombreMaxDeS2 = 'Nombre max. de segments'; rsCouleurDuRay = 'Couleur du rayon'; rsVersLArriRe2 = 'Vers l''arrière:'; rsVersLAvant2 = 'Vers l''avant:'; rsValeurInacce41 = 'Valeur inacceptable pour sx !'; rsValeurInacce42 = 'Valeur inacceptable pour sy !'; rsSupprimerCet8 = 'Supprimer cette source ponctuelle'; rsSaisieDUneSo = 'Saisie d''une source ponctuelle'; rsEpaisseurLCr3 = 'Epaisseur à l''écran'; rsTracerEnPoin3 = 'Tracer en pointillé le prolongement des différents ' +'segments des rayons'; rsTracerDesSur2 = 'Tracer des surfaces d''onde issues de cette source ' +'ponctuelle'; rsNombreMaxDeS3 = 'Nombre max. de segment par rayon'; rsCouleurDeLaS = 'Couleur de la source'; rsTypeDeSource = 'Type de source'; rsDonnerLesVal2 = 'Donner les valeurs de chemins optiques pour lesquels ' +'vous voulez que soient tracées des surfaces'; rsDOndeSParezC2 = 'd''onde (séparez ces valeurs par un unique espace; ne ' +'mettez ni parenthèses ni virgule de séparation)'; rsRemarqueSiLa2 = 'Remarque: si la simulation comprend au moins une ' +'lentille mince et/ou un miroir paraxial, le tracé des ces surfaces'; rsVersLAvant3 = 'Vers l''avant:'; rsVersLArriRe3 = 'Vers l''arrière:'; rsSeulementSiL6 = 'Seulement si le réfracté n''existe pas'; rsSeulementSiL7 = 'Seulement si le réfracté n''existe pas'; rsRespecterLes = 'Respecter les angles à l''impression'; rsPosition = 'Position'; rsNombreDeCopi = 'Nombre de copies'; rsTailleEnDeLa = 'Taille (en % de la page)'; rsRapportHaute = 'Rapport hauteur/largeur'; rsNombre = 'Nombre:'; rsHorizontalem = 'Horizontalement'; rsVerticalemen = 'Verticalement'; rsOrientation = 'Orientation'; rsConfiguratio = 'Configuration de la page pour l''impression'; rsHorizontale = 'Horizontale'; rsDroite = 'Droite'; rsGauche = 'Gauche'; rsCentr = 'Centré'; rsVerticale = 'Verticale'; rsHaut = 'Haut'; rsBas = 'Bas'; rsPortrait = 'Portrait'; rsPaysage = 'Paysage'; rsPropriTSDeLO = 'Propriétés de l''objet:'; rsSupprimerCeT9 = 'Supprimer ce texte'; rsSaisirLeText = 'Saisir le texte à afficher'; rsTexte = 'Texte'; rsCoordonnEsDu2 = 'Coordonnées du point supérieur gauche du texte'; rsPolice = 'Police'; rsValeurIncorr = 'Valeur incorrecte pour x'; rsValeurIncorr2 = 'Valeur incorrecte pour y'; rsValeursNonAu = 'Valeurs non autorisées pour x ou y'; rsDimensionsDe = 'Dimensions de l''espace de travail'; rsRespecterLeR = 'Respecter le rapport hauteur/largeur de l'; rs0 = '0'; rsAbscisseMaxi = 'Abscisse maximale'; rsOrdonnEsMaxi = 'Ordonnées maximale'; rsRepReOrthono = 'Repére orthonormé (approximativement)'; rsUnitDeLongue = 'Unité de longueur'; rsAbscisseMini = 'Abscisse minimale'; rsOrdonnEMinim = 'Ordonnée minimale'; rsRemarqueLeNo = 'Remarque: le non respect du rapport implique que'; rsLesAnglesLCr = 'les angles à l''écran ne sont pas respectés.'; rsRapport = 'Rapport='; rsRapportIdAlP = 'Rapport idéal (permettant d''occuper le maximum'; rsDeSurfaceDCr = 'de surface d''écran avec repére orthonormé)='; rs2 = ' '; rs3 = ' '; rsKm = 'km'; rsHm = 'hm'; rsDam = 'dam'; rsM = 'm'; rsDm = 'dm'; rsCm = 'cm'; rsM2 = 'µm'; rsNm = 'nm'; rsPm = 'pm'; rsExpressionIl5 = 'Expression illégale pour la l''abcisse minimale !'; rsExpressionIl6 = 'Expression illégale pour la l''ordonnée minimale !'; rsExpressionIl7 = 'Expression illégale pour la l''abcisse maximale !'; rsExpressionIl8 = 'Expression illégale pour la l''ordonnée maximale !'; rsValeurNulleO = 'Valeur nulle ou négative interdite pour la hauteur et/ou ' +'la largeur !'; rsRespecterLeR2 = 'Respecter le rapport hauteur/largeur de l''écran'; rsCeciNEstPasU = 'Ceci n''est pas une valeur numérique acceptable !'; rsSaissezLeDia = 'Saissez le diamètre de la lentille'; rsSaisissez = 'Saisissez'; rsDiamTre2 = 'Diamètre='; rsPointsTropPr2 = 'Points trop proches ou hors de l''espace de travail !'; rsSupprimerCet10 = 'Supprimer cette distance'; rsModification = 'Modification d''une mesure de distance'; rsCoordonnEsDu3 = 'Coordonnées du 1er point'; rsCoordonnEsDu4 = 'Coordonnées du 2nd point'; rsPointsTropPr3 = 'Points trop proches ou hors de l''espace de travail !'; rsSupprimerCet11 = 'Supprimer cet angle'; rsModification2 = 'Modification d''une mesure d''angle'; rsCoordonnEsDe4 = 'Coordonnées de C'; rsRelierLesPoi2 = 'Relier les points'; rsJoindreLesPo = 'Joindre les points par:'; rsRPertoireDIn = 'Répertoire d''installation d''OptGeo'; rsRPertoireDes = 'Répertoire des exemples'; rsRPertoireDev = 'Répertoire devant recevoir vos simulations personnelles'; rsRPertoireDev2 = 'Répertoire devant contenir votre configuration ' +'personnelle d''OptGeo'; rsConfiguratio2 = 'Configuration primaire d''OptGeo'; rsMiroirSphRiq3 = 'Miroir sphérique concave paraxial'; rsMiroirSphRiq4 = 'Miroir sphérique convexe paraxial'; rsMiroirSphRiq5 = 'Miroir sphérique concave réel'; rsMiroirSphRiq6 = 'Miroir sphérique convexe réel'; rsLentilleMinc3 = 'Lentille mince convergente idéale'; rsLentilleMinc4 = 'Lentille mince divergente idéale'; rsLentillePais = 'Lentille épaisse'; rsPolycercleRF = 'Polycercle réfractant'; rsSourcePonctu = 'Source ponctuelle'; rsLameSemiRFlC2 = 'Lame semi-réfléchissante'; rsOeil = 'Oeil'; rsNom = 'Nom: %s'; rsTaille = 'Taille: %s'; rsSoulign = 'Souligné'; rsGras = 'Gras'; rsItalique = 'Italique'; rsBarr = 'Barré'; rsOkEtEnregist = '&Ok et enregistrer sur disque'; rsRTablirLesVa = '&Rétablir les valeurs d''origine de tous les éléments'; rsModifier = 'Modifier'; rsPrFRencesPro = 'Préférences: propriétés par défaut à la création'; rsTypeDLMent = 'Type d''élément'; rsCouleurParDF = 'Couleur par défaut'; rsEpaisseurPar = 'Epaisseur par défaut'; rsCouleurAxePa = 'Couleur axe par défaut'; rsPoliceParDFa = 'Police par défaut'; rsIndiquerIciL = 'Indiquer ici les propriétés communes à appliquer à ' +'tous les éléments:'; rsCouleurRayon = 'Couleur rayon par défaut'; rsElementParLM = 'Element par élément'; rsPourTousLesL = 'Pour tous les éléments'; rsImpossibleDC = 'Impossible d''écrire le fichier de configuration %s. La ' +'configuration ne sera pas sauvegardée.'; rsHLas = 'Hélas...'; rsCouleur2 = 'Couleur'; rsBlanc = 'Blanc'; rsPropriTSDeLE = 'Propriétés de l''empennage des rayons'; rsEn1000MeDeLa = '(en 1000éme de la taille du segment)'; rsPositionDeLE = 'Position de l''empennage sur le segment:'; rsTailleDeLEmp = 'Taille de l''empennage:'; rsEn1000MeDeLa2 = '(en 1000éme de la diagonale de l''espace de travail)'; rsPropriTSDesP = 'Propriétés des points'; rsRepRer = 'Repérer'; rsTailleDesPoi = 'Taille des points'; rsCouleurDesPo = 'Couleur des points'; rsPointCourant = 'Point courant'; rsGrilleDeRepR = 'Grille de repérage'; rsCroixDroite = 'Croix droite'; rsCroixOblique = 'Croix oblique'; rsStyleDesPoin = 'Style des points'; rsEditeurDeTex = 'Editeur de texte'; rsNombreDeRayo4 = 'Nombre de rayons émis par cette source ponctuelle:'; rsSupprimerCeP3 = 'Supprimer ce polygône'; rsPropriTSDeCe3 = 'Propriétés de ce polygône'; rsCouleurLCran7 = 'Couleur à l''écran'; rsSeulementSiL8 = 'Seulement si le réfracté n''existe pas'; rsSeulementSiL9 = 'Seulement si le réfracté n''existe pas'; rsNombreDeSomm = 'Nombre de sommets'; rsCeTexte = 'ce texte'; rsCetteSphRe = 'cette sphère'; rsCePrisme = 'ce prisme'; rsCeTrait = 'ce trait'; rsCetOeil = 'cet oeil'; rsCeMiroirPlan = 'ce miroir plan'; rsCeMiroirConi = 'ce miroir conique'; rsCePolygone = 'ce polygone'; rsCePolycercle = 'ce polycercle'; rsCetCran = 'cet écran'; rsCeDiaphragme = 'ce diaphragme'; rsCetteLameSem = 'cette lame semi-réfléchissante'; rsCeMiroirConc = 'ce miroir concave paraxial'; rsCeMiroirConv = 'ce miroir convexe paraxial'; rsCeMiroirSphR = 'ce miroir sphérique concave'; rsCeMiroirSphR2 = 'ce miroir sphérique convexe'; rsCetteLentill = 'cette lentille mince convergente'; rsCetteLentill2 = 'cette lentille épaisse'; rsCetteLentill3 = 'cette lentille mince divergente'; rsCeRayonLumin = 'ce rayon lumineux'; rsCetteSourceP = 'cette source ponctuelle'; rsCetteOndePla = 'cette onde plane'; rsCetAngle = 'cet angle'; rsCetteMesureD = 'cette mesure de distance'; rsFaitesPasser = 'Faites passer la souris sur une des croix violettes, ou ' +'cliquez sur Fin...'; rsClicGauchePo = 'Clic gauche pour ajouter %s au groupe...'; rsFaitesPasser2 = 'Faites passer la souris sur un des éléments colorés...'; rsClicGauchePo2 = 'Clic gauche pour sélectionner l''élément...'; rsClicGauchePo3 = 'Clic gauche pour sélectionner l''élément...'; rsClicGauchePo4 = 'Clic gauche pour sélectionner ce centre...'; rsClicGauchePo5 = 'Clic gauche pour sélectionner ce foyer...'; rsClicGauchePo6 = 'Clic gauche pour sélectionner ce bord de trou...'; rsClicGauchePo7 = 'Clic gauche pour sélectionner ce sommet de prisme...'; rsClicGauchePo8 = 'Clic gauche pour sélectionner ce sommet d''arc de ' +'cercle...'; rsCeMiroirCNiq = 'ce miroir cônique'; rsCePolygNe = 'ce polygône'; rsCeGroupe = 'ce groupe'; rsCeMiroirSphR3 = 'ce miroir sphèrique'; rsCetteLentill4 = 'cette lentille'; rsCeRayon = 'ce rayon'; rsCetteMesureD2 = 'cette mesure d''angle'; rsCetteMesureD3 = 'cette mesure d''angle'; rsCetteMesureD4 = 'cette mesure d''angle'; rsFaitesPasser3 = 'Faites passer la souris sur un des cercles rouges...'; rsClicGauchePo9 = 'Clic gauche pour supprimer %s...'; rsChoixDeLObje = 'Choix de l''objet:'; rsMesureDeDist2 = 'Mesure de distance n° %s'; rsPrismeN = 'Prisme n° %s'; rsMiroirPlanN = 'Miroir plan n° %s'; rsReseauN = 'Réseau n° %s'; rsMiroirConcav = 'Miroir concave idéal n° %s'; rsMiroirConvex = 'Miroir convexe idéal n° %s'; rsMiroirConcav2 = 'Miroir concave n° %s'; rsMiroirConvex2 = 'Miroir convexe n° %s'; rsLentilleMinc5 = 'Lentille mince convergente n° %s'; rsLentilleMinc6 = 'Lentille mince divergente n° %s'; rsRayonN = 'Rayon n° %s'; rsSourcePonctu2 = 'Source ponctuelle n° %s'; rsOndePlaneN = 'Onde plane n° %s'; rsEcranN = 'Ecran n° %s'; rsLameSemiRFlC3 = 'Lame semi réfléchissante n° %s'; rsPolyhDreRFra2 = 'Polyhèdre réfractant n° %s'; rsSphReRFracta2 = 'Sphère réfractante n° %s'; rsMiroirCNique2 = 'Miroir cônique n° %s'; rsTexteN = 'Texte n° %s'; rsDiaphragmeN = 'Diaphragme n° %s'; rsLentillePais2 = 'Lentille épaisse n° %s'; rsMesureDAngle2 = 'Mesure d''angle n° %s'; rsPolycercleRF2 = 'Polycercle réfractant n° %s'; rsFlCheN = 'Fléche n° %s'; rsOeilN = 'Oeil n° %s'; rsNAntN = 'Néant n° %s'; rsGroupeN = 'Groupe n° %s'; rsDPlacerLLMen = 'Déplacer l''élément, puis clic gauche pour le poser...'; rsModeTranslat = 'Mode: translation d''un élément existant. Esc pour ' +'annuler.'; rsDPlacerLeBor = 'Déplacer le bord, puis clic gauche pour le poser...'; rsModeChangeme = 'Mode: changement de taille du trou. Esc pour annuler.'; rsDPlacerLeSom = 'Déplacer le sommet, puis clic gauche pour le poser...'; rsModeChangeme2 = 'Mode: changement d''orientation du prisme. Esc pour ' +'annuler.'; rsModeChangeme3 = 'Mode: changement de la hauteur du prisme. Esc pour ' +'annuler.'; rsModeChangeme4 = 'Mode: changement de l''angle au sommet du prisme. Esc ' +'pour annuler.'; rsDPlacerLeFoy = 'Déplacer le foyer, puis clic gauche pour le poser...'; rsModeChangeme5 = 'Mode: changement focale d''un élément existant. Esc ' +'pour annuler.'; rsDPlacerLeCen = 'Déplacer le centre, puis clic gauche pour le poser...'; rsModeChgtRayo = 'Mode: chgt rayon courbure d''un élément existant. Esc ' +'pour annuler.'; rsModeChgtRayo2 = 'Mode: chgt rayon courbure d''un élément existant. Esc ' +'pour annuler.'; rsDPlacerLLMen2 = 'Déplacer l''élément, puis clic gauche pour le poser...'; rsModeRotation = 'Mode: rotation d''un élément existant. Esc pour annuler.'; rsFaitesPasser4 = 'Faites passer la souris sur un point cerclé...'; rsModeDPlaceme2 = 'Mode: déplacement d''un élément existant. Esc pour ' +'annuler.'; rsCetteMesureD5 = 'cette mesure d''angle'; rsCetteMesureD6 = 'cette mesure d''angle'; rsCetteMesureD7 = 'cette mesure d''angle'; rsCeMiroirSphR4 = 'ce miroir sphérique'; rsChoisissezLO = 'Choisissez l''objet à supprimer:'; rsMesureDAngle3 = 'Mesure d''angle n° %s'; rsEtesVousSurD = 'Etes-vous sur de vouloir supprimer %s ?'; rsMiroirConiqu = 'Miroir conique'; rsSphRe = 'Sphère'; rsMesureDAngle4 = 'Mesure d''angle'; rsTrait = 'Trait'; rsPolygone = 'Polygone'; rsPolycercle = 'Polycercle'; rsLameSemiRFle = 'Lame semi-réflechissante'; rsMiroirConcav3 = 'Miroir concave paraxial'; rsMiroirConvex3 = 'Miroir convexe paraxial'; rsRayon = 'Rayon'; rsAjoutAuGroup = '%s ajouté au groupe n°%s en cours de constitution.'; rsPropriTSDeLO2 = 'Propriétés de l''objet:'; rsObjetDupliqu = 'Objet à dupliquer:'; rsMesureDAngle5 = 'Mesure d''angle n° %s'; rsPropriTSDeCe4 = 'Propriétés de ce trait...'; rsPropriTSDeCe5 = 'Propriétés de cette mesure d''angle:'; rsPropriTSDeCe6 = 'Propriétés de ce texte:'; rsPropriTSDeCe7 = 'Propriétés de ce miroir plan:'; rsPropriTSDeCe8 = 'Propriétés de cet écran:'; rsPropriTSDeCe9 = 'Propriétés de cet oeil stylisé:'; rsPropriTSDeCe10 = 'Propriétés de ce diaphragme:'; rsPropriTSDeCe11 = 'Propriétés de cette lame semi-réfléchissante:'; rsPropriTSDeCe12 = 'Propriétés de ce rayon:'; rsPropriTSDeCe13 = 'Propriétés de cette source ponctuelle:'; rsPropriTSDeCe14 = 'Propriétés de cette onde plane:'; rsPropriTSDeCe15 = 'Propriétés de ce miroir elliptique:'; rsPropriTSDeCe16 = 'Propriétés de ce miroir hyperbolique:'; rsPropriTSDeCe17 = 'Propriétés de ce miroir parabolique:'; rsPropriTSDeCe18 = 'Propriétés de ce miroir concave:'; rsPropriTSDeCe19 = 'Propriétés de ce miroir convexe:'; rsPropriTSDeCe20 = 'Propriétés de cette lentille convergente:'; rsPropriTSDeCe21 = 'Propriétés de cette lentille épaisse:'; rsPropriTSDeCe22 = 'Propriétés de cette lentille divergente:'; rsModeDPlaceme3 = 'Mode: déplacement d''un élément existant. Esc pour ' +'annuler.'; rsGr = 'Gr'; rsPropriTSDeCe23 = 'Propriétés de cette mesure de distance:'; rsModeDPlaceme4 = 'Mode: déplacement d''un élément existant. Esc pour ' +'annuler.'; rsLeGroupeNQui = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsVotReAttenti = 'Votre attention siouplait !'; rsLeGroupeNQui2 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui3 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui4 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui5 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui6 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui7 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui8 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui9 = 'Le groupe n°%s qui contenait cet élément va être lui ' +'aussi détruit.'; rsLeGroupeNQui10 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui11 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui12 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui13 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui14 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui15 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui16 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui17 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui18 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui19 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui20 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui21 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui22 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui23 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsLeGroupeNQui24 = 'Le groupe n°%s qui contenait cet élément va être ' +'lui aussi détruit.'; rsdefaire='Défaire'; rsValeurIllGal = 'Valeur illégale de l''indice vert par défaut; remplacé ' +'par 1'; rsValeurIllGal2 = 'Valeur illégale de l''indice bleu par défaut; ' +'remplacé par 1'; rsValeurIllGal3 = 'Valeur illégale de l''indice rouge par défaut; ' +'remplacé par 1'; rsVousPouvezCh = 'Vous pouvez changer les indices du milieu dans lequel ' +'s''effectue la simulation:'; rsIndicesDuMil = 'Indices du milieu ambiant'; rsExportPS = 'Export PS'; rsExporterLaSi2 = 'Exporter la simulation au format Poscscript'; rsPropriTSDuFi = 'Propriétés du fichier Postscript'; rsTaillePage = 'Taille page'; rsA4 = 'A4'; rsA3 = 'A3'; rsA22 = 'A2'; rsA1 = 'A1'; rsA0 = 'A0'; rsA5 = 'A5'; rsLetter = 'Letter'; rsLegal = 'Legal'; rsLedger = 'Ledger'; rsRSolutions = 'Résolutions'; rsHorizontale2 = 'Horizontale:'; rsVerticale2 = 'Verticale:'; rsPasDeSimulat = 'Pas de simulation en cours...'; rsHLas2 = 'Hélas'; rsUnNouveauGro = 'Un nouveau groupe contenant les éléments ajoutés vien ' +'d''être créé.'; rsImportationR = 'Importation réussie'; rsLesParamTres = 'Les paramètres de la simulation en cours de chargement ' +'doivent-ils écraser les actuels ?'; rsUnNouveauGro2 = 'Un nouveau groupe contenant tous les éléments vient ' +'d''être créé.'; rsCrAtionRUssi = 'Création réussie.'; rsGrouperTout = 'Grouper tout'; rsCrErUnGroupe = 'Créer un groupe contenant tous les éléments'; rsDuDernierRPe2 = 'du dernier répertoire de chargement autre que ceux ci-' +'dessus'; rsSuperposerSi = 'Superposer simulation'; rsCopyrightJea = 'Copyright Jean-Marie Biansan, 2004, 2013'; rsJeanmarieBia = 'jeanmarie.biansan@free.fr'; rsSplashscreen = 'Splashscreen'; rsOptgeo2 = 'Optgeo'; rsLogicielLibr = 'Logiciel libre et gratuit de simulation d''optique géomé' +'trique plane'; rsVersion205Du = 'Version 2.21 du 02/12/2013'; rsAuteurJeanMa = 'Auteur: Jean-Marie Biansan'; rsCetteStructu = 'Cette structure serait un segment...'; rsImpossible = 'Impossible !'; rsPourCrErUneL = 'Pour créer une lentille autre que plan-convexe, utilisez ' +'l''objet lentille épaisse...'; rsPourCrErUneL2 = 'Pour créer une lentille autre que plan-convexe, ' +'utilisez l''objet lentille épaisse...'; rsDeuxSommetsC = 'Deux sommets consécutifs confondus...'; rsCeReSeau = 'ce réseau'; rsSupprimerCeR2 = 'Supprimer ce réseau'; rsAjoutDUnRSea = 'Ajout d''un réseau'; rsTypeDeRSeau = 'Type de réseau'; rsEnTransmissi = 'En transmission'; rsEnRFlexion = 'En réflexion'; rsNombreDeTrai = 'Nombre de traits par mm'; rsHachuresSiRS = 'Hachures si réseau en réflexion'; rsOrdresPrendr = 'Ordres à prendre en compte'; rsOrdreMinimum = 'Ordre minimum'; rsOrdreMaximum = 'Ordre maximum'; rsTailleDuRSea = 'Taille du réseau trop petite !'; rsPropriTSDeCe24 = 'Propriétés de ce réseau'; rsRSeau = 'Réseau'; rsNombreMaxima36 = 'Nombre maximal de réseau déja atteint !'; rsPositionnezL53 = 'Positionnez le point 1 (premier bord du réseau) et ' +'cliquez...'; rsNombreMaxima37 = 'Nombre maximal de réseaux déja atteint !'; rsRSeauDiffrac = 'Réseau diffractant'; rsAjouterUnRSe = 'Ajouter un réseau diffractant'; rsPositionnezL54 = 'Positionnez le point 2 (autre bord du réseau) et ' +'cliquez...'; rsTailleDuRSea2 = 'Taille du réseau trop petite, ou débordant de l''écran' +' !'; rsModeAjoutDUn25 = 'Mode: ajout d''un réseau diffractant. Esc pour annuler.'; rsLongueurDOnd = 'Longueur d''onde pour le vert'; rsLongueurDOnd2 = 'Longueur d''onde pour le rouge'; rsLongueurDOnd3 = 'Longueur d''onde pour le bleu'; rsLesValeursDe = 'Les valeurs de longueur d''onde sont utilisées pour les ' +'réseaux de diffraction'; rsIndicesDuMil2 = 'Indices du milieu ambiant et longueurs d''onde'; rsIndicesDuMil3 = 'Indices du milieu ambiant et longueurs d''onde'; rsRemarqueImpo = 'Remarque importante: ce réseau diffractant doit être ' +'éclairé par une onde plane.Un rayon unique sera diffracté selon la ' +'loi des réseaux sin i=+-sin i0+k.lambda/amais cela n''a pas de sens ' +'pour un rayon unique.'; rsAjoutDUnRSea2 = 'Ajout d''un réseau diffractant'; rsLesLongueurs = 'Les longueurs d''onde peuvent être modifiées dans le ' +'menu options, indices du milieuambiant et longueurs d''onde.'; implementation end. optgeo-2.21/optgeo.lpi0000750000175000017500000004547612247333133015153 0ustar georgeskgeorgesk <UseXPManifest Value="True"/> <Icon Value="0"/> </General> <i18n> <EnableI18N Value="True"/> <OutDir Value="lang"/> </i18n> <VersionInfo> <Language Value="040F"/> <CharSet Value="03B6"/> <StringTable ProductVersion=""/> </VersionInfo> <BuildModes Count="1"> <Item1 Name="default" Default="True"/> </BuildModes> <PublishOptions> <Version Value="2"/> <DestinationDirectory Value="c:\programmation\lazarus\optgeo\optgeo_061\sources"/> <IgnoreBinaries Value="False"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lpi|lpk|sh|xml|txt|lst|sau|ini|ico|htm|html);optgeo.rc;optgeo.manifest;curseurs.lrs;optgeo.lrs"/> <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> </PublishOptions> <RunParams> <local> <FormatVersion Value="1"/> <LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/> </local> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="Printer4Lazarus"/> <MinVersion Minor="5" Valid="True"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="64"> <Unit0> <Filename Value="optgeo.lpr"/> <IsPartOfProject Value="True"/> <UnitName Value="OptGeo"/> </Unit0> <Unit1> <Filename Value="ray1.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="ray1"/> </Unit1> <Unit2> <Filename Value="unit3.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="proprietespoints"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit3"/> </Unit2> <Unit3> <Filename Value="unit4.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form4"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit4"/> </Unit3> <Unit4> <Filename Value="saisiemp.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiemiroirplan"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiemp"/> </Unit4> <Unit5> <Filename Value="saisieray.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisierayon"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisieray"/> </Unit5> <Unit6> <Filename Value="saisiemscopa.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiemiroirscopa"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiemscopa"/> </Unit6> <Unit7> <Filename Value="saisiemscepa.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiemiroirscepa"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiemscepa"/> </Unit7> <Unit8> <Filename Value="saisielmc.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisielentillemc"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisielmc"/> </Unit8> <Unit9> <Filename Value="saisielmd.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisielentillemd"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisielmd"/> </Unit9> <Unit10> <Filename Value="saisiemscore.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiemiroirscore"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiemscore"/> </Unit10> <Unit11> <Filename Value="saisiemscere.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiemiroirscere"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiemscere"/> </Unit11> <Unit12> <Filename Value="unit5.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisienombrerayons"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit5"/> </Unit12> <Unit13> <Filename Value="saisiesp1.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiesp"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiesp1"/> </Unit13> <Unit14> <Filename Value="saisieop1.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieop"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisieop1"/> </Unit14> <Unit15> <Filename Value="saisieec.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieecran"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisieec"/> </Unit15> <Unit16> <Filename Value="saisielamesr.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisielsr"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisielamesr"/> </Unit16> <Unit17> <Filename Value="unit6.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiepolyhedre"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit6"/> </Unit17> <Unit18> <Filename Value="unit8.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisienombresommet"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit8"/> </Unit18> <Unit19> <Filename Value="saisiesphere.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiesph"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiesphere"/> </Unit19> <Unit20> <Filename Value="saisiemconique.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiemiroirconique"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiemconique"/> </Unit20> <Unit21> <Filename Value="unit9.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisietexte"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit9"/> </Unit21> <Unit22> <Filename Value="unit10.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisietexte2"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit10"/> </Unit22> <Unit23> <Filename Value="saisiedia.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiediaphragme"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiedia"/> </Unit23> <Unit24> <Filename Value="unit11.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieespacetravail"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit11"/> </Unit24> <Unit25> <Filename Value="saisiech.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiechoix"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiech"/> </Unit25> <Unit26> <Filename Value="saisiegr.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiegrille"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiegr"/> </Unit26> <Unit27> <Filename Value="saisielec.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisielentille"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisielec"/> </Unit27> <Unit28> <Filename Value="unit12.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiediametre"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="unit12"/> </Unit28> <Unit29> <Filename Value="unit13.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiemetre"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit13"/> </Unit29> <Unit30> <Filename Value="saisienor.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisienormale"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisienor"/> </Unit30> <Unit31> <Filename Value="unit14.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieangle"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit14"/> </Unit31> <Unit32> <Filename Value="unit15.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiejoindre"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit15"/> </Unit32> <Unit33> <Filename Value="saisiefant.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiefantomes"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiefant"/> </Unit33> <Unit34> <Filename Value="saisiecercle.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiepolycercle"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiecercle"/> </Unit34> <Unit35> <Filename Value="saisieptssurfaceonde.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiepointssurfaceonde"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisieptssurfaceonde"/> </Unit35> <Unit36> <Filename Value="saisiefle.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiefleche"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiefle"/> </Unit36> <Unit37> <Filename Value="saisief1.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiefle1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisief1"/> </Unit37> <Unit38> <Filename Value="saisieoe.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieoeil"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisieoe"/> </Unit38> <Unit39> <Filename Value="modif_espace_travail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieretailleespace"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="modif_espace_travail"/> </Unit39> <Unit40> <Filename Value="unit16.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form16"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit16"/> </Unit40> <Unit41> <Filename Value="unit17.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiepreferences"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit17"/> </Unit41> <Unit42> <Filename Value="unit18.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiecouleurrayondefaut"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit18"/> </Unit42> <Unit43> <Filename Value="unit19.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieempennage"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit19"/> </Unit43> <Unit44> <Filename Value="unitgpl.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Formgpl"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unitgpl"/> </Unit44> <Unit45> <Filename Value="unit32.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="FormEditeur"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit32"/> </Unit45> <Unit46> <Filename Value="rtftoplaintext.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="RTFtoPlainText"/> </Unit46> <Unit47> <Filename Value="fiche_affiche_coordonees.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="fiche_coordonnees_segments"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="fiche_affiche_coordonees"/> </Unit47> <Unit48> <Filename Value="unit222.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="unit222"/> </Unit48> <Unit49> <Filename Value="monbitmap.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="MonBitmap"/> </Unit49> <Unit50> <Filename Value="unit_imp.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="configimpression"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit_imp"/> </Unit50> <Unit51> <Filename Value="unitscalefont.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="UnitScaleFont"/> </Unit51> <Unit52> <Filename Value="monimprimante.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="MonImprimante"/> </Unit52> <Unit53> <Filename Value="saisiepri.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisieprisme"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiepri"/> </Unit53> <Unit54> <Filename Value="unit_quelobjet.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form_quelobjet"/> <ResourceBaseClass Value="Form"/> <UnitName Value="unit_quelobjet"/> </Unit54> <Unit55> <Filename Value="unit1_palette.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="form_palette"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1_palette"/> </Unit55> <Unit56> <Filename Value="uchaines.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="UChaines"/> </Unit56> <Unit57> <Filename Value="unit_indices_milieu_ambiant.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisie_indices_milieu_ambiant"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit_indices_milieu_ambiant"/> </Unit57> <Unit58> <Filename Value="monpostscript.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="MonPostScript"/> </Unit58> <Unit59> <Filename Value="unitconfigpostscript.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="FormConfigPostScript"/> <ResourceBaseClass Value="Form"/> <UnitName Value="UnitConfigPostScript"/> </Unit59> <Unit60> <Filename Value="monpostscriptcanvas.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="MonPostScriptCanvas"/> </Unit60> <Unit61> <Filename Value="definitions.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="Definitions"/> </Unit61> <Unit62> <Filename Value="unit17b.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="splashscreen"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit17b"/> </Unit62> <Unit63> <Filename Value="saisiereseau.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="saisiereseau"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="saisiereseau"/> </Unit63> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <Target> <Filename Value="optgeo"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> </SearchPaths> <Parsing> <SyntaxOptions> <CStyleOperator Value="False"/> <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> <Linking> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CompilerPath Value="$(CompPath)"/> </Other> </CompilerOptions> </CONFIG> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/optgeo.ico������������������������������������������������������������������������������0000750�0001750�0001750�00000001376�12247333133�015130� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ��������(��� ���@����������������������������������������������������������������������������� ��� ��� ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/monpostscriptcanvas.pas�����������������������������������������������������������������0000750�0001750�0001750�00000233414�12247333133�017764� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ /*************************************************************************** PostScriptCanvas.pas ------------ PostScript Printer Canvas object ***************************************************************************/ ***************************************************************************** * * * This file is part of the Lazarus Component Library (LCL) * * * * See the file COPYING.modifiedLGPL.txt, included in this distribution, * * for details about the copyright. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * * ***************************************************************************** Author: Olivier Guilbaud Informations : - Green Book Listing 9-1, on page 138 for Pattrens - PostScriptPrinter unit of Tony Maro - Piddle Project (Python language) - Internet PostScript forums Warnings : - Draw and StretchDraw it's slow for big image - Angles it's 1/16 of degre ToDo : - Implemente few methods } {$DEFINE ASCII85} unit MonPostScriptCanvas; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Math, Types, Graphics, Forms, GraphMath, GraphType, FPImage, IntfGraphics, Printers, LCLType, LCLIntf, PostScriptUnicode; Type arraypoints=array of tpoint; arrayboolean=array of boolean; arrayextended=array of extended; { TPostScriptPrinterCanvas } TpsPoint=record fx,fy:single; end; TPostScriptPrinterCanvas = Class(TPrinterCanvas) private fHeader : TStringList; //Header document fDocument : TstringList; //Current document fFileName : String; //OutOut fileName fBuffer : TStringList; //PostScript temporary buffer //Current values fcBrushStyle : TBrushStyle; fcPenColor : TColor; //Color of Pen and Brush fcPenWidth : Integer; fcPenStyle : TPenStyle; //fPenPos : TPoint; FPsUnicode : TPSUnicode; FFs : TFormatSettings; fSaveCount : Integer; procedure psDrawRect(ARect:TRect); procedure WriteHeader(St : String); procedure Write(const St : String; Lst : TstringList = nil); overload; procedure WriteB(const St : string); procedure ClearBuffer; procedure Write(Lst : TStringList); overload; procedure WriteComment(const St : string); procedure WritePageTransform; procedure WriteOrientation(UseHeader: boolean); procedure WriteBoundingBox(UseHeader: boolean); function TranslateCoord(cnvX,cnvY : Integer):TpsPoint; procedure SetPosition(X,Y : Integer); procedure UpdateLineWidth; procedure UpdateLineColor(aColor : TColor = clNone); procedure UpdateLineStyle; procedure UpdateFillColor; procedure UpdateFont; function MappedFontName: string; function MapedString(const St : string):string; procedure MoveToLastPos; procedure SetBrushFillPattern(Lst : TStringList; SetBorder,SetFill : Boolean); procedure SetBrushFillPattern(SetBorder,SetFill : Boolean); overload; procedure GetRGBImage(SrcGraph: TGraphic; Lst : TStringList); procedure PixelsToPoints(const PixX,PixY: Integer; out PtX,PtY:Single); protected procedure CreateHandle; override; procedure CreateBrush; override; procedure CreateFont; override; procedure CreatePen; override; procedure CreateRegion; override; procedure DeselectHandles; override; procedure PenChanging(APen: TObject); override; procedure FontChanging(APen: TObject); override; procedure BrushChanging(APen: TObject); override; procedure RegionChanging(APen: TObject); override; procedure RequiredState(ReqState: TCanvasState); override; procedure DoEllipseAndFill(const Bounds: TRect); override; procedure SetClipRect(const ARect:TRect);override; procedure BeginDoc; override; procedure EndDoc; override; procedure NewPage; override; procedure DoMoveTo(X1,Y1: Integer); override; procedure DoLineTo(X1,Y1: Integer); override; public procedure DoOnePoint(X1, Y1: Integer); procedure DoLineFromTo(X1, Y1,X2,Y2: Integer); constructor Create(APrinter : TPrinter); override; destructor Destroy; override; procedure SaveToFile(aFileName : string); procedure Polyline(Points: PPoint; NumPts: Integer); override; procedure PolyBezier(Points: PPoint; NumPts: Integer; Filled: boolean = False; Continuous: boolean = False); override; procedure Rectangle(X1,Y1,X2,Y2: Integer); override; procedure Frame(const ARect: TRect); override; // border using pen procedure FrameRect(const ARect: TRect); override; // border using brush procedure FillRect(const ARect: TRect); override; procedure RoundRect(X1, Y1, X2, Y2: Integer; RX,RY: Integer); override; procedure Polygon(Points: arraypoints; NumPts: Integer; Winding: boolean = False); procedure PolyCercle(MesSOmmetsPoints: arraypoints; NumPts: Integer;MesCentresPoints: arraypoints; rectiligne,rentrant:arrayboolean; theta1,theta2:arrayextended; trigodirect:arrayboolean); procedure Ellipse(x1, y1, x2, y2: Integer); override; procedure Arc(Left,Top,Right,Bottom,angle1,angle2: Integer); override; procedure ArcNu(Left,Top,Right,Bottom,angle1,angle2: longint); procedure RadialPie(Left,Top,Right,Bottom,angle1,angle2: Integer); override; procedure Chord(Left, Top, Right, Bottom, angle1, angle2: Integer); override; procedure TextOut(X,Y: Integer; const Text: String); override; function TextExtent(const Text: string): TSize; override; procedure Draw(X,Y: Integer; SrcGraphic: TGraphic); override; procedure StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); override; //** Methods not definined on PostScript procedure FloodFill(X, Y: Integer; FillColor: TColor; FillStyle: TFillStyle); override; procedure CopyRect(const Dest: TRect; SrcCanvas: TCanvas; const Source: TRect); override; //** Methods not implemented procedure Arc(x,y,Right,Bottom,SX,SY,EX,EY: Integer); override; procedure Chord(x1, y1, x2, y2, SX, SY, EX, EY: Integer); override; procedure Frame3d(var ARect: TRect; const FrameWidth: integer; const Style: TGraphicsBevelCut); override; procedure Pie(EllipseX1,EllipseY1,EllipseX2,EllipseY2, StartX,StartY,EndX,EndY: Integer); override; procedure TextRect(ARect: TRect; X, Y: integer; const Text: string; const Style: TTextStyle); override; property OutPutFileName : string read fFileName write fFileName; end; TMonPostScriptCanvas = Class(TPostScriptPrinterCanvas) public constructor Create; overload; procedure BeginDoc; override; procedure EndDoc; override; procedure NewPage; override; end; implementation Type TFontsWidths = Array[32..255] of Integer; TFontPSMetrics = Record Name : string; Widths : TFontsWidths; end; Const cBrushStyle : Array[TBrushStyle] of String = ('bsClear', 'bsSolid', 'bsBDiagonal', 'bsFDiagonal', 'bsCross', 'bsDiagCross', 'bsHorizontal', 'bsVertical', 'bsImage', 'bsPattern'); cFontPSMetrics : Array[0..12] of TFontPSMetrics =( (Name : 'Courier'; Widths: (600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600) ), (Name : 'Courier-Bold'; Widths: (600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600) ), (Name : 'Courier-Oblique'; Widths: (600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600) ), (Name : 'Courier-BoldOblique'; Widths: (600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600) ), (Name : 'Helvetica'; Widths: (278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 333, 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500, 556, 500) ), (Name : 'Helvetica-Bold'; Widths: (278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 278, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 333, 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556, 611, 556) ), (Name : 'Helvetica-Oblique'; Widths: (278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 278, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 333, 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500, 556, 500) ), (Name : 'Helvetica-BoldOblique'; Widths: (278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 278, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 333, 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556, 611, 556) ), (Name : 'Times-Roman'; Widths: (250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564, 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889, 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333, 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778, 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480, 541, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 250, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 333, 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750, 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333, 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722, 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278, 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500, 500, 500) ), (Name : 'Times-Bold'; Widths: (250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570, 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944, 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333, 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833, 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394, 520, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 250, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 333, 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750, 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389, 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722, 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278, 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500, 556, 500) ), (Name : 'Times-Italic'; Widths: (250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675, 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833, 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389, 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722, 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400, 541, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 250, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 333, 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750, 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333, 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556, 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278, 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444, 500, 444) ), (Name : 'Times-BoldItalic'; Widths: (250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570, 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889, 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333, 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778, 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348, 570, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 250, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 333, 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750, 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389, 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611, 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278, 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444, 500, 444) ), (Name : 'Symbol'; Widths: (250,333,713,500,549,833,778,439, 333,333,500,549,250,549,250,278,500,500, 500,500,500,500,500,500,500,500,278,278, 549,549,549,444,549,722,667,722,612,611, 763,603,722,333,631,722,686,889,722,722, 768,741,556,592,611,690,439,768,645,795, 611,333,863,333,658,500,500,631,549,549, 494,439,521,411,603,329,603,549,549,576, 521,549,549,521,549,603,439,576,713,686, 493,686,494,480,200,480,549,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,620,247,549,167,713,500,753,753,753, 753,1042,987,603,987,603,400,549,411,549, 549,713,494,460,549,549,549,549,1000,603, 1000,658,823,686,795,987,768,768,823,768, 768,713,713,713,713,713,713,713,768,713, 790,790,890,823,549,250,713,603,603,1042, 987,603,987,603,494,329,790,790,786,713, 384,384,384,384,384,384,494,494,494,494, 0,329,274,686,686,686,384,384,384,384, 384,384,494,494,790, 250) ) ); const PageOpArr: array[boolean] of string[5] = ('Page',''); OrientArr: array[boolean] of string[10] = ('Landscape','Portrait'); {$IFDEF ASCII85} type { TAscii85Encoder } TAscii85Encoder=class private FStream: TMemoryStream; FData: LongWord; FCount: Integer; FMaxWidth,FWritten: Integer; procedure EmitData; procedure WriteByte(const B:Byte); public destructor Destroy; override; procedure Add(B: Byte); procedure Finish; property Stream: TMemoryStream read FStream; property MaxWidth: Integer read FMaxWidth write FMaxWidth; end; { TAscii85Encoder } procedure TAscii85Encoder.EmitData; const Cn: array[0..4] of longword = (85*85*85*85,85*85*85,85*85,85,1); var B: byte; i,n: Integer; begin if FCount=0 then exit; if FStream=nil then FStream := TMemoryStream.Create; if (FCount=4) and (FData=0) then // special case, zeroed 5-tuple will be generated WriteByte(ord('z')) else begin n := FCount; while FCount<4 do begin FData := (FData shl 8); inc(FCount); end; for i:=0 to n do begin B := byte((FData div Cn[i])+33); FData := FData mod Cn[i]; WriteByte(B); end; end; FCount := 0; FData := 0; end; procedure TAscii85Encoder.WriteByte(const B: Byte); var e: string; begin FStream.WriteByte(B); if FMaxWidth>0 then begin Inc(FWritten); if FWritten>=FMaxWidth then begin // write lineending e:=LineEnding; FStream.Write(e[1],length(e)); FWritten := 0; end; end; end; destructor TAscii85Encoder.Destroy; begin if FStream<>nil then FStream.Free; inherited Destroy; end; procedure TAscii85Encoder.Add(B: Byte); begin FData := (FData shl 8) or B; inc(FCount); if FCount=4 then EmitData; end; procedure TAscii85Encoder.Finish; begin EmitData; FStream.WriteByte(ord('~')); FStream.WriteByte(ord('>')); FStream.Position:=0; end; {$ENDIF} { TPostScriptPrinterCanvas } //Write an instruction in the header of document procedure TPostScriptPrinterCanvas.WriteHeader(St: String); begin fHeader.Add(St); end; //Write an instruction in the document procedure TPostScriptPrinterCanvas.Write(const St: String; Lst : TStringList = Nil); begin If not Assigned(Lst) then Lst:=fDocument; Lst.Add(St); end; //Write data in fBuffer procedure TPostScriptPrinterCanvas.WriteB(const St: string); begin Write(St,fBuffer); end; //Clear all data of Buffer procedure TPostScriptPrinterCanvas.ClearBuffer; begin fBuffer.Clear; end; //Write all Lst.Strings in document procedure TPostScriptPrinterCanvas.Write(Lst: TStringList); begin fDocument.AddStrings(Lst); end; //Write an comment in the document procedure TPostScriptPrinterCanvas.WriteComment(const St: string); begin fDocument.Add('%'+St); end; procedure TPostScriptPrinterCanvas.WritePageTransform; var h,w:integer; begin case Orientation of poReversePortrait: begin w:=round(PaperWidth*72/XDPI); h:=round(PaperHeight*72/YDPI); Write(format('%d %d translate 180 rotate',[w,h])); end; poLandscape: begin h:=round(PaperWidth*72/XDPI); Write(format('0 %d translate 90 neg rotate',[h])); end; poReverseLandscape: begin h:=round(PaperHeight*72/YDPI); Write(format('%d 0 translate 90 rotate',[h])); end; end; end; procedure TPostScriptPrinterCanvas.WriteOrientation(UseHeader: boolean); var L: TStringList; begin if UseHeader then L := Fheader else L := nil; Write('%%'+PageOpArr[UseHeader]+'Orientation: '+ OrientArr[(Orientation=poPortrait)or(Orientation=poReversePortrait)], L); end; procedure TPostScriptPrinterCanvas.WriteBoundingBox(UseHeader: boolean); var a,l,t,w,h: Integer; Lst: TStringList; begin l := round(LeftMargin * 72 / XDPI); t := round(TopMargin * 72 / YDPI); w := round((PaperWidth - RightMargin) * 72 / XDPI); h := round((PaperHeight - BottomMargin) * 72 / YDPI); if (Orientation=poLandscape) or (Orientation=poReverseLandscape) then begin a := l; l := t; t := a; a := w; w := h; h := a; end; if UseHeader then Lst := FHeader else Lst := nil; Write('%%'+PageOpArr[UseHeader]+Format('BoundingBox: %d %d %d %d',[l,t,w,h]), Lst); end; //Convert an TCanvas Y point to PostScript Y point //The TCanvas origine is corner Left,Top and PostScript is Left,Bottom //Modify X and Y for use Left and Top margin function TPostScriptPrinterCanvas.TranslateCoord(cnvX,cnvY : Integer):TpsPoint; begin PixelsToPoints(cnvX+LeftMargin, PageHeight+BottomMargin-cnvY, Result.Fx, Result.Fy); end; //Save the last position procedure TPostScriptPrinterCanvas.SetPosition(X, Y: Integer); begin fPenPos:= Point(X,Y); SetInternalPenPos(Point(X,Y)); end; //Init the width of line procedure TPostScriptPrinterCanvas.UpdateLineWidth; var pw:single; begin if Pen.Width<>fcPenWidth then begin pw:=1/XDPI; // printer pixel in inches pw:=Pen.Width*pw*72; // pen width in Points -> 1/72 inches Write(Format('%.3f setlinewidth',[pw],FFs)); fcPenWidth:=Pen.Width; end; end; //Init the color of line (pen) procedure TPostScriptPrinterCanvas.UpdateLineColor(aColor : TColor = clNone); Var R,G,B : Real; RGBColor : TColor; begin if aColor=clNone then aColor:=Pen.Color; if aColor<>fcPenColor then begin RGBColor:=ColorToRGB(aColor); R:=Red(RGBColor)/255; G:=Green(RGBColor)/255; B:=Blue(RGBColor)/255; Write(Format('%.3f %.3f %.3f setrgbcolor',[R,G,B],FFs)+' % '+ColorToString(aColor)); fcPenColor:=aColor; end; end; //Init the style of line procedure TPostScriptPrinterCanvas.UpdateLineStyle; Var st : string; begin if (Pen.Style<>fcPenStyle) and (Pen.Style<>psClear) then begin Case Pen.Style of psSolid : St:='[] 0'; psDash : St:='[5 2] 0'; psDot : St:='[1 3] 0'; psDashDot : St:='[5 2 2 2] 0'; psDashDotDot : St:='[5 2 2 2 2 2] 0'; end; Write(Format('%s setdash',[St])); fcPenStyle:=Pen.Style; end; end; //Init the color for fill procedure TPostScriptPrinterCanvas.UpdateFillColor; Var R,G,B : Real; RGBColor : TColor; begin if (Brush.Style=bsSolid) and (Brush.Color<>fcPenColor) then begin RGBColor:=ColorToRGB(Brush.Color); R:=Red(RGBColor)/255; G:=Green(RGBColor)/255; B:=Blue(RGBColor)/255; Write(Format('%.3f %.3f %.3f setrgbcolor',[R,G,B],FFs)+' % '+ColorToString(Brush.Color)); fcPenColor:=Brush.Color; end; end; //Update current font procedure TPostScriptPrinterCanvas.UpdateFont; Var R,G,B : Real; RGBColor : TColor; begin if Font.Color=clNone then Font.Color:=clBlack; if Font.Size=0 then Font.Size:=12; if Font.Color<>fcPenColor then begin RGBColor:=ColorToRGB(Font.Color); R:=Red(RGBColor)/255; G:=Green(RGBColor)/255; B:=Blue(RGBColor)/255; Write(Format('%.3f %.3f %.3f setrgbcolor',[R,G,B],FFs)+' % '+ColorToString(Font.Color)); fcPenColor:=Font.Color; end; end; //Return an PostScript font Name function TPostScriptPrinterCanvas.MappedFontName: string; Var Atr : string; begin Atr:=''; Result:='Helvetica'; if Copy(LowerCase(Font.Name),1,5)='times' then Result:='Times'; if (LowerCase(Font.Name)='monospaced') or (Copy(LowerCase(Font.Name),1,7)='courier') then Result:='Courier'; if LowerCase(Font.Name)='serif' then Result:='Times'; if LowerCase(Font.Name)='sansserif' then Result:='Helvetica'; if LowerCase(Font.Name)='symbol' then Result:='Symbol'; if (fsBold in Font.Style) and ((Pos('Courier',Result)=1) or (Pos('Helvetica',Result)=1) or (Pos('Times',Result)=1)) then Atr:=Atr+'Bold'; if (fsItalic in Font.Style) and ((Pos('Courier',Result)=1) or (Pos('Helvetica',Result)=1)) then Atr:=Atr+'Oblique'; if (fsItalic in Font.Style) and (Pos('Times',Result)=1) then Atr:=Atr+'Italic'; if (Result+Atr='Times') or (Result+Atr='Times') then Result:='Times-Roman'; //WriteComment(Format('MapedFontName "%s" -> "%s"',[Font.Name,Result])); if Atr <> '' then Result:=Result+'-'+Atr; end; //Replace the controls chars by PostScript string function TPostScriptPrinterCanvas.MapedString(const St: string): string; begin Result:=St; Result:=StringReplace(Result,'\','\\',[rfReplaceAll]); Result:=StringReplace(Result,'(','\(',[rfReplaceAll]); Result:=StringReplace(Result,')','\)',[rfReplaceAll]); Result:=StringReplace(Result,#10,'\n',[rfReplaceAll]); Result:=StringReplace(Result,#13,'\r',[rfReplaceAll]); Result:=StringReplace(Result,#8, '\b',[rfReplaceAll]); Result:=StringReplace(Result,#9, '\t',[rfReplaceAll]); end; //Move pen at last pos procedure TPostScriptPrinterCanvas.MoveToLastPos; var pp:TpsPoint; begin pp:=Self.TranslateCoord(fpenPos.X,fPenPos.Y); write(Format('%f %f moveto',[pp.fx,pp.fy],Ffs)+' %last pos'); end; //Add at the PstScript sequence, the Fill Pattern/Color and Broder //Use SetBorder and SetFill for initialize 1 or 2 sequence procedure TPostScriptPrinterCanvas.SetBrushFillPattern(Lst: TStringList; SetBorder, SetFill: Boolean); begin If not Assigned(Lst) then Exit; if SetFill then begin if (Brush.Color<>clNone) and (Brush.Style<>bsClear) then begin UpdateFillColor; Case Brush.Style of bsSolid : begin Write(Lst); Write('eofill'); end; bsClear : ; else begin UpdateLineColor(Brush.Color); write(Format('/%s findfont %% a pattern font patternfill',[cBrushStyle[Brush.Style]])); Write(Lst); write('patternfill'); end; end; end; end; if SetBorder and ((Pen.Color<>clNone) and ((Pen.Color<>Brush.Color) or (Brush.Style<>bsSolid))) then begin UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; Write(Lst); Write('stroke'); end; end; procedure TPostScriptPrinterCanvas.SetBrushFillPattern(SetBorder, SetFill: Boolean); begin SetBrushFillPattern(fBuffer,SetBorder,SetFill); end; //Add in Lst, all RGB pixels of SrcGraph picture procedure TPostScriptPrinterCanvas.GetRGBImage(SrcGraph: TGraphic; Lst: TStringList); var SrcIntfImg : TLazIntfImage; {$IFDEF ASCII85} procedure TransferRGB; var px, py : Integer; CurColor : TFPColor; Encoder : TAscii85Encoder; A : Byte; Ratio : Single; begin Encoder := TAscii85Encoder.Create; try Encoder.MaxWidth:=75; for py:=0 to SrcIntfImg.Height-1 do begin for px:=0 to SrcIntfImg.Width-1 do begin CurColor:=SrcIntfImg.Colors[px,py]; A := Hi(CurColor.alpha); if A=0 then begin Encoder.Add(255); Encoder.Add(255); Encoder.Add(255); end else if A=255 then begin Encoder.Add(Hi(CurColor.Red)); Encoder.Add(Hi(CurColor.Green)); Encoder.Add(Hi(CurColor.Blue)); end else begin Ratio := 1-(255-A)/255; Encoder.Add(round(Hi(CurColor.Red )*Ratio+255*(1-Ratio))); Encoder.Add(round(Hi(CurColor.Green)*Ratio+255*(1-Ratio))); Encoder.Add(round(Hi(CurColor.Blue )*Ratio+255*(1-Ratio))); end; end; end; Encoder.Finish; Encoder.Stream.Position:=0; Lst.LoadFromStream(Encoder.Stream); finally Encoder.Free; end; end; {$ELSE} procedure TransferRGB; var px, py : Integer; CurColor : TFPColor; St : String; begin St:=''; for py:=0 to SrcIntfImg.Height-1 do begin for px:=0 to SrcIntfImg.Width-1 do begin CurColor:=SrcIntfImg.Colors[px,py]; St:=St+IntToHex(Hi(CurColor.Red),2)+ IntToHex(Hi(CurColor.Green),2)+ IntToHex(Hi(CurColor.Blue),2); if Length(St)>=78 then begin Lst.Add(Copy(St,1,78)); System.Delete(St,1,78); end; end; end; if St<>'' then Lst.Add(St); end; {$ENDIF} procedure TransferRGBA; begin TransferRGB; end; begin if (SrcGraph is TRasterImage) then begin SrcIntfImg:=TLazIntfImage.Create(0,0,[]); Lst.BeginUpdate; Try SrcIntfImg.LoadFromBitmap(TRasterImage(SrcGraph).BitmapHandle, TRasterImage(SrcGraph).MaskHandle); if SrcIntfImg.DataDescription.Format<>ricfNone then begin if SrcIntfImg.DataDescription.AlphaPrec<>0 then TransferRGBA else TransferRGB; end; finally Lst.EndUpdate; SrcIntfImg.Free; end; end; end; procedure TPostScriptPrinterCanvas.PixelsToPoints(const PixX,PixY: Integer; out PtX,PtY:Single); begin PtX:=72*(PixX/XDPI); // pixels to points PtY:=72*(PixY/YDPI); end; procedure TPostScriptPrinterCanvas.CreateHandle; begin SetHandle(1); // set dummy handle end; procedure TPostScriptPrinterCanvas.CreateBrush; begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.CreateFont; begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.CreatePen; begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.CreateRegion; begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.DeselectHandles; begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.PenChanging(APen: TObject); begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.FontChanging(APen: TObject); begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.BrushChanging(APen: TObject); begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.RegionChanging(APen: TObject); begin // handle is dummy, so do nothing here end; procedure TPostScriptPrinterCanvas.RequiredState(ReqState: TCanvasState); begin if csHandleValid in ReqState then inherited RequiredState([csHandleValid]); // other states are anyway impossible, because handle is dummy end; procedure TPostScriptPrinterCanvas.DoEllipseAndFill(const Bounds: TRect); begin Ellipse(Bounds.Left, Bounds.Top, Bounds.Right, Bounds.Bottom); end; constructor TPostScriptPrinterCanvas.Create(APrinter: TPrinter); begin inherited Create(APrinter); fcBrushStyle:=bsClear; fcPenColor :=clBlack; fcPenWidth :=0; fcPenStyle :=psSolid; fHeader:=TStringList.Create; fBuffer:=TstringList.Create; fDocument:=TStringList.Create; Ffs.DecimalSeparator:='.'; Ffs.ThousandSeparator:=#0; end; destructor TPostScriptPrinterCanvas.Destroy; begin if FPSUnicode<>nil then FPSUnicode.Free; fBuffer.Free; fHeader.Free; fDocument.Free; inherited Destroy; end; procedure TPostScriptPrinterCanvas.SaveToFile(aFileName: string); Var Lst : TStringList; begin Lst:=TStringList.Create; try Lst.AddStrings(fHeader); Lst.AddStrings(fDocument); Lst.SaveTofile(UTF8ToSys(ExpandFileNameUTF8(aFileName))); finally Lst.Free; end; end; procedure TPostScriptPrinterCanvas.BeginDoc; begin inherited BeginDoc; if FPSUnicode=nil then FPSUnicode := TPSUnicode.Create; FPSUnicode.OutLst := FDocument; //Clear all existing values //before starting an new document fDocument.Clear; fHeader.Clear; Font.Size:=12; Font.Color:=clBlack; WriteHeader('%!PS-Adobe-3.0'); WriteBoundingBox(True); WriteHeader('%%'+Format('Creator: Lazarus PostScriptCanvas for %s',[Application.ExeName])); WriteHeader('%%'+Format('Title: %s',[Title])); WriteHeader('%%CreationDate: '+DateTimeToStr(Now)); WriteOrientation(true); WriteHeader('%%Pages: (atend)'); WriteHeader('%%PageResources: (atend)'); WriteHeader('%%PageOrder: Ascend'); WriteHeader(''); WriteHeader('%------------------------------------------------------------'); WriteHeader('%================== BEGIN SETUP=============================='); WriteHeader(''); WriteHeader('/RE { % /NewFontName [NewEncodingArray] /FontName RE -'); WriteHeader(' findfont dup length dict begin'); WriteHeader(' {'); WriteHeader(' 1 index /FID ne'); WriteHeader(' {def}'); WriteHeader(' {pop pop} ifelse'); WriteHeader(' } forall'); WriteHeader(' /Encoding exch def'); WriteHeader(' /FontName 1 index def'); WriteHeader(' currentdict definefont pop'); WriteHeader(' end'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('/scp {currentpoint /oldy exch def /oldx exch def } def'); WriteHeader('/rcp {oldx oldy moveto} bind def'); WriteHeader('/uli { 2 copy /uposy exch def /uposx exch def moveto } def'); WriteHeader('/ule { % underlinepenwidh underlinepos'); WriteHeader('scp gsave 0 exch rmoveto setlinewidth'); WriteHeader('uposx oldx sub 0 rlineto [] 0 setdash stroke grestore rcp } def'); WriteHeader(''); WriteHeader('%%BeginProcSet: patternfill 1.0 0'); WriteHeader('% width height matrix proc key cache'); WriteHeader('% definepattern -\> font'); WriteHeader('/definepattern { %def'); WriteHeader(' 7 dict begin'); WriteHeader(' /FontDict 9 dict def'); WriteHeader(' FontDict begin'); WriteHeader(' /cache exch def'); WriteHeader(' /key exch def'); WriteHeader(' /proc exch cvx def'); WriteHeader(' /mtx exch matrix invertmatrix def'); WriteHeader(' /height exch def'); WriteHeader(' /width exch def'); WriteHeader(' /ctm matrix currentmatrix def'); WriteHeader(' /ptm matrix identmatrix def'); WriteHeader(' /str'); WriteHeader(' (12345678901234567890123456789012)'); WriteHeader(' def'); WriteHeader(' end'); WriteHeader(' /FontBBox [ %def'); WriteHeader(' 0 0 FontDict /width get'); WriteHeader(' FontDict /height get'); WriteHeader(' ] def'); WriteHeader(' /FontMatrix FontDict /mtx get def'); WriteHeader(' /Encoding StandardEncoding def'); WriteHeader(' /FontType 3 def'); WriteHeader(' /BuildChar { %def'); WriteHeader(' pop begin'); WriteHeader(' FontDict begin'); WriteHeader(' width 0 cache { %ifelse'); WriteHeader(' 0 0 width height setcachedevice'); WriteHeader(' }{ %else'); WriteHeader(' setcharwidth'); WriteHeader(' } ifelse'); WriteHeader(' 0 0 moveto width 0 lineto'); WriteHeader(' width height lineto 0 height lineto'); WriteHeader(' closepath clip newpath'); WriteHeader(' gsave proc grestore'); WriteHeader(' end end'); WriteHeader(' } def'); WriteHeader(' FontDict /key get currentdict definefont'); WriteHeader(' end'); WriteHeader('} bind def'); WriteHeader('% dict patternpath -'); WriteHeader('% dict matrix patternpath -'); WriteHeader('/patternpath { %def'); WriteHeader(' dup type /dicttype eq { %ifelse'); WriteHeader(' begin FontDict /ctm get setmatrix'); WriteHeader(' }{ %else'); WriteHeader(' exch begin FontDict /ctm get setmatrix'); WriteHeader(' concat'); WriteHeader(' } ifelse'); WriteHeader(' currentdict setfont'); WriteHeader(' FontDict begin'); WriteHeader(' FontMatrix concat'); WriteHeader(' width 0 dtransform'); WriteHeader(' round width div exch round width div exch'); WriteHeader(' 0 height dtransform'); WriteHeader(' round height div exch'); WriteHeader(' round height div exch'); WriteHeader(' 0 0 transform round exch round exch'); WriteHeader(' ptm astore setmatrix'); WriteHeader(' '); WriteHeader(' pathbbox'); WriteHeader(' height div ceiling height mul 4 1 roll'); WriteHeader(' width div ceiling width mul 4 1 roll'); WriteHeader(' height div floor height mul 4 1 roll'); WriteHeader(' width div floor width mul 4 1 roll'); WriteHeader(' '); WriteHeader(' 2 index sub height div ceiling cvi exch'); WriteHeader(' 3 index sub width div ceiling cvi exch'); WriteHeader(' 4 2 roll moveto'); WriteHeader(' '); WriteHeader(' FontMatrix ptm invertmatrix pop'); WriteHeader(' { %repeat'); WriteHeader(' gsave'); WriteHeader(' ptm concat'); WriteHeader(' dup str length idiv { %repeat'); WriteHeader(' str show'); WriteHeader(' } repeat'); WriteHeader(' dup str length mod str exch'); WriteHeader(' 0 exch getinterval show'); WriteHeader(' grestore'); WriteHeader(' 0 height rmoveto'); WriteHeader(' } repeat'); WriteHeader(' pop'); WriteHeader(' end end'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('% dict patternfill -'); WriteHeader('% dict matrix patternfill -'); WriteHeader('/patternfill { %def'); WriteHeader(' gsave'); WriteHeader(' clip patternpath'); WriteHeader(' grestore'); WriteHeader(' newpath'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('% dict patterneofill -'); WriteHeader('% dict matrix patterneofill -'); WriteHeader('/patterneofill { %def'); WriteHeader(' gsave'); WriteHeader(' eoclip patternpath'); WriteHeader(' grestore'); WriteHeader(' newpath'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('% dict patternstroke -'); WriteHeader('% dict matrix patternstroke -'); WriteHeader('/patternstroke { %def'); WriteHeader(' gsave'); WriteHeader(' strokepath clip patternpath'); WriteHeader(' grestore'); WriteHeader(' newpath'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('% dict ax ay string patternashow -'); WriteHeader('% dict matrix ax ay string patternashow -'); WriteHeader('/patternashow { %def'); WriteHeader(' (0) exch { %forall'); WriteHeader(' 2 copy 0 exch put pop dup'); WriteHeader(' false charpath '); WriteHeader(' currentpoint'); WriteHeader(' 5 index type /dicttype eq { %ifelse'); WriteHeader(' 5 index patternfill'); WriteHeader(' }{ %else'); WriteHeader(' 6 index 6 index patternfill'); WriteHeader(' } ifelse'); WriteHeader(' moveto'); WriteHeader(' 3 copy pop rmoveto'); WriteHeader(' } forall'); WriteHeader(' pop pop pop'); WriteHeader(' dup type /dicttype ne { pop } if pop'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('% dict string patternshow -'); WriteHeader('% dict matrix string patternshow -'); WriteHeader('/patternshow { %def'); WriteHeader(' 0 exch 0 exch patternashow'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('/opaquepatternfill { %def'); WriteHeader(' gsave'); WriteHeader(' 1 setgray'); WriteHeader(' fill'); WriteHeader(' grestore'); WriteHeader(' patternfill'); WriteHeader('} bind def'); WriteHeader(''); WriteHeader('%%EndProcSet'); WriteHeader('%%EndProlog'); WriteHeader(''); WriteHeader('%%BeginSetup'); WriteHeader('15 15 [300 72 div 0 0 300 72 div 0 0]'); WriteHeader('{ %definepattern'); WriteHeader(' 2 setlinecap'); WriteHeader(' 7.5 0 moveto 15 7.5 lineto'); WriteHeader(' 0 7.5 moveto 7.5 15 lineto'); WriteHeader(' 2 setlinewidth stroke'); WriteHeader('} bind'); WriteHeader('/bsBDiagonal true definepattern pop'); WriteHeader(''); WriteHeader('15 15 [300 72 div 0 0 300 72 div 0 0]'); WriteHeader('{ %definepattern'); WriteHeader(' 2 setlinecap'); WriteHeader(' 7.5 0 moveto 0 7.5 lineto'); WriteHeader(' 15 7.5 moveto 7.5 15 lineto'); WriteHeader(' 2 setlinewidth stroke'); WriteHeader('} bind'); WriteHeader('/bsFDiagonal true definepattern pop'); WriteHeader('30 30 [300 72 div 0 0 300 72 div 0 0]'); WriteHeader('{ %definepattern'); WriteHeader(' 2 2 scale'); WriteHeader(' 2 setlinecap'); WriteHeader(' 7.5 0 moveto 15 7.5 lineto'); WriteHeader(' 0 7.5 moveto 7.5 15 lineto'); WriteHeader(' 7.5 0 moveto 0 7.5 lineto'); WriteHeader(' 15 7.5 moveto 7.5 15 lineto'); WriteHeader(' 0.5 setlinewidth stroke'); WriteHeader('} bind'); WriteHeader('/bsDiagCross true definepattern pop'); WriteHeader(''); WriteHeader('30 30 [300 72 div 0 0 300 72 div 0 0]'); WriteHeader('{ %definepattern'); WriteHeader(' 2 setlinecap'); WriteHeader(' 15 0 moveto 15 30 lineto'); WriteHeader(' 0 15 moveto 30 15 lineto'); WriteHeader(' 2 setlinewidth stroke'); WriteHeader('} bind'); WriteHeader('/bsCross true definepattern pop'); WriteHeader(''); WriteHeader('15 15 [300 72 div 0 0 300 72 div 0 0]'); WriteHeader('{ %definepattern'); WriteHeader(' 2 setlinecap'); WriteHeader(' 0 7.5 moveto 15 7.5 lineto'); WriteHeader(' 2 setlinewidth stroke'); WriteHeader('} bind'); WriteHeader('/bsHorizontal true definepattern pop'); WriteHeader(''); WriteHeader('15 15 [300 72 div 0 0 300 72 div 0 0]'); WriteHeader('{ %definepattern'); WriteHeader(' 2 setlinecap'); WriteHeader(' 7.5 0 moveto 7.5 15 lineto'); WriteHeader(' 2 setlinewidth stroke'); WriteHeader('} bind'); WriteHeader('/bsVertical true definepattern pop'); WriteHeader('%%EndSetup'); WriteHeader('%%====================== END SETUP ========================='); WriteHeader(''); WriteHeader('%%Page: 1 1'); WritePageTransform; end; procedure TPostScriptPrinterCanvas.EndDoc; var I: Integer; begin Inherited EndDoc; Write('stroke'); Write('showpage'); Write('%%EOF'); // update number of pages in header I := FHeader.IndexOf('%%Pages: (atend)'); if I <> -1 then FHeader[I] := '%%' + Format('Pages: %d', [PageNumber]); if Trim(fFileName)<>'' then SaveToFile(ExpandFileNameUTF8(fFileName)); if Assigned(fPsUnicode) then FreeAndNil(fPsUnicode); Self.fcPenWidth:=-2; // prevent cached line width affect new page end; procedure TPostScriptPrinterCanvas.NewPage; begin inherited NewPage; Write('stroke'); Write('showpage'); Write('%%'+Format('Page: %d %d',[PageNumber, PageNumber])); WriteBoundingBox(false); WriteOrientation(false); WritePageTransform; write('newpath'); Self.fcPenWidth:=-1; // prevent cached line width affect new page fSaveCount:=0; UpdateLineWidth; end; //Move the current position procedure TPostScriptPrinterCanvas.DoMoveTo(X1, Y1: Integer); var pp:TpsPoint; begin RequiredState([csHandleValid]); write('stroke'); WriteComment(Format('DoMoveTo(%d,%d)',[x1,y1])); SetPosition(X1,Y1); pp:=TranslateCoord(X1,Y1); write(Format('%f %f moveto',[pp.fx,pp.fy],FFs)); end; //Drawe line procedure TPostScriptPrinterCanvas.DoLineTo(X1, Y1: Integer); var pp:TpsPoint; begin Changing; RequiredState([csHandleValid, csPenValid]); WriteComment(Format('DoLineTo(%d,%d)',[x1,y1])); SetPosition(X1,Y1); pp:=TranslateCoord(X1,Y1); UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; write(Format('%f %f lineto',[pp.fx,pp.fy],FFs)); changed; end; procedure TPostScriptPrinterCanvas.DoLineFromTo(X1, Y1,X2,Y2: Integer); var pp:TpsPoint; begin Changing; RequiredState([csHandleValid, csPenValid]); WriteComment(Format('DoLineFromTo(%d,%d)',[x1,y1])); SetPosition(X1,Y1); pp:=TranslateCoord(X1,Y1); write(Format('newpath %f %f moveto',[pp.fx,pp.fy],FFs)); UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; pp:=TranslateCoord(X2,Y2); write(Format('%f %f lineto',[pp.fx,pp.fy],FFs)); write('stroke'); changed; end; procedure TPostScriptPrinterCanvas.DoOnePoint(X1, Y1: Integer); var pp:TpsPoint; begin Changing; RequiredState([csHandleValid, csPenValid]); WriteComment(Format('DoOnePoint(%d,%d)',[x1,y1])); SetPosition(X1,Y1); pp:=TranslateCoord(X1,Y1); write(Format('%f %f moveto',[pp.fx,pp.fy],FFs)); UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; write(Format('%f %f lineto',[pp.fx+1,pp.fy],FFs)); write('stroke'); changed; end; procedure TPostScriptPrinterCanvas.Polyline(Points: PPoint; NumPts: Integer); var i : LongInt; Lst: TStringList; Pt : TPoint; pp:TpsPoint; begin if (NumPts<=1) or not Assigned(Points) then Exit; Changing; RequiredState([csHandleValid, csPenValid]); Lst:=TStringList.Create; try Pt:=Points[0]; pp:=TranslateCoord(Pt.x,Pt.y); Write(Format('%f %f moveto',[pp.fx,pp.fy],FFs),Lst); for i:=1 to NumPts-1 do begin Pt:=Points[i]; pp:=TranslateCoord(Pt.x,Pt.y); SetPosition(Pt.x,Pt.y); //TranslateCoord(Pt.x,Pt.y); Write(Format('%f %f lineto',[pp.fx,pp.fy],FFs),Lst); end; UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; write(Lst); write('stroke'); finally Lst.Free; end; MoveToLastPos; Changed; end; procedure TPostScriptPrinterCanvas.PolyBezier(Points: PPoint; NumPts: Integer; Filled: boolean; Continuous: boolean); var i : Integer; St : String; Pt : TPoint; pp:TpsPoint; begin Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); if (NumPts>=4) then begin ClearBuffer; St:=''; Pt:=Points[0]; pp:=TranslateCoord(Pt.x,Pt.y); if Continuous then WriteB('newpath'); WriteB(Format('%f %f moveto',[pp.fx,pp.fy],FFs)); for i:=1 to NumPts-1 do begin Pt:=Points[i]; pp:=TranslateCoord(Pt.x,Pt.y); St:=St+Format(' %f %f',[pp.fx,pp.fy], FFs); end; WriteB(Format('%s curveto',[St])); if Continuous then writeB('closepath'); SetBrushFillPattern(True,Filled); MoveToLastPos; end; Changed; end; // internal rect path procedure TPostScriptPrinterCanvas.psDrawRect(ARect:TRect); var pp1,pp2:TpsPoint; begin pp1:=TranslateCoord(Arect.Left,Arect.Top); pp2:=TranslateCoord(ARect.Right,Arect.Bottom); ClearBuffer; //Tempo draw rect WriteB('newpath'); writeB(Format(' %f %f moveto',[pp1.fx,pp1.fy],FFs)); writeB(Format(' %f %f lineto',[pp2.fx,pp1.fy],FFs)); writeB(Format(' %f %f lineto',[pp2.fx,pp2.fy],FFs)); writeB(Format(' %f %f lineto',[pp1.fx,pp2.fy],FFs)); writeB('closepath'); end; //Draw an Rectangle procedure TPostScriptPrinterCanvas.Rectangle(X1, Y1, X2, Y2: Integer); begin Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); writecomment(Format('Rectangle(%d,%d,%d,%d)',[x1,y1,x2,y2])); psDrawRect(Types.Rect(x1,y1,x2,y2)); SetBrushFillPattern(True,True); MoveToLastPos; Changed; end; procedure TPostScriptPrinterCanvas.Frame(const ARect: TRect); begin Changing; RequiredState([csHandleValid, csPenValid]); psDrawRect(ARect); SetBrushFillPattern(True,False); MoveToLastPos; Changed; end; procedure TPostScriptPrinterCanvas.FrameRect(const ARect: TRect); var CL : TColor; begin Changing; RequiredState([csHandleValid, csBrushValid]); CL:=Pen.Color; try Pen.Color:=Brush.Color; Frame(aRect); finally Pen.Color:=CL; end; Changed; end; //Fill an Rectangular region procedure TPostScriptPrinterCanvas.FillRect(const ARect: TRect); begin Changing; RequiredState([csHandleValid, csBrushValid]); Writecomment(Format('FillRect(%d,%d,%d,%d)',[Arect.Left,ARect.Top,Arect.Right,ARect.Bottom])); psDrawRect(ARect); SetBrushFillPattern(False,True); MoveToLastPos; Changed; end; procedure TPostScriptPrinterCanvas.RoundRect(X1, Y1, X2, Y2: Integer; RX, RY: Integer); var ellipsePath : string; //fs:TFormatSettings; pp1,pp2:TpsPoint; begin Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); //fs.DecimalSeparator:='.'; //fs.ThousandSeparator:=#0; X1:=Min(X1,X2); X2:=Max(X1,X2); Y1:=Min(Y1,Y2); Y2:=Max(Y1,Y2); writecomment(Format('RoundRect(%d,%d,%d,%d,%d,%d)',[x1,y1,x2,y2,Rx,Ry])); pp1:=TranslateCoord(X1,Y1); pp2:=TranslateCoord(X2,Y2); ClearBuffer; {Note: arcto command draws a line from current point to beginning of arc save current matrix, translate to center of ellipse, scale by rx ry, and draw a circle of unit radius in counterclockwise dir, return to original matrix arguments are (cx, cy, rx, ry, startAngle, endAngle)} ellipsePath:='matrix currentmatrix %f %f translate %d %d scale 0 0 1 %d %d arc setmatrix'; {choice between newpath and moveto beginning of arc go with newpath for precision, does this violate any assumptions in code??? write(format('%d %d moveto',[x1+rx, y1]),Lst # this also works} WriteB('newpath'); WriteB(Format(ellipsePath,[pp1.fx+rx,pp1.fy-ry,rx,ry,90,180],FFs)); WriteB(Format(ellipsePath,[pp1.fx+rx,pp2.fy+ry,rx,ry,180,270],FFs)); WriteB(Format(ellipsePath,[pp2.fx-rx,pp2.fy+ry,rx,ry,270,360],FFs)); WriteB(Format(ellipsePath,[pp2.fx-rx,pp1.fy-ry,rx,ry,0,90],FFs)); WriteB('closepath'); SetBrushFillPattern(True,True); MoveToLastPos; Changed; end; procedure TPostScriptPrinterCanvas.Polygon(Points: arraypoints; NumPts: Integer; Winding: boolean); var i : LongInt; Pt : TPoint; pp:TpsPoint; begin if (NumPts<=1) or not Assigned(Points) then Exit; Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); ClearBuffer; Pt:=Points[0]; pp:=TranslateCoord(Pt.x,Pt.y); WriteB('newpath'); WriteB(Format('%f %f moveto',[pp.fx,pp.fy],FFs)); for i:=1 to NumPts-1 do begin Pt:=Points[i]; pp:=TranslateCoord(Pt.x,Pt.y); WriteB(Format('%f %f lineto',[pp.fx,pp.fy], FFs)); end; WriteB('closepath'); SetBrushFillPattern(True,True); MoveToLastPos; Changed; end; //Draw an Ellipse procedure TPostScriptPrinterCanvas.Ellipse(x1, y1, x2, y2: Integer); var xScale : Real; yScale : Real; cX, cY : Real; rX,Ry : Real; Code : string; stAng : Integer; ang : Integer; //fs:TFormatSettings; pp1,pp2:TpsPoint; begin Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); //fs.DecimalSeparator:='.'; //fs.ThousandSeparator:=#0; writecomment(Format('Ellipse(%d,%d,%d,%d)',[x1,y1,x2,y2])); pp1:=TranslateCoord(X1,Y1); pp2:=TranslateCoord(X2,Y2); //Init StAng:=0; Ang:=360; //calculate centre of ellipse cx:=(pp1.fx+pp2.fx)/2; cy:=(pp1.fy+pp2.fy)/2; rx:=(pp2.fx-pp1.fx)/2; ry:=(pp2.fy-pp1.fy)/2; //calculate semi-minor and semi-major axes of ellipse xScale:=Abs((pp2.fx-pp1.fx)/2.0); yScale:=Abs((pp2.fy-pp1.fy)/2.0); Code:=Format('matrix currentmatrix %.3f %.3f translate %.3f %.3f scale 0 0 1 %d %d %s setmatrix', [cX,cY,xScale,yScale,StAng,Ang,'arc'],FFs); ClearBuffer; WriteB(Format('%.3f %.3f moveto',[cX,cY],FFs)); //move to center of circle WriteB(Code); SetBrushFillPattern(False,True); //move current point to start of arc, note negative //angle because y increases down ClearBuffer; WriteB(Format('%.3f %.3f moveto',[cX+(rX*Cos(StAng*-1)),cY+(rY*Sin(StAng*-1))],FFs)); WriteB(Code); SetBrushFillPattern(True,False); MoveToLastPos; Changed; end; function DonneAnglePolaireDansPiPi(x,y:extended):extended; var toto:extended; begin if ((x=0) and (y=0)) then begin DonneAnglePolaireDansPiPi:=0; exit; end; if (x=0) then if (y>0) then begin DonneAnglePolaireDansPiPi:=Pi/2; exit; end else begin DonneAnglePolaireDansPiPi:=-Pi/2; exit; end; if (y=0) then if (x>0) then begin DonneAnglePolaireDansPiPi:=0; exit; end else begin DonneAnglePolaireDansPiPi:=Pi; exit; end; try toto:=arctan(y/x); except if (((x>0) and (y>0)) or ((x<0) and (y<0))) then toto:=pi/2 else toto:=-pi/2; end; if (x<0) then toto:=toto+Pi; if toto>Pi then toto:=toto-2*Pi; if toto<-Pi then toto:=toto+2*pi; DonneAnglePolaireDansPiPi:=toto; end; function DonneAnglePolaireDans02Pi(x,y:extended):extended; var toto:extended; begin toto:=DonneAnglePolaireDansPiPi(x,y); if toto<0 then toto:=toto+2*Pi; DonneAnglePolaireDans02Pi:=toto; end; procedure TPostScriptPrinterCanvas.PolyCercle(MesSOmmetsPoints: arraypoints; NumPts: Integer;MesCentresPoints: arraypoints; rectiligne,rentrant:arrayboolean;theta1,theta2:arrayextended; trigodirect:arrayboolean); var i:integer; r:longint; t1,t2:extended; pp1,pp2:TpsPoint; begin Changing; RequiredState([csHandleValid, csPenValid]); WriteComment('PolyCercle'); UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; write('newpath'); pp1:=TranslateCoord(MesSOmmetsPoints[0].x,MesSOmmetsPoints[0].y); write(Format('%f %f moveto',[pp1.fx,pp1.fy],FFs)); for i:=1 to numpts do begin if rectiligne[i-1] then begin //pp1:=TranslateCoord(MesSOmmetsPoints[i-1].x,MesSOmmetsPoints[i-1].y); //write(Format('%f %f moveto',[pp1.fx,pp1.fy],FFs)); pp2:=TranslateCoord(MesSOmmetsPoints[i].x,MesSOmmetsPoints[i].y); write(Format('%f %f lineto',[pp2.fx,pp2.fy],FFs)); end else begin r:=trunc(sqrt(sqr(MesSOmmetsPoints[i-1].x-mescentresPoints[i-1].x)+ sqr(MesSOmmetsPoints[i-1].y-mescentresPoints[i-1].y))); t1:=donneanglepolairedans02pi(cos(theta1[i-1]),sin(theta1[i-1])); t2:=donneanglepolairedans02pi(cos(theta2[i-1]),sin(theta2[i-1])); //if t1>t2 then t1:=t1-2*Pi; if trigodirect[i-1] and (t2<t1) then t1:=t1-2*Pi; if not(trigodirect[i-1]) and (t2>t1) then t2:=t2-2*Pi; arcnu(mescentresPoints[i-1].x-r,mescentresPoints[i-1].y+r, mescentresPoints[i-1].x+r,mescentresPoints[i-1].y-r,trunc(t1*180/Pi*16),trunc(t2*180/Pi*16)); end; end; write('closepath fill'); changed; end; //Draw an Arc procedure TPostScriptPrinterCanvas.Arc(Left,Top,Right,Bottom, angle1, angle2: Integer); var xScale : Real; yScale : Real; cX, cY : Real; rX,Ry : Real; Code : string; ang : string; //fs:TFormatSettings; pp1,pp2:TpsPoint; begin Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); //fs.DecimalSeparator:='.'; //fs.ThousandSeparator:=#0; pp1:=TranslateCoord(Left,Top); pp2:=TranslateCoord(Right,Bottom); //TranslateCoord(Right,Bottom); //calculate centre of ellipse cx:=(pp1.fx+pp2.fx)/2.0; cy:=(pp1.fy+pp2.fy)/2.0; rx:=(pp2.fx-pp1.fx)/2.0; ry:=(pp2.fy-pp1.fy)/2.0; if Angle2>=angle1 then Ang:='arc' else Ang:='arcn'; //calculate semi-minor and semi-major axes of ellipse xScale:=Abs((pp2.fx-pp1.fx)/2.0); yScale:=Abs((pp2.fy-pp1.fy)/2.0); Code:=Format('newpath matrix currentmatrix %.3f %.3f translate %.3f %.3f scale 0 0 1 %.3f %.3f %s setmatrix ', [cX,cY,xScale,yScale,Angle1/16,Angle2/16,ang], FFs); if (Pen.Color<>clNone) and ((Pen.Color<>Brush.Color) or (Brush.Style<>bsSolid)) then begin UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; //move current point to start of arc, note negative //angle because y increases down //write(Format('newpath %.3f %.3f moveto',[cX+(rX*Cos((Angle1/16)*-1)),cY+(rY*Sin((Angle1/16)*-1))],FFs)); Write(Code); write('stroke'); end; MoveToLastPos; Changed; end; procedure TPostScriptPrinterCanvas.ArcNu(Left,Top,Right,Bottom, angle1, angle2: longint); var xScale : Real; yScale : Real; cX, cY : Real; rX,Ry : Real; Code : string; ang : string; //fs:TFormatSettings; pp1,pp2:TpsPoint; begin pp1:=TranslateCoord(Left,Top); pp2:=TranslateCoord(Right,Bottom); //TranslateCoord(Right,Bottom); //calculate centre of ellipse cx:=(pp1.fx+pp2.fx)/2.0; cy:=(pp1.fy+pp2.fy)/2.0; rx:=(pp2.fx-pp1.fx)/2.0; ry:=(pp2.fy-pp1.fy)/2.0; if angle2>angle1 then Ang:='arc' else Ang:='arcn'; //calculate semi-minor and semi-major axes of ellipse xScale:=Abs((pp2.fx-pp1.fx)/2.0); yScale:=Abs((pp2.fy-pp1.fy)/2.0); Code:=Format('matrix currentmatrix %.3f %.3f translate %.3f %.3f scale 0 0 1 %.3f %.3f %s setmatrix ', [cX,cY,xScale,yScale,Angle1/16,Angle2/16,ang], FFs); Write(Code); end; procedure TPostScriptPrinterCanvas.RadialPie(Left, Top, Right, Bottom, angle1, angle2: Integer); var xScale : Real; yScale : Real; cX, cY : Real; rX,Ry : Real; Code : string; ang : string; begin Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); writecomment(Format('RadialPie(%d,%d,%d,%d,%d,%d)',[Left,Top,Right-Left,Bottom-Top,Angle1,Angle2])); TranslateCoord(Left,Top); //calculate centre of ellipse cx:=Left; cy:=Top; rx:=Right-Left; ry:=Bottom-Top; if Angle2>=0 then Ang:='arc' else Ang:='arcn'; //calculate semi-minor and semi-major axes of ellipse xScale:=Abs(rx); yScale:=Abs(ry); Code:=Format('matrix currentmatrix %.3f %.3f translate %.3f %.3f scale 0 0 1 %.3f %.3f %s setmatrix', [cX,cY,xScale,yScale,Angle1/16,Angle2/16,ang],FFs); //move current point to start of arc, note negative //angle because y increases down ClearBuffer; writeB(Format('%.3f %.3f moveto',[cX+(rX*Cos((Angle1/16)*-1)),cY+(rY*Sin((Angle1/16)*-1))],FFs)); WriteB(Code); writeB(Format('%d %d lineto',[Left,Top])); writeB(Format('%.3f %.3f lineto',[cX+(rX*Cos((Angle1/16)*-1)),cY+(rY*Sin((Angle1/16)*-1))],FFs)); SetBrushFillPattern(False,True); //move current point to start of arc, note negative //angle because y increases down ClearBuffer; writeB(Format('%.3f %.3f moveto',[cX+(rX*Cos((Angle1/16)*-1)),cY+(rY*Sin((Angle1/16)*-1))],FFs)); WriteB(Code); writeB(Format('%d %d lineto',[Left,Top])); writeB(Format('%.3f %.3f lineto',[cX+(rX*Cos((Angle1/16)*-1)),cY+(rY*Sin((Angle1/16)*-1))],FFs)); SetBrushFillPattern(True,False); MoveToLastPos; Changed; end; function FontStyleToInt(AStyles: TFontStyles): Integer; begin result := 0; if fsBold in AStyles then result := result or (1 shl ord(fsBold)); if fsItalic in AStyles then result := result or (1 shl ord(fsItalic)); if fsStrikeOut in AStyles then result := result or (1 shl ord(fsStrikeout)); if fsUnderline in AStyles then result := result or (1 shl ord(fsUnderline)); end; //Out the text at the X,Y coord. Set the font procedure TPostScriptPrinterCanvas.TextOut(X, Y: Integer; const Text: String); var PenUnder : Real; PosUnder : Integer; pp:TpsPoint; saved:boolean; procedure rotate; begin if Font.Orientation<>0 then begin write('gsave'); inc(fSaveCount); Self.FPsUnicode.ResetLastFont; saved:=true; write(format('%.2f rotate',[Font.Orientation / 10],fFS)); end; end; begin pp:=TranslateCoord(X,Y); UpdateFont; FPSUnicode.Font:=MappedFontName; FPSUnicode.FontSize:=Font.Size; FPSUnicode.FontStyle:=FontStyleToInt(Font.Style); //The Y origin for ps text it's Left bottom corner pp.fy := pp.fy - abs(Font.Size); // in points saved:=false; if fsUnderline in Font.Style then begin PenUnder:=0.5; if fsBold in Font.Style then PenUnder:=1.0; PosUnder:=(Abs(Round(Font.Size/3))*-1)+2; rotate(); Write(format('%f %f uli',[pp.fx,pp.fy],FFs)); FPSUnicode.OutputString(MapedString(Text)); write(Format('%.3f %d ule',[PenUnder,PosUnder],FFs)); end else begin write(Format('%f %f moveto',[pp.fx,pp.fy],FFs)); rotate(); FPSUnicode.OutputString(MapedString(Text)); end; if saved then begin write('grestore'); dec(fSaveCount); end; MoveToLastPos; end; function TPostScriptPrinterCanvas.TextExtent(const Text: string): TSize; Var IndexFont,i : Integer; FontName : string; c: Char; begin Result.cX := 0; Result.cY := 0; if Text='' then Exit; RequiredState([csHandleValid, csFontValid]); Result.cY:=round((Font.Size/72)*YDPI); // points to inches and then to pixels FontName:=MappedFontName; IndexFont:=0; //By default, use Courier metrics for i:=0 to High(cFontPSMetrics) do begin if cFontPSMetrics[i].Name=FontName then begin IndexFont:=i; Break; end; end; for i:=1 to Length(Text) do begin c:=Text[i]; if (c in [#32..#255]) then Inc(Result.cX,cFontPSMetrics[IndexFont].Widths[Ord(c)]); end; Result.cX:=Round(Result.cX*(Font.Size/72)*0.001*XDPI); end; //Draw an Picture procedure TPostScriptPrinterCanvas.Draw(X, Y: Integer; SrcGraphic: TGraphic); begin if not Assigned(SrcGraphic) then exit; StretchDraw(Rect(X,Y,X+SrcGraphic.Width,Y+SrcGraphic.Height),SrcGraphic); end; //Draw an picture with scale size procedure TPostScriptPrinterCanvas.StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); var X1,Y1,X2,Y2 : Integer; DrawWidth : single; DrawHeight: single; ImgWidth : Integer; ImgHeight : Integer; pp1,pp2:TpsPoint; begin if not Assigned(SrcGraphic) then exit; Changing; RequiredState([csHandleValid]); X1:=DestRect.Left; Y1:=DestRect.Top; X2:=DestRect.Right; Y2:=DestRect.Bottom; pp1:=TranslateCoord(X1,Y1); pp2:=TransLateCoord(X2,Y2); ImgWidth:=SrcGraphic.Width; ImgHeight:=SrcGraphic.Height; //if not FPImage then draw ab Rectangle because other wise PostScript //interpreter wait infinite some RGB datas DrawWidth:=pp2.fx-pp1.fx; DrawHeight:=pp1.fy-pp2.fy; ClearBuffer; WriteB('gsave'); WriteB('/DeviceRGB setcolorspace'); writeB(Format('%f %f translate',[pp1.fx,pp1.fy-DrawHeight],FFs)); WriteB(Format('%f %f scale',[DrawWidth,DrawHeight],FFs)); {$IFDEF ASCII85} WriteB('<<'); WriteB(' /ImageType 1'); WriteB(' /Width '+IntToStr(ImgWidth)); WriteB(' /Height '+IntToStr(ImgHeight)); WriteB(' /BitsPerComponent 8'); WriteB(' /Decode [0 1 0 1 0 1]'); WriteB(' /ImageMatrix '+Format('[%d %d %d %d %d %d]',[ImgWidth,0,0,-ImgHeight,0,ImgHeight])); WriteB(' /DataSource currentfile /ASCII85Decode filter'); WriteB('>>'); WriteB('image'); Write(fBuffer); ClearBuffer; GetRGBImage(SrcGraphic,fBuffer); {$ELSE} WriteB(Format('/scanline %d 3 mul string def',[ImgWidth])); // colorimage width height bits/comp matrix data0..dataN-1 multi? ncomp colorimage WriteB(Format('%d %d %d',[ImgWidth,ImgHeight,8])); WriteB(Format('[%d %d %d %d %d %d]',[ImgWidth,0,0,-ImgHeight,0,ImgHeight])); WriteB('{ currentfile scanline readhexstring pop } false 3'); WriteB('colorimage'); GetRGBImage(SrcGraphic,fBuffer); {$ENDIF} WriteB('% end of image data'); WriteB('grestore'); Write(fBuffer); Changed; end; procedure TPostScriptPrinterCanvas.Arc(x, y, Right, Bottom, SX, SY, EX, EY: Integer); begin //Not implemented end; procedure TPostScriptPrinterCanvas.Chord(Left, Top, Right, Bottom, angle1, angle2: Integer); var xScale : Real; yScale : Real; cX, cY : Real; rX,Ry : Real; Code : string; ang : string; pp1,pp2:TpsPoint; begin Changing; RequiredState([csHandleValid, csBrushValid, csPenValid]); writecomment(Format('Chord(%d,%d,%d,%d,%d,%d)',[Left,Top,Right,Bottom,Angle1,Angle2])); UpdateLineColor(clNone); UpdateLineWidth; UpdateLineStyle; pp1:=TranslateCoord(Left,Top); pp2:=TranslateCoord(Right,Bottom); //TranslateCoord(Right,Bottom); //calculate centre of ellipse cx:=(pp1.fx+pp2.fx)/2.0; cy:=(pp1.fy+pp2.fy)/2.0; rx:=abs((pp2.fx-pp1.fx)/2.0); ry:=abs((pp2.fy-pp1.fy)/2.0); if Angle2>=angle1 then Ang:='arc' else Ang:='arcn'; //calculate semi-minor and semi-major axes of ellipse xScale:=Abs(rx); yScale:=Abs(ry); Code:=Format('newpath matrix currentmatrix %.3f %.3f translate %.3f %.3f scale 0 0 1 %.3f %.3f %s setmatrix', [cX,cY,xScale,yScale,Angle1/16,Angle2/16,ang],FFs); //move current point to start of arc, note negative //angle because y increases down //ClearBuffer; // write(Format('newpath %.3f %.3f moveto',[cX+(rX*Cos((Angle1/16)*-1)),cY+(rY*Sin((Angle1/16)*-1))],FFs)); Write(Code); write('closepath fill'); //SetBrushFillPattern(False,True); //write('stroke'); MoveToLastPos; Changed; end; procedure TPostScriptPrinterCanvas.Chord(x1, y1, x2, y2, SX, SY, EX, EY: Integer); begin //Not implemented end; procedure TPostScriptPrinterCanvas.Frame3d(var ARect: TRect; const FrameWidth: integer; const Style: TGraphicsBevelCut); begin //Not implemented end; procedure TPostScriptPrinterCanvas.Pie(EllipseX1, EllipseY1, EllipseX2, EllipseY2, StartX, StartY, EndX, EndY: Integer); begin //Not implemented end; procedure TPostScriptPrinterCanvas.TextRect(ARect: TRect; X, Y: integer; const Text: string; const Style: TTextStyle); begin {$IFDEF VerboseLCLTodos}{$WARNING TPostScriptPrinterCanvas.TextRect is not yet fully implemented!}{$ENDIF} //TODO: clipping, layout, etc. TextOut(X,Y, Text); end; function IsMaxClip(ARect:TRect):boolean; begin Result:=(Arect.Right=MaxInt) and (ARect.Bottom=MaxInt) and (Arect.Left=0) and (ARect.Top=0); end; procedure TPostScriptPrinterCanvas.SetClipRect(const ARect:TRect); begin inherited SetClipRect(ARect); if (fSaveCount>0) then // restore original clipping begin Self.Write('grestore'); dec(fSaveCount); end; // if the rect is empty or max-possible - do not clip if (IsRectEmpty(ARect) or IsMaxClip(ARect)) then exit; // save PS state and clip UpdateLineWidth; UpdateLineColor; UpdateFillColor; UpdateFont; Self.Write('gsave'); Self.WriteComment('This is clip path'); inc(fSaveCount); Self.WriteB('[] 0 setdash'); psDrawRect(ARect); Self.WriteB('clip'); Self.WriteB('stroke'); Self.Write(fBuffer); // Self.MovetoLastpos; end; procedure TPostScriptPrinterCanvas.FloodFill(X, Y: Integer; FillColor: TColor; FillStyle: TFillStyle); begin //Not implemented end; procedure TPostScriptPrinterCanvas.CopyRect(const Dest: TRect; SrcCanvas: TCanvas; const Source: TRect); begin //Not implemented end; { TPostScriptCanvas } constructor TMonPostScriptCanvas.Create; begin Inherited Create(nil); end; procedure TMonPostScriptCanvas.BeginDoc; begin inherited BeginDoc; end; procedure TMonPostScriptCanvas.EndDoc; begin inherited EndDoc; end; procedure TMonPostScriptCanvas.NewPage; begin inherited NewPage; end; end. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/unit16.pas������������������������������������������������������������������������������0000750�0001750�0001750�00000004721�12247333133�014767� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit16; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, FileCtrl, LResources,LCLType, ComCtrls, EditBtn,UnitScaleFont, UChaines; type { TForm16 } TForm16 = class(TForm) BitBtn1: TBitBtn; DirectoryEdit1: TDirectoryEdit; DirectoryEdit2: TDirectoryEdit; DirectoryEdit3: TDirectoryEdit; GroupBox1: TGroupBox; rep1: TEdit; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var Form16: TForm16; implementation { TForm16 } procedure TForm16.BitBtn1Click(Sender: TObject); begin end; procedure TForm16.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TFORM16.BITBTN1.CAPTION'; :=rsOK; CAPTION :=rsConfiguratio2; GROUPBOX1.CAPTION :=rsRPertoireDIn; GROUPBOX2.CAPTION :=rsRPertoireDes; GROUPBOX3.CAPTION :=rsRPertoireDev; GROUPBOX4.CAPTION :=rsRPertoireDev2; end; procedure TForm16.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit16.lrs} end. �����������������������������������������������optgeo-2.21/Unitgpl.lfm�����������������������������������������������������������������������������0000750�0001750�0001750�00000000715�12247333133�015255� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object Formgpl: TFormgpl Left = 406 Height = 453 Top = 196 Width = 516 BorderStyle = bsDialog Caption = 'License GPL' ClientHeight = 453 ClientWidth = 516 Font.Height = -11 OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Memogpl: TMemo Left = 0 Height = 453 Top = 0 Width = 516 Align = alClient ReadOnly = True ScrollBars = ssAutoBoth TabOrder = 0 end end ���������������������������������������������������optgeo-2.21/saisiemp.lfm����������������������������������������������������������������������������0000750�0001750�0001750�00000042221�12247333133�015443� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object saisiemiroirplan: Tsaisiemiroirplan Left = 680 Height = 270 Top = 362 Width = 497 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un miroir plan' ClientHeight = 270 ClientWidth = 497 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '1.0.10.0' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 000000000000000080000080000000808000800000008000800080800000C0C0 C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0F0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF0FF 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000000000FFF0FF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00000000000FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFF00FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000F00000000FFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00 000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF00000000F00FFFF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0000000 00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00000000FFFF00FFFF00FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFF00000000FFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000000FF00 FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF000000000FFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFF00000000FFFF00FFFF00FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF F00000000FFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00000000FF00FFFF00FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF0000 000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFF00000000FFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF00000000F FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF00000000FF00FFFF00FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0000000000FFFF 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFF00000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFF00 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF0 0000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFF00FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F00 FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF00000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F00FFFF00FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF00000000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFF00 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF00000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000 000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF00000000FFFF00FFFFFFFFFFFFF000000FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FF FFFFFFFFFFF0FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFFFFFFFFFFFF0FFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF00000000F00FFFF00FFFFFFFFF0FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFF FFFFFF0FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFF0FFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 000000FFFF00FFFFFFFFFFFF0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFF 0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00000000FF00FFFFFFF0FFFF0FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000 0F00FFFFFFF0FFF0FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFF000FFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF00000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 0 Height = 129 Top = 104 Width = 129 Caption = 'Couleur à l''écran' ClientHeight = 107 ClientWidth = 125 TabOrder = 0 object Colorgrid1: TColorBox Left = 13 Height = 22 Top = 32 Width = 85 ItemHeight = 16 TabOrder = 0 end end object GroupBox2: TGroupBox Left = 136 Height = 57 Top = 176 Width = 121 Caption = 'Aspect' ClientHeight = 35 ClientWidth = 117 TabOrder = 1 object cochehachures: TCheckBox Left = 22 Height = 24 Top = 16 Width = 85 Caption = 'Hachures' Checked = True State = cbChecked TabOrder = 0 end end object GroupBox3: TGroupBox Left = 136 Height = 65 Top = 104 Width = 193 Caption = 'Epaisseur trait à l''écran' ClientHeight = 43 ClientWidth = 189 TabOrder = 2 object editepaisseur: TSpinEdit Left = 22 Height = 28 Top = 8 Width = 49 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 104 Height = 97 Top = 0 Width = 185 Caption = 'Point 1' ClientHeight = 75 ClientWidth = 181 TabOrder = 3 object StaticText1: TLabel Left = 8 Height = 21 Top = 16 Width = 18 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 21 Top = 56 Width = 18 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 21 Top = 16 Width = 31 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 21 Top = 56 Width = 31 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 28 Top = 16 Width = 97 TabOrder = 1 end object edity1: TEdit Left = 24 Height = 28 Top = 56 Width = 97 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 296 Height = 97 Top = 0 Width = 185 Caption = 'Point 2' ClientHeight = 75 ClientWidth = 181 TabOrder = 4 object StaticText3: TLabel Left = 8 Height = 21 Top = 16 Width = 18 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 21 Top = 56 Width = 18 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 21 Top = 16 Width = 31 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 21 Top = 56 Width = 31 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 28 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 28 Top = 56 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 240 Width = 481 Caption = 'Supprimer ce miroir' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 5 end object BitBtn1: TBitBtn Left = 272 Height = 65 Top = 168 Width = 216 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 6 end object BitBtn2: TBitBtn Left = 337 Height = 56 Top = 104 Width = 152 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 7 end end �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/unit17b.lfm�����������������������������������������������������������������������������0000750�0001750�0001750�00000002435�12247333133�015125� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object splashscreen: Tsplashscreen Left = 368 Height = 284 Top = 82 Width = 653 BorderIcons = [] BorderStyle = bsNone Caption = 'splashscreen' ClientHeight = 284 ClientWidth = 653 Color = clAqua FormStyle = fsSplash OnCreate = FormCreate OnShow = FormShow ParentFont = True LCLVersion = '1.0.10.0' object Label1: TLabel Left = 176 Height = 63 Top = 32 Width = 288 Caption = 'Dozzzaqueux' Font.Color = clFuchsia Font.Height = -46 Font.Style = [fsBold] ParentColor = False ParentFont = False end object Label2: TLabel Left = 40 Height = 31 Top = 120 Width = 549 Caption = 'Logiciel libre et gratuit de simulation de courbes de dosage' Font.Color = clGreen Font.Height = -21 ParentColor = False ParentFont = False end object Label3: TLabel Left = 200 Height = 21 Top = 168 Width = 303 Caption = 'Version 3.04 du 10/08/2009, codée en Lazarus' ParentColor = False end object Label4: TLabel Left = 208 Height = 21 Top = 216 Width = 261 Caption = 'Par Jean-Marie Biansan, 2005 à 2009' Font.Color = clRed Font.Style = [fsBold] ParentColor = False ParentFont = False end end �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/aide/�����������������������������������������������������������������������������������0000750�0001750�0001750�00000000000�12247340361�014030� 5����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/aide/en/��������������������������������������������������������������������������������0000750�0001750�0001750�00000000000�12247340361�014432� 5����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/aide/en/lecgrand.gif��������������������������������������������������������������������0000750�0001750�0001750�00000004321�11446464773�016721� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a2%�����������������������!�����,����2%��H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nq�+_μУKN�az| ~ym~{槝7�Z`Z x &QhQڃY(BaifaGz8{x)^Gh7HPYn<T>*4$gGS.�BT#lu(%e[Oxb%dgMafco~WcJq*V'pwD%|/Q( ~^4(I{iۡɨ@RM imΖ)E޴^T;WDiOj2iڦRGkJޮzjrZ, MjTf,C>[UNˡLjm&[}{.ٖ2(j?ZX>)RofpWO#t\."=2\+ZŏEK_+vŚ5w 5+r,"<2M3CUs/OS|(#v.Ni7,4N '.g'sd4P#abԠ]T~^,t6&.=X<ڬІ]-jm҄fhJ(ӍjdN߂םZnS*Q_x7Șj9BAn8`t?N/铃z=;NZ>nԸ[n[-ܞVΈ<㈬чm;{;z=P>{;P볉=c_/Vn뛙*?/ЀK@1/b`. lSv!<\4h+~, & ,& K GAD Vv9!ސ*?T JɅ_C!'q6Kb>UF0s޸75)ZKd" 4'c" 'Fi#+:QQz<}ҨF2*NW⪕Jƨ2nW[֦X RY#7IqK{%t[*}ʮd$,g)ZB2e.mJ]d0q]/ Lb2Lf,4Is&6LnBS*yJrjs,�7JmyOuQ#d F>>KDS$ VV+ "&yF)PZ2ڿn {$--rEG+,fit*lNQ�#,"EֹiŴ$?{)ljCtWH:Ӎ ʔEHDD Ղ*~fH&tJWEJ±tga_V.i*zQ .I+܊WG[r-xO YZ!_%:)c%Vmb?Њ )gVڨI浸'+۱Vpm x# \[\ҹet6ao vWnY˥jEw[u.TŮ@77ojVì>y_MC/'+pL>ȃ}660ze<<ORoCw0ţ])"JWgMկ|,[5/Ekr0Y;QU<'m-^U[d(GKʲʼveYM-2Ng6d~gǬ~˪3g= bk<y;" Bjr:Hs41CAJSVk-->ґ&Oj=Ҥ$^'T+?XZ^ $lPUm97Xr̾4lg'vіdmBٶ,{kS6ɽo+ ݷոg%۪m.}C;nެ|#w^Zx/Ȍk\w Q߄q$~_KZ0gN.yplб6HOҗ;PԧN[XϺַ{`NhOpNxϻ@�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������optgeo-2.21/aide/en/opgrand.gif���������������������������������������������������������������������0000750�0001750�0001750�00000000740�11446464773�016575� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89ad�d������������������������!�����,����d�d���H*\ȰÇ#Hŋ'bȱcF CV(I$O<rK-_>�SfÚ*5Ƥɳϟ@ J(я*]ʴ)S)JJhҌUj*p͛_kz5,OdMVf[oW m]sK[w/߻ 얰aU81c;r2厖/o̬"#A,"OE=ӦjtK^-z6ζo_έ2ognNȇNμЛJd 7ڱfm5wa.fݕ|a/ÓWx9Ǘo=j/?v"נqSoY8|fe^wYgX[9`ީ%qc`ct5&b."EX1虒!LF)�;��������������������������������optgeo-2.21/aide/en/diaphragme.html�����������������������������������������������������������������0000750�0001750�0001750�00000067056�11446464773�017460� 0����������������������������������������������������������������������������������������������������ustar �georgesk������������������������georgesk���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Diaphragme Diaphragme à iris
 


Définition

Il est défini à la souris par les points C (centre du diaphragme), 1 (bord intérieur) et 2 (bord extérieur). Le trou central est évidemment transparent, le reste du diaphragme est aborbant sur ses deux faces.

Le diaphragme peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le centre, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Diaphragme".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant l'écran à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Quand on est en mode déplacement, on peut:
- translater le diaphragme
- changer son orientation et sa taille extérieure en utilisant les points extrèmes
- changer son rayon intérieur (ouverture du diaphragme) en utilisant les points intérieurs

Retour à la page  d'accueil





Aide de Optgéo

OptGéo, version 1.10

Logiciel de simulation d'optique géométrique à deux dimensions


I Fonctionnement du logiciel

Présentation

Remarque importante: utilisation de la souris

Comment...

                ...ajouter un  élément ou une source

                ...déplacer un élément ou une source

                ...modifier un élément ou  une source

                ...supprimer un élément ou une source

              ...dupliquer un élément ou une source

               ...annuler une opération en cours

             ...grouper des éléments


Options


Préférences (menu Fichier)


II Propriétés des divers éléments optiques

                1) Les sources lumineuses

                                            Rayon unique

                                            Source ponctuelle

                                            Onde plane

                2) Miroirs

                                            Miroir plan

                                            Miroir sphérique convexe idéal

                                            Miroir sphérique concave idéal

                                            Miroir sphérique convexe réel

                                            Miroir sphérique concave réel

                                            Miroir elliptique; parabolique; hyperbolique

                                            Lame semi-réfléchissante

            3) Régions réfractantes

                                            Lentille mince convergente idéale

                                            Lentille mince divergente idéale

                                            Lentille quelconque

                                            Sphère réfractante

                                            Polygône réfractant (dont: prisme, lame, etc...)

                                            Polycercle réfractant

            4) Surfaces absorbantes ou transparentes

                                            Ecran

                                            Diaphragme à iris

                                            Oeil stylisé


Présentation
 Après avoir choisi les dimensions de son espace de travail, on dépose sur celui ci des miroirs (plans, sphériques, paraboliques, hyperboliques, elliptiques), des lentilles (minces ou épaisses),  des volumes réfractants (sphères, prismes, lames, polyhèdres), des éléments divers (écrans, diaphragmes, lames semi-réfléchissantes), ainsi que des sources (ponctuelles réelles, ponctuelles virtuelles, ondes planes, rayons uniques). Optgéo trace les rayons lumineux., en utilisant les lois de Descartes. On peut aussi, dans certains cas, tracer des surfaces d'onde.
Le répertoire "exemples" contient un certain nombre de simulations toutes faites.

Haut de la page


 


Remarque importante: utilisaton de la souris
 Un élément optique est repéré par au moins 2 points. Lors de la saisie de l'élément à la souris, il ne faut pas maintenir le bouton de la souris enfoncé entre 2 points; pour un miroir plan par exemple, on fait un clic simple à l'endroit où doit se situer le 1er bord du miroir, on relâche le bouton, on va à l'endroit où doit se situer le 2ème bord, on clique et on relâche.

Remarque: pour placer 2 points consécutifs sur une même horizontale, faire un clic simple pour le premier point, puis enfoncer la touche "Ctrl" du clavier, la maintenir enfoncée, faire le clic simple pour le second point, puis relâcher la touche "Ctrl". Pour les placer sur une même verticale, même procédure avec la touche "Alt".

Haut de la page


 



Ajouter un  élément ou une source
 Pour chaque élément, il existe 2 méthodes d'ajout: à la souris, et au clavier. La saisie à la souris permet une saisie rapide, mais certaines propriétés de l'élément déposé ont des valeur standarts. La saisie au clavier est plus longue mais permet de régler tous les paramètres. On peut aussi utiliser les 2 méthodes: saisie rapide à la souris, puis modification des propriétés au clavier.

    Pour saisir à la souris: il suffit de cliquer sur l'icône de l'élément dans la barre d'outil, puis de saisir les différentes points: voir remarque importante sur l'utilisation de la souris.

    Pour saisir au clavier, il faut passer par le menu ajouter.


Remarque: obtention de miroirs troués: il peut être utile dans certains cas de trouer les miroirs sphériques en leur centre (combinaisons optiques de certains téléscopes par exemple); pour cela, commencer par ajouter un miroir normal; puis modifier le miroir, et choisir dans la boite des propriétés du miroir de le trouer et la taille du trou.

Haut de la page


 


Déplacer un élément ou une source
 Cliquez sur le bouton "Déplacer" dans la barre d'outil, ou passer par le menu "Edition" puis "Déplacement d'un élément" . Il apparaît un certain nombre de cercles bleus, de croix vertes, et éventuellement de croix cyan sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant les opérations possibles. Il est ainsi possible de translater un élément (croix verte), de faire bouger un point sans faire bouger les autres (cercles bleus) (le curseur indique "rotation", bien que le terme soit impropre, le déplacement permettant aussi une dilatation ou rétraction de l'élément), de déplacer un centre de courbure ou un foyer (croix cyan).
La méthode est la suivante: lorsque le curseur a la forme désiré, on clique et on relâche; on déplace la souris jusqu'à destination, on clique et on relâche; l'élément est redessiné "en direct" au fur et à mesure du déplacement.


Déplacement vertical: enfoncer la touche « Alt » et la maintenir enfoncée; cliquer sur le point à déplacer; l'amener à la position voulue, cliquer pour le poser, et relâcher enfin la touche « Alt ».

Déplacement horizontal: enfoncer la touche « Ctrl » et la maintenir enfoncée; cliquer sur le point à déplacer; l'amener à la position voulue, cliquer pour le poser, et relâcher enfin la touche « Ctrl ».


Important: une fois les modification effectuées, il faut cliquer sur le bouton "Fin Dépl." de la barre d'outil pour revenir en mode normal.

Haut de la page


 


Modifier un élément ou  une source
 Cliquez sur le bouton "Propriétés" dans la barre d'outil, ou passer par le menu "Edition" puis "Propriétés d'un élément" . Il apparaît un certain nombre de cercles bleus sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant "Propriétés: clic". Un clic simple  lance alors l'ouverture de la fenêtre de propriétés de l'élément considéré. (c'est la même fenêtre que lors d'un ajout  d'élément par le menu "Ajout").  On valide les modifications dans la fenêtre par le bouton "OK" ou on abandonne.
Important: une fois les modification effectuées, il faut cliquer sur le bouton "Fin prop." de la barre d'outil pour revenir en mode normal.

Haut de la page


 


Supprimer un élément ou une source
 Cliquez sur le bouton "Supprimer" dans la barre d'outil, ou passer par le menu "Edition" puis "Suppression d'un élément" . Il apparait un certain nombre de cercles rouges sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, prenant la forme d'un marteau. Un clic simple permet, après demande de confirmation, de supprimer l'élément correspondant.
Une fois la suppression effectuée, le logiciel quitte automatiquement le mode suppression. Si en fin de compte on ne veut rien supprimer, il faut cliquer sur le bouton "Fin suppr." dans la barre d'outil.

Remarque : si on veut repartir d'une simulation vierge, passer par le menu "Fichier", puis "Nouvelle simulation".

Haut de la page


 
Grouper des éléments

On peut grouper des éléments afin de pouvoir les translater ensemble.
        - Premiére méthode: cliquer sur le bouton "Gr." de la barre d'outil; sur chacun des éléments présents dans la simulation aparaît une croix violette; il suffit de cliquer sur cette croix pour ajouter l'élément au groupe; une boîte de dialogue confirme l'ajout de l'élément; une fois tous les éléments souhaités ajoutés, cliquer sur le bouton "Fin". Une boîte de diaogue confirme la création du groupe.
       - Deuxième méthode: menu "Edition" puis "Grouper des éléments" puis "Tous les éléments" ou "Eléments à choisir". Dans le second cas, la saisie des éléments à ajouter se fait comme dans la première méthode. Dans le premier cas, un groupe est créé qui contient tous les éléments présents.

Déplacement d'un groupe: cliquer sur la bouton "Déplacer"; le groupe est représenté par une croix verte et des lettres "Gr"; on peut alors le déplacer comme pour un élément classique. Ce point est l'isobarycentre des points caractéristiques des éléments constitutifs du groupe.

Destruction d'un groupe: comme pour les autres éléments.
 

Haut de la page


 
Dupliquer un élément ou une source
 Cliquez sur le bouton "Dupliquer" dans la barre d'outil, ou passer par le menu "Edition" puis "Dupliquer un élément" . Il apparait un certain nombre de cercles bleus sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme. Un clic simple permet alors de dupliquer l'élément correspondant.
Une fois la duplication effectuée, le logiciel quitte automatiquement le mode duplication. Si en fin de compte on ne veut rien dupliquer, il faut cliquer sur le bouton "Fin dupl." dans la barre d'outil.
 
 


Haut de la page


Annuler une opération en cours

Pour annuler l'opération en cours, appuyer sur la touche 'Esc' du clavier alors que le curseur est au-dessus de l'espace de travail.

Haut de la page


Options

Grille

On peut utiliser une grille pour le repérage des points et/ou leurs saisie. Pour cela, passer par le menu "Options".
Si "Attraction de la grille" est coché, lors de la saisie d'un point, c'est le point le plus proche appartenant à la grille qui est validé. Ceci est vrai lors de l'ajout d'éléments et lors de leur translation.
Dans certaines situations, l'attraction n'est pas appliquée; c'est le cas par exemple lors de la saisie du foyer d'une lentille: les bords de la lentille étant déjà choisis, l'axe focal est imposé, et le foyer ne peut pas être placé forcément sur un point de la grille.
L'affichage de la grille peut être activé directement par la case à cocher "Afficher la grille" dans la barre d'outil.

Normales

On peut demander à ce que les normales aux dioptres et aux miroirs soient affichées. Pour cela, passer par le menu "Options" puis "Afficher les normales", ou par la case à cocher "Afficher les normales" dans la barre d'outil. Un paramétrage plus fin du tracé peut être obtenu par le menu "Options", puis "Options des normales".
On peut aussi demander à ce que les angles d'incidence et de réfraction soient affichés, soit par le menu "Options" puis "Afficher les angles", soit par la case à cocher "Afficher les angles d'incidence et de réfraction" dans la barre d'outil.
Remarques: 1) l'option affichage des angles impose l'option affichage des normales
              2) les valeurs des angles sont données en °; le nombre de décimales affichées peut être réglé en passant par  le menu "Options" puis "Options des normales".
               3) pour les élément optiques  "idéalisés" (lentilles minces, miroirs sphériques paraxiaux), les normales et angles ne sont pas tracés, puisque la représentation symbolique des ces éléments en gomme la forme réelle.

Association des fichiers .opt avec OptGeo

Si on choisit d'associer les fichiers de simulation .opt avec OptGeo, un double-clic sur un fichier .opt suffira pour l'ouvrir. L'installateur ne force pas ce choix,  vous êtes libre d'utiliser ou pas cette possibilité.
 

Couleur de fond

Permet de changer la couleur de fond de la simulation.

Haut de la page


Préférences
 
  Permet de choisir les attributs par défaut des éléments à la création (couleur, épaisseur, police...).
 
 
 
 
 
 
 
 
 
 
 
 
 

optgeo-2.21/aide/en/Materiaux.html0000750000175000017500000000314511446464773017303 0ustar georgeskgeorgesk Modification liste matériaux Modification de la liste des matériaux proposés

Attention, n'effectuez cette manipulation que si c'est nécessaire et que vous êtes sûr de ce que vous faites !

La liste des matériaux et de leurs indices est stockée dans le fichier "listen.lst", qui est situé dans le repertoire d'installation de OptGeo. C'est un fichier texte que vous pouvez éditer par exemple avec le bloc-notes de Windows. Pour chaque matériau, il y a 4 lignes: une pour le nom du matériau, une pour la valeur de l'indice à la longueur d'onde de 486,1nm, une pour la valeur de l'indice à la longueur d'onde de 587,6nm, une pour la valeur de l'indice à la longueur d'onde de 656,3nm. Vous pouvez les modifier, en supprimer, en rajouter, à condition de respecter cette structure. Pour les valeurs d'indice, la virgule décimale doit être représentée par un point, à la mode anglo-saxonne.

Si jamais vous perdiez corps et biens ce fichier, il existe une copie de sauvagarde, nommée "listen.sau", située dans le répertoire d'installation de OptGeo.
optgeo-2.21/aide/en/msceregrand.gif0000750000175000017500000000111211446464773017427 0ustar georgeskgeorgeskGIF89add!,ddHPÇ#JXB )jG CvI#Đ(-\RJ)Eɘ4sNaL:POBi"E(ϤBl'TVf\կK'ϬeV8VۭUۺ\iƕ+ܸ}7pԧMLVo]njRY0`)cvsУ=wlYJQ|y5s}z1ma8Ynܾ-$⣏#7 zy΁NQ9֋~,iݧ~G`hw5w7sM}~S{R_CUgy#|9o h\~I(x!xtr![g EZ,ek@hbET/Xڏ#u{DbcZPf#w IdkRw_^eءiTۘB.yP^=[hIwC}i\z!yu1EԌEi}-מIՕF =rꜦf;optgeo-2.21/aide/en/reseau.html0000750000175000017500000000320712246464400016611 0ustar georgeskgeorgesk reseau Rseau diffractant 

    


Dfinition

Il est dfini   la souris par les extrmits 1 et 2
Une boite de dialogue permet ensuite de choisir
- si c'est un rseau en transmission ou en rflexion
- le nombre de trait par mm
- les ordres reprsentables


Remarques

Cet objet relve de l'optique ondulatoire.
IL est utilis ici de la faon suivante: un rayon incident correspondent plusieurs rayons diffracts, dont les directions sont donnes par la loi fondamentale des rseaux:
sin i -sin i0=k.longueur d'onde /pas en transmission
sin i sin i0=k.longueur d'onde /pas en rflexion

Mais cela n'a clairement de sens que pour une onde plane, et une observation l'inifini de l'onde diffract.

Retour la page  d'accueil













optgeo-2.21/aide/en/coniquegrand.gif0000750000175000017500000000344011446464773017622 0ustar georgeskgeorgeskGIF89a&333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,& H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8Wؙϟ8  ѣ%EʴӊJF}JUWjs֯`{z Kʩcͪ]-۷UʝKEii܉] 7d=3㚇a6~LY䙇V7rP͜CC,\Գ M#A9/vYu״[:;7\d{6 `;}U6wz?O/hwvK%FȨǽk>?cmawl??[m}SZBGB .QbUeZnQə#"eB.7㉨x:_J=Q'IB YI6Ne~4TEVfIەy)}ccZ&S$ۚm pru>yV@JX盠4Mf5e-$i֥vfZzaywꤥ{ujzHk]޺wzdlaZ|Ɩ,ˎxRjcFK*u~jvvwb른榘.讛*hK+7˯˦c+p 06pb> 1lJy|߲l.'r̉L7;r@,3;jBkDݢH'/N iO3ʴnT_-9r-^YJJv]ڕlw)oMw{ͤdwRD".8Jt^܏CNy J^cߞ[.vENzyK]z'{-{n:;#_/`jS_bͽ,5ؽ׌??:`7,_C3]V/qz?o@* "AHTKAp&T0^ 2e(y RB)'ȀZ0̆,a w`;optgeo-2.21/aide/en/optgeo.gif0000750000175000017500000000625011446464774016443 0ustar georgeskgeorgeskGIF89azz333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,zz H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣHYXʴ@ҧP&mTիXsR]ׯ&Kىb]˶Tʝw7^LX_y^ḉ6L޷ ^̹ś3iV|k_˞06۸1CONOμ>Nؿ^~O~ӫ_^,zCgOyዖ_޾[wR|``6(~ iV4!kvxaf j$z=`hH`h !Zc6B9RDʐb iH&id]DFJ2Y IVTvyŗeBUFV#7Иhv(f I`M٩'i{I' J(hW聇>Zf馜n*V*j:jꪩ)JVi \|K&ħnpJCIf  $AÚ-fC{&Љ;Cz"ܩCy.6F_}ʦrd0U'Y^V%|Yl(ǔy\1"Krc&{#:n,l4fͯLmXIc]\5#2lj[ʽp,m-z8v [Wሧ{G7~,+-yxL9SyZa[zr zs\n/o'7G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HLD@a*&]H8ŖUIX'n1"EE 2o!2%F0$v"2E:я7-Qu|G0qwTIQ8FiFzdVcHLⓝX>?n415"O$- @ c.4!^ fCijNSlfrɩcS!u<0Gg2Z""9vBdH3h>ִ@FEoS¹kJ!dJrzS"9Kkrt&)'Ѕ 1-ϩ-/%UJzѕ |ChʇdI,EŦ? Kd<ŹM|~ܼS׶HNBhΚIzR h?=-ĪTQ23e ')d^>厺:Ԭ +[j}ҬdMʶs}5,:I˦%g?CjWISql]jUEgRW Pf+dgYRᒲ)Au5 *BԈZE,%5p)JR|yR~3 OJ_m"FQ wQ#lLlDg)䢗Fp+'GX`X9G6/pHh6R,(Z#LdbD8MNb$d8F 27C6dV6x(?Wϐ-fnc"׬L]:ޗ.`-Z?!(n69\.BTu.J})ɭk.{J4liz׃:nŝz(G!JU>z蔵O"w# ^K˹\'^uwwtYq`It7*yv49' t:on%3 [IUeY*#M[;8Q^F!o2W~Xgir3rc`"6Ll :"f4B<4/ ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:;optgeo-2.21/aide/en/sphere.html0000750000175000017500000001043211446464774016630 0ustar georgeskgeorgesk Sphère réfractante

   


Définition

Elle est définie par le centre C, le rayon R, et les indices de réfraction.

La sphère peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le centre, puis en faisant un clic simple quand la bonne taille est atteinte.
OU
- menu "Ajouter" puis "Système optique réel" puis "Sphère réfractante". On donne alors les coordonnées du centre, et la valeur du rayon.


Options

On peut imposer
- la couleur à l'écran de la pshère
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec cette sphère:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil









optgeo-2.21/aide/en/mscopagrand.gif0000750000175000017500000000102711446464773017440 0ustar georgeskgeorgeskGIF89add!,ddH PÇ#JhaC3jhCCǁ&G\Ô YYə83ִgΟ$]* hώ44hJJJmgԩR&EkE0jVh =6֫m" Yuś7۾]r$[…"w1SK+Õ<`3)y4ƦYBƜ:֪/5mמ#z7nž37k{#Xz9k=awE5?nNˮ.q5vʱn\یOu GeA_[S"X>(߂l\| %anA ~xw":%^_yw".b,g+H~8h!| Miroir plan




Définition

Il est défini par les points 1 et 2. L'ordre de ces points est important, car il définit quelle est la face réfléchissante, l'autre étant absorbante, comme sur l'image ci-dessus.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Miroir plan".


Options

On peut imposer
-que les hachures soient tracées ou non à l'écran
-l'épaisseur et la couleur du trait représentant le miroir à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce miroir:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil





optgeo-2.21/aide/en/mpgrand.gif0000750000175000017500000000101011446464773016562 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋhG5~IRaH%S~}ɷ|{s:\q5%XaX|Z y Ak_~6`*x߇"]2Gc7Hi_э#X?"ޅe[rV^c2Vg kfp);optgeo-2.21/aide/en/sponct.html0000750000175000017500000001342711446464774016657 0ustar georgeskgeorgesk

Source ponctuelle (réelle ou virtuelle)


                   ou                            



Définition

Elle est définie par les points S, 1 et 2, et par le nombre de rayons lumineux composant le faisceau.L'ordre des points 1 et 2 n'est pas indifférent: les rayons sont émis entre S-1 et S-2 dans le sens trigo direct.

La source peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le point source S, puis en faisant un clic simple pour saisir le point 1, puis en faisant un clic simple pour saisir le point 2 (ne pas maintenir le bouton de la souris enfoncé entre les deux points); et enfin en donnant dans la boite de saisie qui s'ouvre alors, le nombre de rayons composant le faisceau.
OU
- menu "Ajouter" puis "Source" puis "Objet ponctuel réel ou virtuel".



Options

On peut imposer
-l'épaisseur du trait représentant les rayons à l'écran

- la couleur des rayons; ce n'est pas simplement la couleur représentée à l'écran, mais aussi la couleur qui détermine l'indice de réfraction pour les milieux réfractants dispersifs; un rayon de lumière blanche est composé de trois rayons rouge, vert et bleu.

- le nombre maximal de rayons enfants; lorsque le rayon arrive sur un dioptre, il donne en général naissance à un rayon réfléchi et à un rayon transmis; le rayon réfléchi est appelé ici "rayon enfant" (sauf dans le cas de la lame semi-réfléchissante idéale); par défaut, le nombre maximal d'enfants est de 10. Remarque: un enfant peut avoir lui aussi des enfants, mais son nombre maximal d'enfant est celui de son rayon parent diminué de 1. Le nomre de rayons enfant s'applique à chacun des rayons composant le faisceau.

- le fait qu'il existe ou pas un rayon réfléchi en plus du rayon réfracté est une propriété de chaque élément réfractant

- si il n'y a pas de réfraction (angle d'indicence plus grand que l'angle limite), le rayon réfléchi est un rayon simple, pas un enfant



- on peut demander à ce que les prolongements des différents segments qui composent le trajet d'un rayon soient tracés en pointillés, vers l'avant ou vers l'arrière, et ce pour chacun de rayons qui composent le faisceau; il suffit de préciser la liste des segments concernés (segments numérotés dans l'ordre de propagation du rayon); ainsi, si le cheminement du rayon est le suivant:

et qu'on demande le prolongement (1,2,4) vers l'avant et (3,4) vers l'arrière,
alors on obtient:




- Tracé des surfaces d'onde: dans le cas d'une source réelle, on peut demander le tracé de surfaces d'onde; il suffit d'indiquer la valeur du chemin optique pour lequel on veut effectuer le tracé. Cela ne reléve pas vraiment de l'optique géométrique, mais on ne paye pas plus cher...
A noter que pour que le tracé soit pris en compte, la simulation ne doit comporter ni miroir sphérique paraxial, ni lentille mince paraxiale; ces éléments sont en effet des idéalisations, schématisées par des surfaces planes alors qu'ils sont en réalité sphériques, et on ne peut pas calculer les chemins optiques correctement dans ce cas. Mais rien n'empêche d'utiliser miroir sphérique réel et lentille réelle...



Ces propriétés peuvent être rendues accessibles:
- à la construction du rayon si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil










optgeo-2.21/aide/en/sponctvgrand.gif0000750000175000017500000000101511446464774017650 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0c `&̚6[N5ySCC#4џLBu`)Ŧ&UTE>k̰>ue[oݮM\uUe7a_d \޻ .F78ӰV.2'++ f>[5dY-cm;4H{WpqO.0?fxvƞ]WB^ϣy=]b{-Xμwlsws (o Ǖ z)5[yq_xaI!ZW]VU}""`$DW##3݈l#S/UG>dvCrXByQ >)tWf\Rm\5Z-!J)G٦|ri;optgeo-2.21/aide/en/gouttegrande.gif0000750000175000017500000000122511446464773017632 0ustar georgeskgeorgeskGIF89add!,ddH(\ȰC#JH3fȱGC"K06Tqd B6͚-{߈GF h_.X6lqv6ضS]Yvk5I?>|7=3g-zh_K[N膉u=~U_2{זv7ٱG>RT7}鷞 N߃"UzB_~X}e(U5!bL4ry}@#^Xa!ȍ &U$4bI|ɠy8e`8ji ד5V'eXKYk^əqc[wh9~mڹYv_CƧs"Y(l=]M)_ˆhJz`2bl2 (n^DBFkz񺫯RQH.K:;)HRKh(g*,m;optgeo-2.21/aide/en/segment2.gif0000750000175000017500000000465511446464774016701 0ustar georgeskgeorgeskGIF89a333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟJѣH*)tӧPJJugӪXjʵׯ`ÊKٳhӪ]˶۷p]yuݻx꭫߿ LÈ+^̸ǐ#KLe/kmΠCyӨS^ͺװc˞M6Ҷs]7[~v87OμУK%[~P;w.~OϾởO㷩E` HCX `7a]B nHjbHE&x۹H#g6ވP:FcAun?IPF&J6)P7QE%]Y%[Znٛu d&fh؟iܙnBgt6w֩VȦ"#j衈&iI((=tI H^馜vzz**:jCK?*2JkA֪IJحRSZlڪձu&(AfJ+,M^+PQrnmŅѸQk.^DB*tsiooKp\ װ0MLZ|qPjLyy #Hrm'%5o-|ʲ,sw\Ͱ|s>":4zMK+t=3ҁI-Tuh[[e85bge]fS $۔Mܞ#3=Yx|߀9'|t+3.7ΑΪ[yu袗鞧n鬫z뫻N:ˎzמ.([!x/cO|0?8}/v}{=X^yb {GO媇>ׯF^Z>PI4 ǐ$2ZFvtpQq`mZS%Bv΀$laeꈆJ _pE#Dс-<"u%B%ct"Zl80\=*-_ӢYx)2EeAeƱqi{#AQ0?I43R<{;6@2VR§)|RErH+~"JZ1>J5ML?$'7eÆ9Ȕ3E 2De<˖̒Sue bBfĔ^Hffg3 n')\d6yups*[NĜޫa; gu2a'Dy)aL[89ϏSgA#S K Q4CL;H]'(9yj_%ӚDzTJ,مNjɘ"EkiJӜO+MȜ,\QoY1Sk2U*UtWMHIuHg5&T!hodJuv[WytͫWε[D+b2XdӘvk,X'kreg5кѴ"-jWֺVlǩيZɶͭnw޾epoMr?܋|tKZ)ݨp xK^|F9/z/:+_з8/~Op)NV#'L [ ;optgeo-2.21/aide/en/optgeo.html0000750000175000017500000006311712246464517016641 0ustar georgeskgeorgesk Aide de Optgo

OptGo, version 2.20

Logiciel de simulation d'optique gomtrique deux dimensions

Ce logiciel  but ducatif est disponible sous license GNU General Public License, dont une copie est fournie avec la distribution. Vous pouvez donc librement l'utiliser, en faire des copies, et le modifier ( condition de respecter la license). Le code source est disponible sur le site de l'auteur.

Et si vous trouvez OptGeo utile, envoyez moi un petit courriel, a fait toujours plaisir !


I Fonctionnement du logiciel

Prsentation

Remarque importante: utilisation de la souris

Comment...

                ...ajouter un  lment ou une source

                ...dplacer un lment ou une source

                ...modifier un lment ou  une source

                ...supprimer un lment ou une source

              ...dupliquer un lment ou une source

               ...annuler une opration en cours

             ...grouper des lments

              ...annuler les dernires actions
Options


Prfrences (menu Fichier)


II Proprits des divers lments optiques

                1) Les sources lumineuses

                                            Rayon unique

                                            Source ponctuelle

                                            Onde plane

                2) Miroirs

                                            Miroir plan

                                            Miroir sphrique convexe idal

                                            Miroir sphrique concave idal

                                            Miroir sphrique convexe rel

                                            Miroir sphrique concave rel

                                            Miroir elliptique; parabolique; hyperbolique

                                            Lame semi-rflchissante

            3) Rgions rfractantes

                                            Lentille mince convergente idale

                                            Lentille mince divergente idale

                                            Lentille quelconque

                                            Sphre rfractante

                                            Polygne rfractant (dont: prisme, lame, etc...)

                                            Polycercle rfractant

                                            Prisme rfractant

            4) Surfaces absorbantes ou transparentes

                                            Ecran

                                            Diaphragme iris

                                            Oeil stylis

            5) Surface diffractante

                                            Rseau de diffraction


Prsentation
 Aprs avoir choisi les dimensions de son espace de travail, on dpose sur celui ci des miroirs (plans, sphriques, paraboliques, hyperboliques, elliptiques), des lentilles (minces ou paisses),  des volumes rfractants (sphres, prismes, lames, polyhdres), des lments divers (crans, diaphragmes, lames semi-rflchissantes), ainsi que des sources (ponctuelles relles, ponctuelles virtuelles, ondes planes, rayons uniques). Optgo trace les rayons lumineux., en utilisant les lois de Descartes. On peut aussi, dans certains cas, tracer des surfaces d'onde.
Le rpertoire "exemples" contient un certain nombre de simulations toutes faites.

Haut de la page


 


Remarque importante: utilisaton de la souris
 Un lment optique est repr par au moins 2 points. Lors de la saisie de l'lment la souris, il ne faut pas maintenir le bouton de la souris enfonc entre 2 points; pour un miroir plan par exemple, on fait un clic simple l'endroit o doit se situer le 1er bord du miroir, on relche le bouton, on va l'endroit o doit se situer le 2me bord, on clique et on relche.

Remarque: pour placer 2 points conscutifs sur une mme horizontale, faire un clic simple pour le premier point, puis enfoncer la touche "Ctrl" du clavier, la maintenir enfonce, faire le clic simple pour le second point, puis relcher la touche "Ctrl". Pour les placer sur une mme verticale, mme procdure avec la touche "Alt".

Haut de la page


 



Ajouter un  lment ou une source
 Pour chaque lment, il existe 2 mthodes d'ajout: la souris, et au clavier. La saisie la souris permet une saisie rapide, mais certaines proprits de l'lment dpos ont des valeurs standarts. La saisie au clavier est plus longue mais permet de rgler tous les paramtres. On peut aussi utiliser les 2 mthodes: saisie rapide la souris, puis modification des proprits au clavier.

    Pour saisir la souris: il suffit de cliquer sur l'icne de l'lment dans la barre d'outil, puis de saisir les diffrentes points: voir remarque importante sur l'utilisation de la souris.

    Pour saisir au clavier, il faut passer par le menu ajouter.


Remarque: obtention de miroirs trous: il peut tre utile dans certains cas de trouer les miroirs sphriques en leur centre (combinaisons optiques de certains tlscopes par exemple); pour cela, commencer par ajouter un miroir normal; puis modifier le miroir, et choisir dans la boite des proprits du miroir de le trouer et la taille du trou.

Haut de la page


 


Dplacer un lment ou une source
 Cliquez sur le bouton "Dplacer" dans la barre d'outil, ou passer par le menu "Edition" puis "Dplacement d'un lment" . Il apparat un certain nombre de cercles bleus, de croix vertes, et ventuellement de croix cyan sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant les oprations possibles. Il est ainsi possible de translater un lment (croix verte), de faire bouger un point sans faire bouger les autres (cercles bleus) (le curseur indique "rotation", bien que le terme soit impropre, le dplacement permettant aussi une dilatation ou rtraction de l'lment), de dplacer un centre de courbure ou un foyer (croix cyan).
La mthode est la suivante: lorsque le curseur a la forme dsir, on clique et on relche; on dplace la souris jusqu' destination, on clique et on relche; l'lment est redessin "en direct" au fur et mesure du dplacement.


Dplacement vertical: enfoncer la touche  Alt  et la maintenir enfonce; cliquer sur le point dplacer; l'amener la position voulue, cliquer pour le poser, et relcher enfin la touche  Alt .

Dplacement horizontal: enfoncer la touche  Ctrl  et la maintenir enfonce; cliquer sur le point dplacer; l'amener la position voulue, cliquer pour le poser, et relcher enfin la touche  Ctrl .


Important: une fois les modification effectues, il faut cliquer sur le bouton "Fin Dpl." de la barre d'outil pour revenir en mode normal.



Conseil: si vous avez du mal diffrencier 2 points trop proches, utilisez le zoom de la barre d'outil pour les sparer. Si vous n'y arrivez pas comme a, passez plutot par "Proprits".

Haut de la page


 


Modifier un lment ou  une source
 Cliquez sur le bouton "Proprits" dans la barre d'outil, ou passer par le menu "Edition" puis "Proprits d'un lment" . Il apparat un certain nombre de cercles bleus sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant "Proprits: clic". Un clic simple  lance alors l'ouverture de la fentre de proprits de l'lment considr. (c'est la mme fentre que lors d'un ajout  d'lment par le menu "Ajout").  On valide les modifications dans la fentre par le bouton "OK" ou on abandonne.
Important: une fois les modification effectues, il faut cliquer sur le bouton "Fin prop." de la barre d'outil pour revenir en mode normal.

Haut de la page


 


Supprimer un lment ou une source
 Cliquez sur le bouton "Supprimer" dans la barre d'outil, ou passer par le menu "Edition" puis "Suppression d'un lment" . Il apparait un certain nombre de cercles rouges sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, prenant la forme d'un marteau. Un clic simple permet, aprs demande de confirmation, de supprimer l'lment correspondant.
Une fois la suppression effectue, le logiciel quitte automatiquement le mode suppression. Si en fin de compte on ne veut rien supprimer, il faut cliquer sur le bouton "Fin suppr." dans la barre d'outil.

Remarque : si on veut repartir d'une simulation vierge, passer par le menu "Fichier", puis "Nouvelle simulation".

Haut de la page


 
Grouper des lments

On peut grouper des lments afin de pouvoir les translater ensemble.
        - Premire mthode: cliquer sur le bouton "Gr." de la barre d'outil; sur chacun des lments prsents dans la simulation aparat une croix violette; il suffit de cliquer sur cette croix pour ajouter l'lment au groupe; une bote de dialogue confirme l'ajout de l'lment; une fois tous les lments souhaits ajouts, cliquer sur le bouton "Fin". Une bote de diaogue confirme la cration du groupe.
       - Deuxime mthode: menu "Edition" puis "Grouper des lments" puis "Tous les lments" ou "Elments choisir". Dans le second cas, la saisie des lments ajouter se fait comme dans la premire mthode. Dans le premier cas, un groupe est cr qui contient tous les lments prsents.

Dplacement d'un groupe: cliquer sur la bouton "Dplacer"; le groupe est reprsent par une croix verte et des lettres "Gr"; on peut alors le dplacer comme pour un lment classique. Ce point est l'isobarycentre des points caractristiques des lments constitutifs du groupe.

Destruction d'un groupe: comme pour les autres lments.
 

Haut de la page


 
Dupliquer un lment ou une source
 Cliquez sur le bouton "Dupliquer" dans la barre d'outil, ou passer par le menu "Edition" puis "Dupliquer un lment" . Il apparait un certain nombre de cercles bleus sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme. Un clic simple permet alors de dupliquer l'lment correspondant.
Une fois la duplication effectue, le logiciel quitte automatiquement le mode duplication. Si en fin de compte on ne veut rien dupliquer, il faut cliquer sur le bouton "Fin dupl." dans la barre d'outil.
 
 


Haut de la page


Annuler une opration en cours

Pour annuler l'opration en cours, appuyer sur la touche 'Esc' du clavier alors que le curseur est au-dessus de l'espace de travail.

Haut de la page


Annuler/Rtablir les dernires oprations

Les dernires oprations ( savoir: ajout ou suppression d'un lment, modification de ses proprits, dplacement, groupement, duplication) peuvent tre annules (jusqu' 50 niveaux d'annulation) au moyen de la combinaison de touche Ctrl+Z (ou: menu "Edition", "Annuler"). Et si en fait on ne voulait pas annuler (seuls les sots ne changent jamais d'avis !), on rtablit au moyen de la combinaison de touche Ctrl+R (ou: menu "Edition", "Refaire").



Options

Grille

On peut utiliser une grille pour le reprage des points et/ou leurs saisie. Pour cela, passer par le menu "Options".
Si "Attraction de la grille" est coch, lors de la saisie d'un point, c'est le point le plus proche appartenant la grille qui est valid. Ceci est vrai lors de l'ajout d'lments et lors de leur translation.
Dans certaines situations, l'attraction n'est pas applique; c'est le cas par exemple lors de la saisie du foyer d'une lentille: les bords de la lentille tant dj choisis, l'axe focal est impos, et le foyer ne peut pas tre plac forcment sur un point de la grille.
L'affichage de la grille peut tre activ directement par la case cocher "Afficher la grille" dans la barre d'outil.

Normales

On peut demander ce que les normales aux dioptres et aux miroirs soient affiches. Pour cela, passer par le menu "Options" puis "Afficher les normales", ou par la case cocher "Afficher les normales" dans la barre d'outil. Un paramtrage plus fin du trac peut tre obtenu par le menu "Options", puis "Options des normales".
On peut aussi demander ce que les angles d'incidence et de rfraction soient affichs, soit par le menu "Options" puis "Afficher les angles", soit par la case cocher "Afficher les angles d'incidence et de rfraction" dans la barre d'outil.
Remarques: 1) l'option affichage des angles impose l'option affichage des normales
              2) les valeurs des angles sont donnes en ; le nombre de dcimales affiches peut tre rgl en passant par  le menu "Options" puis "Options des normales".
               3) pour les lment optiques  "idaliss" (lentilles minces, miroirs sphriques paraxiaux), les normales et angles ne sont pas tracs, puisque la reprsentation symbolique des ces lments en gomme la forme relle.

Association des fichiers .opt avec OptGeo

Si on choisit d'associer les fichiers de simulation .opt avec OptGeo, un double-clic sur un fichier .opt suffira pour l'ouvrir. L'installateur ne force pas ce choix,  vous tes libre d'utiliser ou pas cette possibilit.
 

Couleur de fond

Permet de changer la couleur de fond de la simulation.

Haut de la page


Prfrences
 
  Permet de choisir les attributs par dfaut des lments la cration (couleur, paisseur, police...).
 
 
 
 
 
 
 
 
 
 
 
 
 

optgeo-2.21/aide/en/polycercle.gif0000750000175000017500000000452211446464774017307 0ustar georgeskgeorgeskGIF89a 333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,  H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ *QH*]!OJJj̨ZʵWZKlزhӪMzv۷pkK]swb޾ jÈ]pǐ:L2ɖ3ky9;MҨSόX&϶M6ƿmޭsnuz:q >\srśK|Vx=%vNk˫ozvߘ>7s~%'c "rK 5hfȐ2I$h"O#݊?"s0 %㌻Ոԍ8c(#uA e<ُ_%`LJVK"7%P$ Eז`Z%fW)֙&Qlyԛk&;"&e'-ũڟ$(lҡ%(}`:(Ex **) UݦB*TZjaB*N*j8+x뇹+vk.YHv*pzm%ە6 ^8'^v{մb˕JeDRn7j%/SKܷ=p^I.ett +|Pf:,_sK\-qpqU}ܱq$s&sr'r3 /T8sphVs5Cnu^4uav,^Ztn w6vz3wu#Gxjw+-ᇣ89ވ3N7>䔗y}.5k{^ܡns$};G5g3f+[t'UK.a:W=wݢaW~;>uߟXןUǿ=fwҘiq¿E6;beo֙`Sy0KwLC^P<"4 `\BJj|; ">Rg;M%]V B$&1AKdW( .Nb3,0JYt¨EprZI"(2S`t#/qm1:#LC/diώUt1P4i!7:Ʌ; Z# O$d%J .-,d]pq2SvtJH]Qm{JixJFܕ2B*"GgxXyU,Tgu9ݘqߴ5}?8FsMs_`iBP=<"YzF K>x>Z-$%|'h Rԗ489]O\(fQMS8jiC :4 %oJ2%`DeIn.j Miroir sphérique réel (troué on non)

  ou     (concave ou convexe)


Définition

Il est défini par les points 1 et 2 et le centre de courbure C (ou le rayon de courbure R). L'ordre des  points 1 et 2 est important, car il définit quelle est la face réfléchissante, l'autre étant absorbante, comme sur l'image ci-dessus.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second, puis un dernier clic pour placer le point C (il est placé automatiquement sur la médiatrice des points 1 et 2) (ne pas maintenir le bouton de la souris enfoncé entre les deux points),
OU
- menu "Ajouter" puis "Système optique réel" puis "Miroir sphérique concave" ou "Miroir sphérique convexe". On donne alors les coordonnées des points 1 et 2, la valeur de rayon de courbure, et la cractère obtu ou non du miroir (en effet, pour 1 et 2 donnés et le rayon de courbure donné, il existe deux miroirs sphériques; celui appelé "obtu" correspond à un angle d'ouverture (angle entre CM1 et CM2) obtu).


Options

On peut imposer
- que les hachures soient tracées ou non à l'écran
- que l'axe de symétrie du miroir soit tracé ou non
- l'épaisseur et la couleur du trait représentant le miroir à l'écran
- la couleur du trait représentant l'axe de symétrie à l'écran

On peut aussi choisir de trouer le miroir en son centre (pratique par exemple pour les télescopes de type Cassegrain).

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce miroir:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil








optgeo-2.21/aide/en/sponctgrand.gif0000750000175000017500000000121511446464774017464 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jq#C4``IO\J)_P&ɔ4sTӦΟ>]Id͘E 2)PH\ʔT=}ʵ*O]3nM4ʨ0ڵ, 7dۂtbk2^|l E8kZ+~ um^Lx3fLv`6=;4}ƐF}sci.Z*[>79n =zؼZ;kc6=뽛{νb/}񛎞?h1ןDY H`P\ >Q Kf }1ၒYug%XR'J_I{TnXą\Ky^C-߉65v Iame2([]):ay\FY&N!%Qviܜ gIgi4ғܕ'Iމ'F jd$go(F:yH)[i)NiZRh:+J+뮼kEJ ^~Fl" :k"wlImfvl@;optgeo-2.21/aide/en/rayongrand.gif0000750000175000017500000000070311446464774017307 0ustar georgeskgeorgeskGIF89add!,ddH*\Ȱ@#JHq"+jȑ!ƏCȓ(e˕,] ̛k3Ν=& TQ5*=tӁ0Jm*uiԪVb5JuЮ^y S+YfUf8Pŋ32X`G CjA(S>$i`K/UTa̙8A\N6} ˡH%hҧ 2= 0OZZ֚\.u6Teb׬mR\uEW[} ,a bw?xн/3֚9 * tאMGE?>dkGְMnyڍSY+'^Q߶L93/L^DX׏~~ؙyG`HTs ]M NwgR^f"݆x_u*a 027>8#)X Yc#"=VH3*٤Q2$F"9KZ _օ'^~Yf`dpl6cIUGhFבfy\z.'\Z(W٦y] ;optgeo-2.21/aide/en/lmc.html0000750000175000017500000000612411446464773016117 0ustar georgeskgeorgesk Lentille mince paraxiale

  ou     (convergente ou divergente)


Définition

Elle est définie par les points 1 et 2 et le foyer F (ou F', peu importe) (ou la focale f').

La lentille peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points), puis un dernier clic pour saisir la position du foyer.
OU
- menu "Ajouter" puis "Système optique idéal" puis "Lentille mince convergente" ou "Lentille mince divergente". On donne alors les coordonnées des points 1 et 2, puis la valeur de la focale.


Options

On peut imposer
- que l'axe focal soit tracé ou non
-l'épaisseur et la couleur du trait représentant la lentille à l'écran
- la couleur du trait représentant l'axe focal à l'écran


Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Comme la lentille est représentée à l'écran par son schéma conventionnel plan, les normales et angles ne peuvent être affichés sur sa surface. Comme c'est une idéalisation d'une lentille réelle, les surfaces d'onde issues d'une source ponctuelle ou plane ne pourront être tracées si une telle lentille fait partie de la simulation.
A noter que les rayons suivent les régles habituelles de tracé des lentilles minces, même s'ils ne sont pas paraxiaux...

Retour à la page  d'accueil







optgeo-2.21/aide/en/ecrangrand.gif0000750000175000017500000000063411446464773017251 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jȱLjB~I2H(79`}N:\k;WXWI/SL'Uo=Qٶh׎z+o'hn! wAhЃRؠbva@;optgeo-2.21/aide/en/polysphere.html0000750000175000017500000001207311446464774017537 0ustar georgeskgeorgesk Polycercle réfractant

    


Définition

Il est défini par les sommets 1, 2, 3..., le caractère segment ou arc de cercle de chaque coté, et le sommet (ou le rayon de courbure) du coté si c'est un arc de cercle; et par les indices de réfraction.
Il ne doit pas y avoir d'intersection entre cotés non consécutifs; attention, le logiciel ne fait pas la vérification, et peut planter si vous ne respectez pas cette condition.
Le polycercle peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en choisissant le nombre de sommets via une boîte de dialogue, puis en faisant un clic simple pour saisir chacun des sommets (ne pas maintenir le bouton de la souris appuyé entre deux points), puis en saisissant le caractère segment ou arc de cercle de chacun des cotés, et enfin en cliquant pour chacun des sommets des arcs de cercle des cotés (s'il y en a).
OU
- menu "Ajouter" puis "Système optique réel" puis "Polycercle réfractant". On donne alors le nombre de sommets, puis les coordonnées des sommets, etc....


Options

On peut imposer
- la couleur à l'écran du polycercle
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce polycercle:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil












optgeo-2.21/aide/en/prisme.html0000750000175000017500000001106311446464774016642 0ustar georgeskgeorgesk Prisme rfractant 

    


Dfinition

Il est dfini par son centre d'inertie G, l'angle au sommet, la hauteur, la direction de cette hauteur principale, et par les indices de rfraction.

Le prisme peut tre ajout:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le centre d'iinertie, puis un clic simple pour saisir le sommet principal (ne pas maintenir le bouton de la souris appuy entre deux points), puis un dernier clic qui fixe l'angle au sommet (en fixant un des 2 derniers sommets).
OU
- menu "Ajouter" puis "Systme optique rel" puis "Prisme".

Dplacement
On peut dplacer:
- le sommet principal: le prisme tourne alors de son centre d'inertie G, sa forme est inchange
- le centre d'inertie: translation du prisme
- les 2 autres sommets: avec l'un on modifie uniquement l'angle au sommet, avec l'autre on modifie uniquement la hauteur.



Options

On peut imposer
- la couleur l'cran du prisme
- les indices de rfraction dans le bleu, le vert et le rouge; par dfaut, les valeurs 1,8, 1,6 et 1,4 sont attribues. On peut aussi choisir directement un matriau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus prcisment, les indices sont donns pour les longueurs d'onde de rfrence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des lments proposs, cliquer ici.
- les conditions d'existence d'un rayon rflchi, dans le sens entrant et dans le sens sortant; le rayon rflchi peut exister "toujours", "jamais", "seulement si le rfract existe", "seulement si le rfract n'existe pas".  Lorsqu'il y a la fois un rayon transmis et un rayon rflchi, le rayon rflchi est un "rayon enfant", terminologie utilise dans la dfinition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces proprits peuvent tre rendues accessibles:
- la construction de la sphre si on passe par le menu "Ajouter"
- tout instant en cliquant sur le bouton "Proprits" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'lment dont on veut obtenir les proprits; ne pas oublier la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode proprits.

Divers

On peut demander que la normale soit trace chaque point d'intersection d'un rayon lumineux avec ce prisme:
- menu "Options", vrifier que "Afficher les normales" est coch
OU
- dans la barre d'outil, boite cocher "Normales"

On peut aussi demander que les angles d'incidence et de rfraction soient affichs (en ):
- menu "Options", vrifier que "Afficher les angles" est coch
OU
- dans la barre d'outil, boite cocher "Angles d'incidence et de rfraction"
L'angle de rflexion n'est pas affich, afin de ne pas surcharger les reprsentations.

Le nombre de  dcimales sur les angles est fix dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour la page  d'accueil













optgeo-2.21/aide/en/polyhedregrand.gif0000750000175000017500000000112211446464774020146 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JH!3jxǏ )z I‹#M\)0%K.U|Y̖Qɳϟ@s>&УHIҧPJ3ի:[fefí!ة2ϖM%ٵ ۮ| -ʲt"k2^|I[0XÄupc\佖>vf65w x4ϠfLzræ[V-ubfq[lޯ}cZY }rkG^عCύľ\wpq{~Dek/zө>|}wZ蕀RǜhW 2 d VanVfFSU7")ִ"\!^1j8cX"';#[x8[c–y7b?EG5R8T=dW^7_5`Ey&9fr9ryDt''R Xeph\c>*餔Vj)^c)dHW*[ꪬjb;optgeo-2.21/aide/en/lmcgrand.gif0000750000175000017500000000104111446464773016725 0ustar georgeskgeorgeskGIF89add!,ddH@Ç#Jh!C3jhѢBCر#†Q\AɒUlIE ʬ!H./IaNAw.,4Д9VlJuSW.Z5kROr#ٳ:U)۶pFKlݻoͫ,߾\*x۹#NLx1^C+h-/c^yΞmF1iΦONZ4!AÎ({Oֶ'֞>VZ_?LgW"_~hw,1ۀƆ^:MHZ]X!{ea܇":8ؚxḙX!91ٗzA JYtuamcrsyaWy&e^(PUyOĵcpy{F8nzިY*;optgeo-2.21/aide/en/lentille.html0000750000175000017500000001215511446464773017155 0ustar georgeskgeorgesk Lentille

     


Définition

C'est le milieu compris entre deux portions de sphère; il faut se donner les sommets S1 et S2 des deux faces de la lentille, et les centres de courbure C1 et C2 de ces faces (ou les rayons de courbure R1 et R2); et  les indices de réfraction. Et le diamètre D de la lentille.

La lentille peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir chacun des sommets (ne pas maintenir le bouton de la souris appuyé entre deux points), puis en faisant un clic simple pour saisir chacun des centres de courbure (ils sont automatiquement ramenés sur l'axe S1S2), et enfin en saisissant le diamètre de la lentille.
OU
- menu "Ajouter" puis "Système optique réel" puis "Lentille".


Options

On peut imposer
- la couleur à l'écran de la lentille
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.

Remarque: si la lentille est à bords minces et qu'on impose un diamètre plus grand que son diamètre "naturel", la valeur du diamètre est automatiquement ramenée à la valeur "naturelle".

Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec cette lentille:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil













optgeo-2.21/aide/en/oeilgrand.gif0000750000175000017500000000111311446464773017102 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jȱǏ CIIR8ʔ-c.| S͂4k޼SΘ=Ws(ќFeMr)ӓABu*udԪ$bT֏]}~VXe͞ҵ;QtڽK3Km7 |81xUp㰄-됲DY1g^iX,]-nZg?wL{A}Qdq1NQ,c ]޻p+Ԏztןt9z9賹s{ z2/}1uןAxSmI^uӄ n%t6|dmȡ{е[x{,H,ތ*hF)|&E92i2_4udE~LI:dwU5eeQ%_MJ^AiXui&gY9njgTH'eމgzg Jhf.ʨj&*(h>ZfBfrn ꨤjꩨh@;optgeo-2.21/aide/en/lsrgrand.gif0000750000175000017500000000077111446464773016763 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋhcAn#ɒGDiq%ˁ*9e̙k̙<{2У"]Q%ӧMGBsԩfuukH]!jVذFݘ,ڄj6%Ѥ\ޭk2½|sxඅwjcs7%Xi+[f# ъ)z`ծ-tkzwnpnlaGraC*}@\v㰻\:΍v'J>yg -v[}_G\yF}. R蟅aq8ЁȜȑHțH蚌шh|!YWkn8-SZ $dU&u[եX_)di;optgeo-2.21/aide/en/lsr.html0000750000175000017500000000775011446464773016152 0ustar georgeskgeorgesk Lame semi-réfléchissante

 


Définition

Elle est défini par les points 1 et 2.

La lame peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Lame semi-réfléchissante".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant la lame à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Remarques importantes


1) Lorsqu'un rayon lumineux arrivesur cette lame, il donne naissance à un rayon réfléchi et à un rayon transmis. Dans la terminologie utilisée dans ce logiciel, le rayon transmis est appelé "rayon enfant" (comportement contraire aux autres éléments réfractants, pour lesquels le rayon enfant est le rayon réfléchi). Pour une source ponctuelle, une onde plane, ou un rayon unique, le nombre maximal de rayons enfants est imposé (voir les propriétés de ces éléments).
2) La lame est idéale en ce sens qu'elle est infiniment mince: il n'y a pas de décalage latéral entre le rayon incident et le rayon transmis.



Divers


On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec cette lame:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil








optgeo-2.21/aide/en/op.html0000750000175000017500000001310511446464773015757 0ustar georgeskgeorgesk

Onde plane


     



Définition

Elle est définie par les points  1, 2 et D, et par le nombre de rayons lumineux composant le faisceau.

L'onde plane peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le point 1, puis en faisant un clic simple pour saisir le point D, puis en faisant un clic simple pour saisir le point 2 (ne pas maintenir le bouton de la souris enfoncé entre les deux points); et enfin en donnant dans la boite de saisie qui s'ouvre alors, le nombre de rayons composant le faisceau. Le point2 sera automatiquement ramené sur la perpendiculaire à 1D passant par 1.
OU
- menu "Ajouter" puis "Source" puis "Onde plane".



Options

On peut imposer
-l'épaisseur du trait représentant les rayons à l'écran

- la couleur des rayons; ce n'est pas simplement la couleur représentée à l'écran, mais aussi la couleur qui détermine l'indice de réfraction pour les milieux réfractants dispersifs; un rayon de lumière blanche est composé de trois rayons rouge, vert et bleu.

- le nombre maximal de rayons enfants; lorsque le rayon arrive sur un dioptre, il donne en général naissance à un rayon réfléchi et à un rayon transmis; le rayon réfléchi est appelé ici "rayon enfant" (sauf dans le cas de la lame semi-réfléchissante idéale); par défaut, le nombre maximal d'enfants est de 10. Remarque: un enfant peut avoir lui aussi des enfants, mais son nombre maximal d'enfant est celui de son rayon parent diminué de 1. Le nomre de rayons enfant s'applique à chacun des rayons composant le faisceau.

- le fait qu'il existe ou pas un rayon réfléchi en plus du rayon réfracté est une propriété de chaque élément réfractant

- si il n'y a pas de réfraction (angle d'indicence plus grand que l'angle limite), le rayon réfléchi est un rayon simple, pas un enfant



- on peut demander à ce que les prolongements des différents segments qui composent le trajet d'un rayon soient tracés en pointillés, vers l'avant ou vers l'arrière, et ce pour chacun de rayons qui composent le faisceau; il suffit de préciser la liste des segments concernés (segments numérotés dans l'ordre de propagation du rayon); ainsi, si le cheminement du rayon est le suivant:

et qu'on demande le prolongement (1,2,4) vers l'avant et (3,4) vers l'arrière,
alors on obtient:






- Tracé des surfaces d'onde: on peut demander le tracé de surfaces d'onde; il suffit d'indiquer la valeur du chemin optique pour lequel on veut effectuer le tracé. Cela ne reléve pas vraiment de l'optique géométrique, mais on ne paye pas plus cher...Le plan  1-2, perpendiculaire aux rayons lumineux, est supposé être un plan d'onde, et constitue l'origine pour le calcul du chemin optique.
A noter que pour que le tracé soit pris en compte, la simulation ne doit comporter ni miroir sphérique paraxial, ni lentille mince paraxiale; ces éléments sont en effet des idéalisations, schématisées par des surfaces planes alors qu'ils sont en réalité sphériques, et on ne peut pas calculer les chemins optiques correctement dans ce cas. Mais rien n'empêche d'utiliser miroir sphérique réel et lentille réelle...


Ces propriétés peuvent être rendues accessibles:
- à la construction du rayon si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil











optgeo-2.21/aide/en/miroirconique.html0000750000175000017500000000744711446464773020242 0ustar georgeskgeorgesk Miroir parabolique, elliptique, ou hyperbolique(concave ou convexe)

 




Définition

Il est défini par les points 1 et 2 (extrémités du miroir), le foyer F, et le sommet S.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme du miroir conique (concave ou convexe), puis en faisant un clic simple pour saisir le  point 1, puis en faisant un clic simple pour saisir le foyer, puis en faisant un clic simple pour saisir lesommet, puis en faisant un clic simple pour saisir le point 2 (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique réel" puis "Miroir cônique ". Dans ce cas, on définit le miroir par les coordonnées de F, l'angle polaire de l'axe focal (angle entre Fx et FS, compté positif dans le sens antihoraire), les angles polaires de FM1 et FM2 (M1 et M2 étant les extrémités du miroir), le paramétre de la conique, et son excentricité. On  donne aussi le caractère concave ou convexe du miroir.


Options

On peut imposer
-que les hachures soient tracées ou non à l'écran
-l'épaisseur et la couleur du trait représentant le miroir à l'écran
- que l'axe focal soit tracé ou pas à l'écran entre F et S
- la couleur de l'axe focal à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce miroir:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil





optgeo-2.21/aide/en/oeil.html0000750000175000017500000000450311446464773016273 0ustar georgeskgeorgesk Diaphragme Oeil stylisé
 


Définition

Il est défini à la souris par les points  1 (rétine) et 2 (centre pupille). Toutes les parties de cet oeil sont aborbantes.

L'oeil peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le point 1, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Divers" puis "Oeil stylisé".

Remarque: cet oeil est optiquement inactif, il ne sert pas à représenter le cheminement des rayons jusqu'à la rétine.


Options

On peut imposer
-l'épaisseur  des traits du bord de l'oeil
- la couleur de l'oeil (c'est-y-pas mignon tout plein...)
Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Quand on est en mode déplacement, on peut:
- translater l'oeil en le prenant par la rétine
- changer son orientation et sa tailleen utilisant l'autre point

Retour à la page  d'accueil





optgeo-2.21/aide/en/lmdgrand.gif0000750000175000017500000000103011446464773016724 0ustar georgeskgeorgeskGIF89add!,ddH †#JHB/VȱFA|豤I" 9ɗ0GbLIХØ8c^fΟwJ4(O>*xTҧZJԞUfl*0֬Wt,ٳ =kvڶn٪ v.]p]W.߾_.kw0Q"N t1㜎,,f'/c.yѿv]q4鉦OGL*(_Ckcٜi#u:G,}8*!g??waA>t5Zα9mϻ~%-ݫ?>뾿޾Jݧ{wxD^bYj > q~a9aFa~k"ԅ" ؚx񸙏Y!19AٗzQy eވEev1[r٘=9SIRn4GKR"9s%;optgeo-2.21/aide/en/reseaugrand.bmp0000750000175000017500000007264612246323601017451 0ustar georgeskgeorgeskBMuv(dd0u  444BBBل$$$PPPBBBCCCCCC،٘BBBBBB444PPPBBB444BBB$$$PPP]]]444BBB444IIIQQQ444BBBBBBBBBBBBBBBQQQCCC444׈$$$ܘBBB444BBBBBB;;;BBB444;;;BBBBBB444BBBBBBoptgeo-2.21/aide/en/diaphragmegrand.gif0000750000175000017500000000270511446464773020263 0ustar georgeskgeorgeskGIF89ah333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,h H*\ȰÇ#JHŋ3jȱǏ Cȓ TEaYQ&͛mܩP'O%}3(BDO4ȥ: RS͚*ן^ +&ٲ3ϢEvVnn۲-]vz̫w#߾(xp͹?N,*cň,0//c> wsΞIjq1飣O;4:j=_NzvLٶMm߰6ⴉޚiϕzu鹭o־oÏ#G-~W/ռ/r}.}1x&a ֠`_V7C^bxalE_("" q.h4h+81@XcHdH&:KF)cHt%%&^epP6 =;aR)t5fsfY|V<砄Jѝ!6(G^hwp)W)jrz:d ꧠ ¢ Zk8^l\k+U[ˢތ:mY~Rղ7jkm˕S.岋ڨnWrKo~K"g/X S51Kpcpz1 r"\+lǏ;optgeo-2.21/aide/en/miroirspheriqueparaxial.html0000750000175000017500000000656311446464773022324 0ustar georgeskgeorgesk Miroir sphérique paraxial (troué on non)

ou     (concave ou convexe)


Définition

Il est défini par les points 1 et 2 et le foyer F (ou la focale f'). L'ordre des  points 1 et 2 est important, car il définit quelle est la face réfléchissante, l'autre étant absorbante, comme sur l'image ci-dessus.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points), puis un dernier clic pour saisir la position du foyer
OU
- menu "Ajouter" puis "Système optique idéal" puis "Miroir sphérique concave" ou "Miroir sphérique convexe". On donne alors les coordonnées des points 1 et 2, puis la valeur de la focale.


Options

On peut imposer
-que les hachures soient tracées ou non à l'écran
- que l'axe focal soit tracé ou non
-l'épaisseur et la couleur du trait représentant le miroir à l'écran
- la couleur du trait représentant l'axe focal à l'écran

On peut aussi choisir de trouer le miroir en son centre (pratique par exemple pour les télescopes de type Cassegrain).

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Comme le miroir est représenté à l'écran par son schéma conventionnel plan, les normales et angles ne peuvent être affichés sur sa surface. Comme c'est une idéalisation du miroir sphérique réel, les surfaces d'onde issues d'une source ponctuelle ou plane ne pourront être tracées si un tel miroir fait partie de la simulation.

Retour à la page  d'accueil







optgeo-2.21/aide/en/polyhedre.html0000750000175000017500000001166111446464774017342 0ustar georgeskgeorgesk Polygône réfractant (dont: prisme, lame à faces parallèles, etc...)

   


Définition

Il est défini par les sommets 1, 2, 3..., et par les indices de réfraction.
Le polygône doit être connexe (il ne doit pas y avoir d'intersection entre cotés non consécutifs); le logiciel vérifie cette condition de connexité.
Le polygône peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en choisissant le nombre de sommets via une boîte de dialogue, puis en faisant un clic simple pour saisir chacun des sommets (ne pas maintenir le bouton de la souris appuyé entre deux points).
OU
- menu "Ajouter" puis "Système optique réel" puis "Polygône réfractant". On donne alors le nombre de sommets, puis les coordonnées des sommets.


Options

On peut imposer
- la couleur à l'écran du polygône
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8, 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce polygône:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil













optgeo-2.21/aide/en/ecran.html0000750000175000017500000000716311446464773016440 0ustar georgeskgeorgesk Ecran Ecran
 


Définition

Il est défini par les points 1 et 2. Les deux faces sont absorbantes.

L'écran peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Ecran".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant l'écran à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil





Ecran Ecran
 


Définition

Il est défini par les points 1 et 2. Les deux faces sont absorbantes.

L'écran peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Ecran".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant l'écran à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil





optgeo-2.21/aide/en/mscoregrand.gif0000750000175000017500000000112411446464773017444 0ustar georgeskgeorgeskGIF89add!,ddHP JHQ"#dǏ/b|QcI(SX%Ž*czI7e\&N;iSdNHq,z44Q2=ҝ>7*3ԣM y2س$],۷T]B ܅U뮕V/ڲ[U+~C͋ݾlbx3玝=[IYtW¦N:4kǮ_fXWtm,[%޷s{i׼wMW8pG6Ǯ]u۸yvb[uW/kuхk X~c (Ԃp98{IHf7!%x܀⅔7"zYE$QXWn š~,݈r:>$(VDC*g_;nW#2#VJ$ta$iU^Tl}yi\Y^e?tcNeSgFb)"B陝5^K%hcj^o,~h}4v:g9פB.F$.:(-nbB9*&;optgeo-2.21/aide/en/prismegrand.png0000750000175000017500000000102611446464774017474 0ustar georgeskgeorgeskPNG  IHDRddJ,sRGBPLTEٟ pHYs  tIME+Q.IDAT8U1n0P[tŖ*s@Gä *uaB ATZZ`?Cΰ(8_x]1:w'),RgJ|U 9#5AjFWj/ú-PN8\-XgǢ3Ж4-Kl3Rٰz%*+܊hN+kPꀏ+o*x(1bxX3p,*ykYڬ B 'uR/?b,ȢHQ!ٻ %o~M-$2OxIj#J~-I{cܣdsIsPcT&TšQ{&:+J!8' H Ԣft#WMH)驋JbbQB (uJ*()٦oBm7f IENDB`optgeo-2.21/aide/en/segment1.gif0000750000175000017500000000345011446464774016670 0ustar georgeskgeorgeskGIF89aW333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,W H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0)I͛8sɳ> JѣHe&]ʴӧPF*իXj ֯`Ê+ٳhӪ]k,۷pʝ[-ݻxejw߿+È'N̸cËKLmʘ3k&yϠvM闣O^cְcnz۲k͛S-—+_8:Nֳk}EO>VϾ}ˇy~S> H):HYi[W ("r(G,b&m8#V3X9) I?!Z ByOrH%uWetRF^SnY1Y)!rj&w&'雟J:Y|ip{&X-XBhE)c^Pm'y r Bl Vw~_Ɗ[!kw1NA۪1IoKmGJ֭p [mk:ַnM dB{lV(z{Rq,>"#30wZ|1w+5hǗ,kgEqT"_r'7rU/ O -6s)\j^@/٠E%M>t6OEV+aZ;ui`k]eg; lxpݤom7A=ޣf7O~n-+j8QAjZ>9ws.VT ~:}K.%Izh;KGwR+)1C:?{7+gkܓ6'/[r^ſ]fkoQ#g}LB 5c ĵ^7( r0q DHxX:! _Zυ0 c!p7!tú3(;optgeo-2.21/aide/en/rayon.html0000750000175000017500000000762611446464774016505 0ustar georgeskgeorgesk Rayon lumineux unique

 


Définition

Il est défini par les points 1 et 2.

Le rayon peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Source" puis "Rayon unique".


Options

On peut imposer
-l'épaisseur du trait représentant le rayon à l'écran

- la couleur du rayon; ce n'est pas simplement la couleur représentée à l'écran, mais aussi la couleur qui détermine l'indice de réfraction pour les milieux réfractants dispersifs; un rayon de lumière blanche est composé de trois rayons rouge, vert et bleu.

- le nombre maximal de rayons enfants; lorsque le rayon arrive sur un dioptre, il donne en général naissance à un rayon réfléchi et à un rayon transmis; le rayon réfléchi est appelé ici "rayon enfant" (sauf dans le cas de la lame semi-réfléchissante idéale); par défaut, le nombre maximal d'enfants est de 10. Remarque: un enfant peut avoir lui aussi des enfants, mais son nombre maximal d'enfant est celui de son rayon parent diminué de 1.

- le fait qu'il existe ou pas un rayon réfléchi en plus du rayon réfracté est une propriété de chaque élément réfractant

- si il n'y a pas de réfraction (angle d'indicence plus grand que l'angle limite), le rayon réfléchi est un rayon simple, pas un enfant

- on peut demander à ce que les prolongements des différents segments qui composent le trajet du rayon soient tracés en pointillés, vers l'avant ou vers l'arrière; il suffit de préciser la liste des segments concernés (segments numérotés dans l'ordre de propagation du rayon); ainsi, si le cheminement du rayon est le suivant:

et qu'on demande le prolongement (1,2,4) vers l'avant et (3,4) vers l'arrière,
alors on obtient:




Ces propriétés peuvent être rendues accessibles:
- à la construction du rayon si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil







optgeo-2.21/aide/en/anglegrand.gif0000750000175000017500000000101711446464773017243 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JH"CXȱAzIƏ'K\iP$˗*]œQ&͛ m3̝=RQD3=(ӧN*5(ժMbuЫ^i s,YfϖL$۶(wźv)q/_~: ,ؤWTV&?]t`nIp)tixyS@;optgeo-2.21/aide/fr/0000750000175000017500000000000012247340361014437 5ustar georgeskgeorgeskoptgeo-2.21/aide/fr/lecgrand.gif0000750000175000017500000000432111446464777016732 0ustar georgeskgeorgeskGIF89a2%!,2%H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nq+_μУKNaz| ~ym~{槝7Z`Z x &QhQڃY(BaifaGz8{x)^Gh7HPYn<T>*4$gGS.BT#lu(%e[Oxb%dgMafco~WcJq*V'pwD%|/Q( ~^4(I{iۡɨ@RM imΖ)E޴^T;WDiOj2iڦRGkJޮzjrZ, MjTf,C>[UNˡLjm&[}{.ٖ2(j?ZX>)RofpWO#t\."=2\+ZŏEK_+vŚ5w 5+r,"<2M3CUs/OS|(#v.Ni7,4N '.g'sd4P#abԠ]T~^,t6&.=X<ڬІ]-jm҄fhJ(ӍjdN߂םZnS*Q_x7Șj9BAn8`t?N/铃z=;NZ>nԸ[n[-ܞVΈ<㈬чm;{;z=P>{;P볉=c_/Vn뛙*?/ЀK@1/b`. lSv!<\4h+~, & ,& K GAD Vv9!ސ*?T JɅ_C!'q6Kb>UF0s޸75)ZKd" 4'c" 'Fi#+:QQz<}ҨF2*NW⪕Jƨ2nW[֦X RY#7IqK{%t[*}ʮd$,g)ZB2e.mJ]d0q]/ Lb2Lf,4Is&6LnBS*yJrjs,7JmyOuQ#d F>>KDS$ VV+ "&yF)PZ2ڿn {$--rEG+,fit*lNQ#,"EֹiŴ$?{)ljCtWH:Ӎ ʔEHDD Ղ*~fH&tJWEJ±tga_V.i*zQ .I+܊WG[r-xO YZ!_%:)c%Vmb?Њ )gVڨI浸'+۱Vpm x# \[\ҹet6ao vWnY˥jEw[u.TŮ@77ojVì>y_MC/'+pL>ȃ}660ze<ґ&Oj=Ҥ$^'T+?XZ^ $lPUm97Xr̾4lg'vіdmBٶ,{kS6ɽo+ ݷոg%۪m.}C;nެ|#w^Zx/Ȍk\w Q߄q$~_KZ0gN.yplб6HOҗ;PԧN[XϺַ{`NhOpNxϻ@;optgeo-2.21/aide/fr/opgrand.gif0000750000175000017500000000074011446464777016606 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#Hŋ'bȱcF CV(I$OSfÚ*5Ƥɳϟ@ J(я*]ʴ)S)JJhҌUj*p͛_kz5,OdMVf[oW m]sK[w/߻ 얰aU81c;r2厖/o̬"#A,"OE=ӦjtK^-z6ζo_έ2ognNȇNμЛJd 7ڱfm5wa.fݕ|a/ÓWx9Ǘo=j/?v"נqSoY8|fe^wYgX[9`ީ%qc`ct5&b."EX1虒!LF);optgeo-2.21/aide/fr/diaphragme.html0000750000175000017500000006705611446464777017471 0ustar georgeskgeorgesk Diaphragme Diaphragme à iris
 


Définition

Il est défini à la souris par les points C (centre du diaphragme), 1 (bord intérieur) et 2 (bord extérieur). Le trou central est évidemment transparent, le reste du diaphragme est aborbant sur ses deux faces.

Le diaphragme peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le centre, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Diaphragme".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant l'écran à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Quand on est en mode déplacement, on peut:
- translater le diaphragme
- changer son orientation et sa taille extérieure en utilisant les points extrèmes
- changer son rayon intérieur (ouverture du diaphragme) en utilisant les points intérieurs

Retour à la page  d'accueil





Aide de Optgéo

OptGéo, version 1.10

Logiciel de simulation d'optique géométrique à deux dimensions


I Fonctionnement du logiciel

Présentation

Remarque importante: utilisation de la souris

Comment...

                ...ajouter un  élément ou une source

                ...déplacer un élément ou une source

                ...modifier un élément ou  une source

                ...supprimer un élément ou une source

              ...dupliquer un élément ou une source

               ...annuler une opération en cours

             ...grouper des éléments


Options


Préférences (menu Fichier)


II Propriétés des divers éléments optiques

                1) Les sources lumineuses

                                            Rayon unique

                                            Source ponctuelle

                                            Onde plane

                2) Miroirs

                                            Miroir plan

                                            Miroir sphérique convexe idéal

                                            Miroir sphérique concave idéal

                                            Miroir sphérique convexe réel

                                            Miroir sphérique concave réel

                                            Miroir elliptique; parabolique; hyperbolique

                                            Lame semi-réfléchissante

            3) Régions réfractantes

                                            Lentille mince convergente idéale

                                            Lentille mince divergente idéale

                                            Lentille quelconque

                                            Sphère réfractante

                                            Polygône réfractant (dont: prisme, lame, etc...)

                                            Polycercle réfractant

            4) Surfaces absorbantes ou transparentes

                                            Ecran

                                            Diaphragme à iris

                                            Oeil stylisé


Présentation
 Après avoir choisi les dimensions de son espace de travail, on dépose sur celui ci des miroirs (plans, sphériques, paraboliques, hyperboliques, elliptiques), des lentilles (minces ou épaisses),  des volumes réfractants (sphères, prismes, lames, polyhèdres), des éléments divers (écrans, diaphragmes, lames semi-réfléchissantes), ainsi que des sources (ponctuelles réelles, ponctuelles virtuelles, ondes planes, rayons uniques). Optgéo trace les rayons lumineux., en utilisant les lois de Descartes. On peut aussi, dans certains cas, tracer des surfaces d'onde.
Le répertoire "exemples" contient un certain nombre de simulations toutes faites.

Haut de la page


 


Remarque importante: utilisaton de la souris
 Un élément optique est repéré par au moins 2 points. Lors de la saisie de l'élément à la souris, il ne faut pas maintenir le bouton de la souris enfoncé entre 2 points; pour un miroir plan par exemple, on fait un clic simple à l'endroit où doit se situer le 1er bord du miroir, on relâche le bouton, on va à l'endroit où doit se situer le 2ème bord, on clique et on relâche.

Remarque: pour placer 2 points consécutifs sur une même horizontale, faire un clic simple pour le premier point, puis enfoncer la touche "Ctrl" du clavier, la maintenir enfoncée, faire le clic simple pour le second point, puis relâcher la touche "Ctrl". Pour les placer sur une même verticale, même procédure avec la touche "Alt".

Haut de la page


 



Ajouter un  élément ou une source
 Pour chaque élément, il existe 2 méthodes d'ajout: à la souris, et au clavier. La saisie à la souris permet une saisie rapide, mais certaines propriétés de l'élément déposé ont des valeur standarts. La saisie au clavier est plus longue mais permet de régler tous les paramètres. On peut aussi utiliser les 2 méthodes: saisie rapide à la souris, puis modification des propriétés au clavier.

    Pour saisir à la souris: il suffit de cliquer sur l'icône de l'élément dans la barre d'outil, puis de saisir les différentes points: voir remarque importante sur l'utilisation de la souris.

    Pour saisir au clavier, il faut passer par le menu ajouter.


Remarque: obtention de miroirs troués: il peut être utile dans certains cas de trouer les miroirs sphériques en leur centre (combinaisons optiques de certains téléscopes par exemple); pour cela, commencer par ajouter un miroir normal; puis modifier le miroir, et choisir dans la boite des propriétés du miroir de le trouer et la taille du trou.

Haut de la page


 


Déplacer un élément ou une source
 Cliquez sur le bouton "Déplacer" dans la barre d'outil, ou passer par le menu "Edition" puis "Déplacement d'un élément" . Il apparaît un certain nombre de cercles bleus, de croix vertes, et éventuellement de croix cyan sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant les opérations possibles. Il est ainsi possible de translater un élément (croix verte), de faire bouger un point sans faire bouger les autres (cercles bleus) (le curseur indique "rotation", bien que le terme soit impropre, le déplacement permettant aussi une dilatation ou rétraction de l'élément), de déplacer un centre de courbure ou un foyer (croix cyan).
La méthode est la suivante: lorsque le curseur a la forme désiré, on clique et on relâche; on déplace la souris jusqu'à destination, on clique et on relâche; l'élément est redessiné "en direct" au fur et à mesure du déplacement.


Déplacement vertical: enfoncer la touche « Alt » et la maintenir enfoncée; cliquer sur le point à déplacer; l'amener à la position voulue, cliquer pour le poser, et relâcher enfin la touche « Alt ».

Déplacement horizontal: enfoncer la touche « Ctrl » et la maintenir enfoncée; cliquer sur le point à déplacer; l'amener à la position voulue, cliquer pour le poser, et relâcher enfin la touche « Ctrl ».


Important: une fois les modification effectuées, il faut cliquer sur le bouton "Fin Dépl." de la barre d'outil pour revenir en mode normal.

Haut de la page


 


Modifier un élément ou  une source
 Cliquez sur le bouton "Propriétés" dans la barre d'outil, ou passer par le menu "Edition" puis "Propriétés d'un élément" . Il apparaît un certain nombre de cercles bleus sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant "Propriétés: clic". Un clic simple  lance alors l'ouverture de la fenêtre de propriétés de l'élément considéré. (c'est la même fenêtre que lors d'un ajout  d'élément par le menu "Ajout").  On valide les modifications dans la fenêtre par le bouton "OK" ou on abandonne.
Important: une fois les modification effectuées, il faut cliquer sur le bouton "Fin prop." de la barre d'outil pour revenir en mode normal.

Haut de la page


 


Supprimer un élément ou une source
 Cliquez sur le bouton "Supprimer" dans la barre d'outil, ou passer par le menu "Edition" puis "Suppression d'un élément" . Il apparait un certain nombre de cercles rouges sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, prenant la forme d'un marteau. Un clic simple permet, après demande de confirmation, de supprimer l'élément correspondant.
Une fois la suppression effectuée, le logiciel quitte automatiquement le mode suppression. Si en fin de compte on ne veut rien supprimer, il faut cliquer sur le bouton "Fin suppr." dans la barre d'outil.

Remarque : si on veut repartir d'une simulation vierge, passer par le menu "Fichier", puis "Nouvelle simulation".

Haut de la page


 
Grouper des éléments

On peut grouper des éléments afin de pouvoir les translater ensemble.
        - Premiére méthode: cliquer sur le bouton "Gr." de la barre d'outil; sur chacun des éléments présents dans la simulation aparaît une croix violette; il suffit de cliquer sur cette croix pour ajouter l'élément au groupe; une boîte de dialogue confirme l'ajout de l'élément; une fois tous les éléments souhaités ajoutés, cliquer sur le bouton "Fin". Une boîte de diaogue confirme la création du groupe.
       - Deuxième méthode: menu "Edition" puis "Grouper des éléments" puis "Tous les éléments" ou "Eléments à choisir". Dans le second cas, la saisie des éléments à ajouter se fait comme dans la première méthode. Dans le premier cas, un groupe est créé qui contient tous les éléments présents.

Déplacement d'un groupe: cliquer sur la bouton "Déplacer"; le groupe est représenté par une croix verte et des lettres "Gr"; on peut alors le déplacer comme pour un élément classique. Ce point est l'isobarycentre des points caractéristiques des éléments constitutifs du groupe.

Destruction d'un groupe: comme pour les autres éléments.
 

Haut de la page


 
Dupliquer un élément ou une source
 Cliquez sur le bouton "Dupliquer" dans la barre d'outil, ou passer par le menu "Edition" puis "Dupliquer un élément" . Il apparait un certain nombre de cercles bleus sur la simulation, autour des points caractéristiques des éléments présents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme. Un clic simple permet alors de dupliquer l'élément correspondant.
Une fois la duplication effectuée, le logiciel quitte automatiquement le mode duplication. Si en fin de compte on ne veut rien dupliquer, il faut cliquer sur le bouton "Fin dupl." dans la barre d'outil.
 
 


Haut de la page


Annuler une opération en cours

Pour annuler l'opération en cours, appuyer sur la touche 'Esc' du clavier alors que le curseur est au-dessus de l'espace de travail.

Haut de la page


Options

Grille

On peut utiliser une grille pour le repérage des points et/ou leurs saisie. Pour cela, passer par le menu "Options".
Si "Attraction de la grille" est coché, lors de la saisie d'un point, c'est le point le plus proche appartenant à la grille qui est validé. Ceci est vrai lors de l'ajout d'éléments et lors de leur translation.
Dans certaines situations, l'attraction n'est pas appliquée; c'est le cas par exemple lors de la saisie du foyer d'une lentille: les bords de la lentille étant déjà choisis, l'axe focal est imposé, et le foyer ne peut pas être placé forcément sur un point de la grille.
L'affichage de la grille peut être activé directement par la case à cocher "Afficher la grille" dans la barre d'outil.

Normales

On peut demander à ce que les normales aux dioptres et aux miroirs soient affichées. Pour cela, passer par le menu "Options" puis "Afficher les normales", ou par la case à cocher "Afficher les normales" dans la barre d'outil. Un paramétrage plus fin du tracé peut être obtenu par le menu "Options", puis "Options des normales".
On peut aussi demander à ce que les angles d'incidence et de réfraction soient affichés, soit par le menu "Options" puis "Afficher les angles", soit par la case à cocher "Afficher les angles d'incidence et de réfraction" dans la barre d'outil.
Remarques: 1) l'option affichage des angles impose l'option affichage des normales
              2) les valeurs des angles sont données en °; le nombre de décimales affichées peut être réglé en passant par  le menu "Options" puis "Options des normales".
               3) pour les élément optiques  "idéalisés" (lentilles minces, miroirs sphériques paraxiaux), les normales et angles ne sont pas tracés, puisque la représentation symbolique des ces éléments en gomme la forme réelle.

Association des fichiers .opt avec OptGeo

Si on choisit d'associer les fichiers de simulation .opt avec OptGeo, un double-clic sur un fichier .opt suffira pour l'ouvrir. L'installateur ne force pas ce choix,  vous êtes libre d'utiliser ou pas cette possibilité.
 

Couleur de fond

Permet de changer la couleur de fond de la simulation.

Haut de la page


Préférences
 
  Permet de choisir les attributs par défaut des éléments à la création (couleur, épaisseur, police...).
 
 
 
 
 
 
 
 
 
 
 
 
 

optgeo-2.21/aide/fr/Materiaux.html0000750000175000017500000000314511446464777017314 0ustar georgeskgeorgesk Modification liste matériaux Modification de la liste des matériaux proposés

Attention, n'effectuez cette manipulation que si c'est nécessaire et que vous êtes sûr de ce que vous faites !

La liste des matériaux et de leurs indices est stockée dans le fichier "listen.lst", qui est situé dans le repertoire d'installation de OptGeo. C'est un fichier texte que vous pouvez éditer par exemple avec le bloc-notes de Windows. Pour chaque matériau, il y a 4 lignes: une pour le nom du matériau, une pour la valeur de l'indice à la longueur d'onde de 486,1nm, une pour la valeur de l'indice à la longueur d'onde de 587,6nm, une pour la valeur de l'indice à la longueur d'onde de 656,3nm. Vous pouvez les modifier, en supprimer, en rajouter, à condition de respecter cette structure. Pour les valeurs d'indice, la virgule décimale doit être représentée par un point, à la mode anglo-saxonne.

Si jamais vous perdiez corps et biens ce fichier, il existe une copie de sauvagarde, nommée "listen.sau", située dans le répertoire d'installation de OptGeo.
optgeo-2.21/aide/fr/msceregrand.gif0000750000175000017500000000111211446464777017440 0ustar georgeskgeorgeskGIF89add!,ddHPÇ#JXB )jG CvI#Đ(-\RJ)Eɘ4sNaL:POBi"E(ϤBl'TVf\կK'ϬeV8VۭUۺ\iƕ+ܸ}7pԧMLVo]njRY0`)cvsУ=wlYJQ|y5s}z1ma8Ynܾ-$⣏#7 zy΁NQ9֋~,iݧ~G`hw5w7sM}~S{R_CUgy#|9o h\~I(x!xtr![g EZ,ek@hbET/Xڏ#u{DbcZPf#w IdkRw_^eءiTۘB.yP^=[hIwC}i\z!yu1EԌEi}-מIՕF =rꜦf;optgeo-2.21/aide/fr/reseau.html0000750000175000017500000000320712246464400016616 0ustar georgeskgeorgesk reseau Rseau diffractant 

    


Dfinition

Il est dfini   la souris par les extrmits 1 et 2
Une boite de dialogue permet ensuite de choisir
- si c'est un rseau en transmission ou en rflexion
- le nombre de trait par mm
- les ordres reprsentables


Remarques

Cet objet relve de l'optique ondulatoire.
IL est utilis ici de la faon suivante: un rayon incident correspondent plusieurs rayons diffracts, dont les directions sont donnes par la loi fondamentale des rseaux:
sin i -sin i0=k.longueur d'onde /pas en transmission
sin i sin i0=k.longueur d'onde /pas en rflexion

Mais cela n'a clairement de sens que pour une onde plane, et une observation l'inifini de l'onde diffract.

Retour la page  d'accueil













optgeo-2.21/aide/fr/coniquegrand.gif0000750000175000017500000000344011446464777017633 0ustar georgeskgeorgeskGIF89a&333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,& H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8Wؙϟ8  ѣ%EʴӊJF}JUWjs֯`{z Kʩcͪ]-۷UʝKEii܉] 7d=3㚇a6~LY䙇V7rP͜CC,\Գ M#A9/vYu״[:;7\d{6 `;}U6wz?O/hwvK%FȨǽk>?cmawl??[m}SZBGB .QbUeZnQə#"eB.7㉨x:_J=Q'IB YI6Ne~4TEVfIەy)}ccZ&S$ۚm pru>yV@JX盠4Mf5e-$i֥vfZzaywꤥ{ujzHk]޺wzdlaZ|Ɩ,ˎxRjcFK*u~jvvwb른榘.讛*hK+7˯˦c+p 06pb> 1lJy|߲l.'r̉L7;r@,3;jBkDݢH'/N iO3ʴnT_-9r-^YJJv]ڕlw)oMw{ͤdwRD".8Jt^܏CNy J^cߞ[.vENzyK]z'{-{n:;#_/`jS_bͽ,5ؽ׌??:`7,_C3]V/qz?o@* "AHTKAp&T0^ 2e(y RB)'ȀZ0̆,a w`;optgeo-2.21/aide/fr/optgeo.gif0000750000175000017500000000625011446464777016453 0ustar georgeskgeorgeskGIF89azz333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,zz H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣHYXʴ@ҧP&mTիXsR]ׯ&Kىb]˶Tʝw7^LX_y^ḉ6L޷ ^̹ś3iV|k_˞06۸1CONOμ>Nؿ^~O~ӫ_^,zCgOyዖ_޾[wR|``6(~ iV4!kvxaf j$z=`hH`h !Zc6B9RDʐb iH&id]DFJ2Y IVTvyŗeBUFV#7Иhv(f I`M٩'i{I' J(hW聇>Zf馜n*V*j:jꪩ)JVi \|K&ħnpJCIf  $AÚ-fC{&Љ;Cz"ܩCy.6F_}ʦrd0U'Y^V%|Yl(ǔy\1"Krc&{#:n,l4fͯLmXIc]\5#2lj[ʽp,m-z8v [Wሧ{G7~,+-yxL9SyZa[zr zs\n/o'7G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HLD@a*&]H8ŖUIX'n1"EE 2o!2%F0$v"2E:я7-Qu|G0qwTIQ8FiFzdVcHLⓝX>?n415"O$- @ c.4!^ fCijNSlfrɩcS!u<0Gg2Z""9vBdH3h>ִ@FEoS¹kJ!dJrzS"9Kkrt&)'Ѕ 1-ϩ-/%UJzѕ |ChʇdI,EŦ? Kd<ŹM|~ܼS׶HNBhΚIzR h?=-ĪTQ23e ')d^>厺:Ԭ +[j}ҬdMʶs}5,:I˦%g?CjWISql]jUEgRW Pf+dgYRᒲ)Au5 *BԈZE,%5p)JR|yR~3 OJ_m"FQ wQ#lLlDg)䢗Fp+'GX`X9G6/pHh6R,(Z#LdbD8MNb$d8F 27C6dV6x(?Wϐ-fnc"׬L]:ޗ.`-Z?!(n69\.BTu.J})ɭk.{J4liz׃:nŝz(G!JU>z蔵O"w# ^K˹\'^uwwtYq`It7*yv49' t:on%3 [IUeY*#M[;8Q^F!o2W~Xgir3rc`"6Ll :"f4B<4/ ЏO[Ͼ{OOOϿ8Xx ؀8Xx؁ "8$X&x(*,؂.0284X6x8:;optgeo-2.21/aide/fr/sphere.html0000750000175000017500000001043211446465000016614 0ustar georgeskgeorgesk Sphère réfractante

   


Définition

Elle est définie par le centre C, le rayon R, et les indices de réfraction.

La sphère peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le centre, puis en faisant un clic simple quand la bonne taille est atteinte.
OU
- menu "Ajouter" puis "Système optique réel" puis "Sphère réfractante". On donne alors les coordonnées du centre, et la valeur du rayon.


Options

On peut imposer
- la couleur à l'écran de la pshère
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec cette sphère:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil









optgeo-2.21/aide/fr/mscopagrand.gif0000750000175000017500000000102711446464777017451 0ustar georgeskgeorgeskGIF89add!,ddH PÇ#JhaC3jhCCǁ&G\Ô YYə83ִgΟ$]* hώ44hJJJmgԩR&EkE0jVh =6֫m" Yuś7۾]r$[…"w1SK+Õ<`3)y4ƦYBƜ:֪/5mמ#z7nž37k{#Xz9k=awE5?nNˮ.q5vʱn\یOu GeA_[S"X>(߂l\| %anA ~xw":%^_yw".b,g+H~8h!| Miroir plan




Définition

Il est défini par les points 1 et 2. L'ordre de ces points est important, car il définit quelle est la face réfléchissante, l'autre étant absorbante, comme sur l'image ci-dessus.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Miroir plan".


Options

On peut imposer
-que les hachures soient tracées ou non à l'écran
-l'épaisseur et la couleur du trait représentant le miroir à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce miroir:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil





optgeo-2.21/aide/fr/mpgrand.gif0000750000175000017500000000101011446464777016573 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋhG5~IRaH%S~}ɷ|{s:\q5%XaX|Z y Ak_~6`*x߇"]2Gc7Hi_э#X?"ޅe[rV^c2Vg kfp);optgeo-2.21/aide/fr/sponct.html0000750000175000017500000001342711446465000016643 0ustar georgeskgeorgesk

Source ponctuelle (réelle ou virtuelle)


                   ou                            



Définition

Elle est définie par les points S, 1 et 2, et par le nombre de rayons lumineux composant le faisceau.L'ordre des points 1 et 2 n'est pas indifférent: les rayons sont émis entre S-1 et S-2 dans le sens trigo direct.

La source peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le point source S, puis en faisant un clic simple pour saisir le point 1, puis en faisant un clic simple pour saisir le point 2 (ne pas maintenir le bouton de la souris enfoncé entre les deux points); et enfin en donnant dans la boite de saisie qui s'ouvre alors, le nombre de rayons composant le faisceau.
OU
- menu "Ajouter" puis "Source" puis "Objet ponctuel réel ou virtuel".



Options

On peut imposer
-l'épaisseur du trait représentant les rayons à l'écran

- la couleur des rayons; ce n'est pas simplement la couleur représentée à l'écran, mais aussi la couleur qui détermine l'indice de réfraction pour les milieux réfractants dispersifs; un rayon de lumière blanche est composé de trois rayons rouge, vert et bleu.

- le nombre maximal de rayons enfants; lorsque le rayon arrive sur un dioptre, il donne en général naissance à un rayon réfléchi et à un rayon transmis; le rayon réfléchi est appelé ici "rayon enfant" (sauf dans le cas de la lame semi-réfléchissante idéale); par défaut, le nombre maximal d'enfants est de 10. Remarque: un enfant peut avoir lui aussi des enfants, mais son nombre maximal d'enfant est celui de son rayon parent diminué de 1. Le nomre de rayons enfant s'applique à chacun des rayons composant le faisceau.

- le fait qu'il existe ou pas un rayon réfléchi en plus du rayon réfracté est une propriété de chaque élément réfractant

- si il n'y a pas de réfraction (angle d'indicence plus grand que l'angle limite), le rayon réfléchi est un rayon simple, pas un enfant



- on peut demander à ce que les prolongements des différents segments qui composent le trajet d'un rayon soient tracés en pointillés, vers l'avant ou vers l'arrière, et ce pour chacun de rayons qui composent le faisceau; il suffit de préciser la liste des segments concernés (segments numérotés dans l'ordre de propagation du rayon); ainsi, si le cheminement du rayon est le suivant:

et qu'on demande le prolongement (1,2,4) vers l'avant et (3,4) vers l'arrière,
alors on obtient:




- Tracé des surfaces d'onde: dans le cas d'une source réelle, on peut demander le tracé de surfaces d'onde; il suffit d'indiquer la valeur du chemin optique pour lequel on veut effectuer le tracé. Cela ne reléve pas vraiment de l'optique géométrique, mais on ne paye pas plus cher...
A noter que pour que le tracé soit pris en compte, la simulation ne doit comporter ni miroir sphérique paraxial, ni lentille mince paraxiale; ces éléments sont en effet des idéalisations, schématisées par des surfaces planes alors qu'ils sont en réalité sphériques, et on ne peut pas calculer les chemins optiques correctement dans ce cas. Mais rien n'empêche d'utiliser miroir sphérique réel et lentille réelle...



Ces propriétés peuvent être rendues accessibles:
- à la construction du rayon si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil










optgeo-2.21/aide/fr/sponctvgrand.gif0000750000175000017500000000101511446465000017634 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0c `&̚6[N5ySCC#4џLBu`)Ŧ&UTE>k̰>ue[oݮM\uUe7a_d \޻ .F78ӰV.2'++ f>[5dY-cm;4H{WpqO.0?fxvƞ]WB^ϣy=]b{-Xμwlsws (o Ǖ z)5[yq_xaI!ZW]VU}""`$DW##3݈l#S/UG>dvCrXByQ >)tWf\Rm\5Z-!J)G٦|ri;optgeo-2.21/aide/fr/gouttegrande.gif0000750000175000017500000000122511446464777017643 0ustar georgeskgeorgeskGIF89add!,ddH(\ȰC#JH3fȱGC"K06Tqd B6͚-{߈GF h_.X6lqv6ضS]Yvk5I?>|7=3g-zh_K[N膉u=~U_2{זv7ٱG>RT7}鷞 N߃"UzB_~X}e(U5!bL4ry}@#^Xa!ȍ &U$4bI|ɠy8e`8ji ד5V'eXKYk^əqc[wh9~mڹYv_CƧs"Y(l=]M)_ˆhJz`2bl2 (n^DBFkz񺫯RQH.K:;)HRKh(g*,m;optgeo-2.21/aide/fr/segment2.gif0000750000175000017500000000465511446465000016665 0ustar georgeskgeorgeskGIF89a333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟJѣH*)tӧPJJugӪXjʵׯ`ÊKٳhӪ]˶۷p]yuݻx꭫߿ LÈ+^̸ǐ#KLe/kmΠCyӨS^ͺװc˞M6Ҷs]7[~v87OμУK%[~P;w.~OϾởO㷩E` HCX `7a]B nHjbHE&x۹H#g6ވP:FcAun?IPF&J6)P7QE%]Y%[Znٛu d&fh؟iܙnBgt6w֩VȦ"#j衈&iI((=tI H^馜vzz**:jCK?*2JkA֪IJحRSZlڪձu&(AfJ+,M^+PQrnmŅѸQk.^DB*tsiooKp\ װ0MLZ|qPjLyy #Hrm'%5o-|ʲ,sw\Ͱ|s>":4zMK+t=3ҁI-Tuh[[e85bge]fS $۔Mܞ#3=Yx|߀9'|t+3.7ΑΪ[yu袗鞧n鬫z뫻N:ˎzמ.([!x/cO|0?8}/v}{=X^yb {GO媇>ׯF^Z>PI4 ǐ$2ZFvtpQq`mZS%Bv΀$laeꈆJ _pE#Dс-<"u%B%ct"Zl80\=*-_ӢYx)2EeAeƱqi{#AQ0?I43R<{;6@2VR§)|RErH+~"JZ1>J5ML?$'7eÆ9Ȕ3E 2De<˖̒Sue bBfĔ^Hffg3 n')\d6yups*[NĜޫa; gu2a'Dy)aL[89ϏSgA#S K Q4CL;H]'(9yj_%ӚDzTJ,مNjɘ"EkiJӜO+MȜ,\QoY1Sk2U*UtWMHIuHg5&T!hodJuv[WytͫWε[D+b2XdӘvk,X'kreg5кѴ"-jWֺVlǩيZɶͭnw޾epoMr?܋|tKZ)ݨp xK^|F9/z/:+_з8/~Op)NV#'L [ ;optgeo-2.21/aide/fr/optgeo.html0000750000175000017500000006311712246464517016646 0ustar georgeskgeorgesk Aide de Optgo

OptGo, version 2.20

Logiciel de simulation d'optique gomtrique deux dimensions

Ce logiciel  but ducatif est disponible sous license GNU General Public License, dont une copie est fournie avec la distribution. Vous pouvez donc librement l'utiliser, en faire des copies, et le modifier ( condition de respecter la license). Le code source est disponible sur le site de l'auteur.

Et si vous trouvez OptGeo utile, envoyez moi un petit courriel, a fait toujours plaisir !


I Fonctionnement du logiciel

Prsentation

Remarque importante: utilisation de la souris

Comment...

                ...ajouter un  lment ou une source

                ...dplacer un lment ou une source

                ...modifier un lment ou  une source

                ...supprimer un lment ou une source

              ...dupliquer un lment ou une source

               ...annuler une opration en cours

             ...grouper des lments

              ...annuler les dernires actions
Options


Prfrences (menu Fichier)


II Proprits des divers lments optiques

                1) Les sources lumineuses

                                            Rayon unique

                                            Source ponctuelle

                                            Onde plane

                2) Miroirs

                                            Miroir plan

                                            Miroir sphrique convexe idal

                                            Miroir sphrique concave idal

                                            Miroir sphrique convexe rel

                                            Miroir sphrique concave rel

                                            Miroir elliptique; parabolique; hyperbolique

                                            Lame semi-rflchissante

            3) Rgions rfractantes

                                            Lentille mince convergente idale

                                            Lentille mince divergente idale

                                            Lentille quelconque

                                            Sphre rfractante

                                            Polygne rfractant (dont: prisme, lame, etc...)

                                            Polycercle rfractant

                                            Prisme rfractant

            4) Surfaces absorbantes ou transparentes

                                            Ecran

                                            Diaphragme iris

                                            Oeil stylis

            5) Surface diffractante

                                            Rseau de diffraction


Prsentation
 Aprs avoir choisi les dimensions de son espace de travail, on dpose sur celui ci des miroirs (plans, sphriques, paraboliques, hyperboliques, elliptiques), des lentilles (minces ou paisses),  des volumes rfractants (sphres, prismes, lames, polyhdres), des lments divers (crans, diaphragmes, lames semi-rflchissantes), ainsi que des sources (ponctuelles relles, ponctuelles virtuelles, ondes planes, rayons uniques). Optgo trace les rayons lumineux., en utilisant les lois de Descartes. On peut aussi, dans certains cas, tracer des surfaces d'onde.
Le rpertoire "exemples" contient un certain nombre de simulations toutes faites.

Haut de la page


 


Remarque importante: utilisaton de la souris
 Un lment optique est repr par au moins 2 points. Lors de la saisie de l'lment la souris, il ne faut pas maintenir le bouton de la souris enfonc entre 2 points; pour un miroir plan par exemple, on fait un clic simple l'endroit o doit se situer le 1er bord du miroir, on relche le bouton, on va l'endroit o doit se situer le 2me bord, on clique et on relche.

Remarque: pour placer 2 points conscutifs sur une mme horizontale, faire un clic simple pour le premier point, puis enfoncer la touche "Ctrl" du clavier, la maintenir enfonce, faire le clic simple pour le second point, puis relcher la touche "Ctrl". Pour les placer sur une mme verticale, mme procdure avec la touche "Alt".

Haut de la page


 



Ajouter un  lment ou une source
 Pour chaque lment, il existe 2 mthodes d'ajout: la souris, et au clavier. La saisie la souris permet une saisie rapide, mais certaines proprits de l'lment dpos ont des valeurs standarts. La saisie au clavier est plus longue mais permet de rgler tous les paramtres. On peut aussi utiliser les 2 mthodes: saisie rapide la souris, puis modification des proprits au clavier.

    Pour saisir la souris: il suffit de cliquer sur l'icne de l'lment dans la barre d'outil, puis de saisir les diffrentes points: voir remarque importante sur l'utilisation de la souris.

    Pour saisir au clavier, il faut passer par le menu ajouter.


Remarque: obtention de miroirs trous: il peut tre utile dans certains cas de trouer les miroirs sphriques en leur centre (combinaisons optiques de certains tlscopes par exemple); pour cela, commencer par ajouter un miroir normal; puis modifier le miroir, et choisir dans la boite des proprits du miroir de le trouer et la taille du trou.

Haut de la page


 


Dplacer un lment ou une source
 Cliquez sur le bouton "Dplacer" dans la barre d'outil, ou passer par le menu "Edition" puis "Dplacement d'un lment" . Il apparat un certain nombre de cercles bleus, de croix vertes, et ventuellement de croix cyan sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant les oprations possibles. Il est ainsi possible de translater un lment (croix verte), de faire bouger un point sans faire bouger les autres (cercles bleus) (le curseur indique "rotation", bien que le terme soit impropre, le dplacement permettant aussi une dilatation ou rtraction de l'lment), de dplacer un centre de courbure ou un foyer (croix cyan).
La mthode est la suivante: lorsque le curseur a la forme dsir, on clique et on relche; on dplace la souris jusqu' destination, on clique et on relche; l'lment est redessin "en direct" au fur et mesure du dplacement.


Dplacement vertical: enfoncer la touche  Alt  et la maintenir enfonce; cliquer sur le point dplacer; l'amener la position voulue, cliquer pour le poser, et relcher enfin la touche  Alt .

Dplacement horizontal: enfoncer la touche  Ctrl  et la maintenir enfonce; cliquer sur le point dplacer; l'amener la position voulue, cliquer pour le poser, et relcher enfin la touche  Ctrl .


Important: une fois les modification effectues, il faut cliquer sur le bouton "Fin Dpl." de la barre d'outil pour revenir en mode normal.



Conseil: si vous avez du mal diffrencier 2 points trop proches, utilisez le zoom de la barre d'outil pour les sparer. Si vous n'y arrivez pas comme a, passez plutot par "Proprits".

Haut de la page


 


Modifier un lment ou  une source
 Cliquez sur le bouton "Proprits" dans la barre d'outil, ou passer par le menu "Edition" puis "Proprits d'un lment" . Il apparat un certain nombre de cercles bleus sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, indiquant "Proprits: clic". Un clic simple  lance alors l'ouverture de la fentre de proprits de l'lment considr. (c'est la mme fentre que lors d'un ajout  d'lment par le menu "Ajout").  On valide les modifications dans la fentre par le bouton "OK" ou on abandonne.
Important: une fois les modification effectues, il faut cliquer sur le bouton "Fin prop." de la barre d'outil pour revenir en mode normal.

Haut de la page


 


Supprimer un lment ou une source
 Cliquez sur le bouton "Supprimer" dans la barre d'outil, ou passer par le menu "Edition" puis "Suppression d'un lment" . Il apparait un certain nombre de cercles rouges sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme, prenant la forme d'un marteau. Un clic simple permet, aprs demande de confirmation, de supprimer l'lment correspondant.
Une fois la suppression effectue, le logiciel quitte automatiquement le mode suppression. Si en fin de compte on ne veut rien supprimer, il faut cliquer sur le bouton "Fin suppr." dans la barre d'outil.

Remarque : si on veut repartir d'une simulation vierge, passer par le menu "Fichier", puis "Nouvelle simulation".

Haut de la page


 
Grouper des lments

On peut grouper des lments afin de pouvoir les translater ensemble.
        - Premire mthode: cliquer sur le bouton "Gr." de la barre d'outil; sur chacun des lments prsents dans la simulation aparat une croix violette; il suffit de cliquer sur cette croix pour ajouter l'lment au groupe; une bote de dialogue confirme l'ajout de l'lment; une fois tous les lments souhaits ajouts, cliquer sur le bouton "Fin". Une bote de diaogue confirme la cration du groupe.
       - Deuxime mthode: menu "Edition" puis "Grouper des lments" puis "Tous les lments" ou "Elments choisir". Dans le second cas, la saisie des lments ajouter se fait comme dans la premire mthode. Dans le premier cas, un groupe est cr qui contient tous les lments prsents.

Dplacement d'un groupe: cliquer sur la bouton "Dplacer"; le groupe est reprsent par une croix verte et des lettres "Gr"; on peut alors le dplacer comme pour un lment classique. Ce point est l'isobarycentre des points caractristiques des lments constitutifs du groupe.

Destruction d'un groupe: comme pour les autres lments.
 

Haut de la page


 
Dupliquer un lment ou une source
 Cliquez sur le bouton "Dupliquer" dans la barre d'outil, ou passer par le menu "Edition" puis "Dupliquer un lment" . Il apparait un certain nombre de cercles bleus sur la simulation, autour des points caractristiques des lments prsents. Lorsqu'on passe le curseur de la souris au dessus de ces points, le curseur change de forme. Un clic simple permet alors de dupliquer l'lment correspondant.
Une fois la duplication effectue, le logiciel quitte automatiquement le mode duplication. Si en fin de compte on ne veut rien dupliquer, il faut cliquer sur le bouton "Fin dupl." dans la barre d'outil.
 
 


Haut de la page


Annuler une opration en cours

Pour annuler l'opration en cours, appuyer sur la touche 'Esc' du clavier alors que le curseur est au-dessus de l'espace de travail.

Haut de la page


Annuler/Rtablir les dernires oprations

Les dernires oprations ( savoir: ajout ou suppression d'un lment, modification de ses proprits, dplacement, groupement, duplication) peuvent tre annules (jusqu' 50 niveaux d'annulation) au moyen de la combinaison de touche Ctrl+Z (ou: menu "Edition", "Annuler"). Et si en fait on ne voulait pas annuler (seuls les sots ne changent jamais d'avis !), on rtablit au moyen de la combinaison de touche Ctrl+R (ou: menu "Edition", "Refaire").



Options

Grille

On peut utiliser une grille pour le reprage des points et/ou leurs saisie. Pour cela, passer par le menu "Options".
Si "Attraction de la grille" est coch, lors de la saisie d'un point, c'est le point le plus proche appartenant la grille qui est valid. Ceci est vrai lors de l'ajout d'lments et lors de leur translation.
Dans certaines situations, l'attraction n'est pas applique; c'est le cas par exemple lors de la saisie du foyer d'une lentille: les bords de la lentille tant dj choisis, l'axe focal est impos, et le foyer ne peut pas tre plac forcment sur un point de la grille.
L'affichage de la grille peut tre activ directement par la case cocher "Afficher la grille" dans la barre d'outil.

Normales

On peut demander ce que les normales aux dioptres et aux miroirs soient affiches. Pour cela, passer par le menu "Options" puis "Afficher les normales", ou par la case cocher "Afficher les normales" dans la barre d'outil. Un paramtrage plus fin du trac peut tre obtenu par le menu "Options", puis "Options des normales".
On peut aussi demander ce que les angles d'incidence et de rfraction soient affichs, soit par le menu "Options" puis "Afficher les angles", soit par la case cocher "Afficher les angles d'incidence et de rfraction" dans la barre d'outil.
Remarques: 1) l'option affichage des angles impose l'option affichage des normales
              2) les valeurs des angles sont donnes en ; le nombre de dcimales affiches peut tre rgl en passant par  le menu "Options" puis "Options des normales".
               3) pour les lment optiques  "idaliss" (lentilles minces, miroirs sphriques paraxiaux), les normales et angles ne sont pas tracs, puisque la reprsentation symbolique des ces lments en gomme la forme relle.

Association des fichiers .opt avec OptGeo

Si on choisit d'associer les fichiers de simulation .opt avec OptGeo, un double-clic sur un fichier .opt suffira pour l'ouvrir. L'installateur ne force pas ce choix,  vous tes libre d'utiliser ou pas cette possibilit.
 

Couleur de fond

Permet de changer la couleur de fond de la simulation.

Haut de la page


Prfrences
 
  Permet de choisir les attributs par dfaut des lments la cration (couleur, paisseur, police...).
 
 
 
 
 
 
 
 
 
 
 
 
 

optgeo-2.21/aide/fr/polycercle.gif0000750000175000017500000000452211446464777017317 0ustar georgeskgeorgeskGIF89a 333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,  H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ *QH*]!OJJj̨ZʵWZKlزhӪMzv۷pkK]swb޾ jÈ]pǐ:L2ɖ3ky9;MҨSόX&϶M6ƿmޭsnuz:q >\srśK|Vx=%vNk˫ozvߘ>7s~%'c "rK 5hfȐ2I$h"O#݊?"s0 %㌻Ոԍ8c(#uA e<ُ_%`LJVK"7%P$ Eז`Z%fW)֙&Qlyԛk&;"&e'-ũڟ$(lҡ%(}`:(Ex **) UݦB*TZjaB*N*j8+x뇹+vk.YHv*pzm%ە6 ^8'^v{մb˕JeDRn7j%/SKܷ=p^I.ett +|Pf:,_sK\-qpqU}ܱq$s&sr'r3 /T8sphVs5Cnu^4uav,^Ztn w6vz3wu#Gxjw+-ᇣ89ވ3N7>䔗y}.5k{^ܡns$};G5g3f+[t'UK.a:W=wݢaW~;>uߟXןUǿ=fwҘiq¿E6;beo֙`Sy0KwLC^P<"4 `\BJj|; ">Rg;M%]V B$&1AKdW( .Nb3,0JYt¨EprZI"(2S`t#/qm1:#LC/diώUt1P4i!7:Ʌ; Z# O$d%J .-,d]pq2SvtJH]Qm{JixJFܕ2B*"GgxXyU,Tgu9ݘqߴ5}?8FsMs_`iBP=<"YzF K>x>Z-$%|'h Rԗ489]O\(fQMS8jiC :4 %oJ2%`DeIn.j Miroir sphérique réel (troué on non)

  ou     (concave ou convexe)


Définition

Il est défini par les points 1 et 2 et le centre de courbure C (ou le rayon de courbure R). L'ordre des  points 1 et 2 est important, car il définit quelle est la face réfléchissante, l'autre étant absorbante, comme sur l'image ci-dessus.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second, puis un dernier clic pour placer le point C (il est placé automatiquement sur la médiatrice des points 1 et 2) (ne pas maintenir le bouton de la souris enfoncé entre les deux points),
OU
- menu "Ajouter" puis "Système optique réel" puis "Miroir sphérique concave" ou "Miroir sphérique convexe". On donne alors les coordonnées des points 1 et 2, la valeur de rayon de courbure, et la cractère obtu ou non du miroir (en effet, pour 1 et 2 donnés et le rayon de courbure donné, il existe deux miroirs sphériques; celui appelé "obtu" correspond à un angle d'ouverture (angle entre CM1 et CM2) obtu).


Options

On peut imposer
- que les hachures soient tracées ou non à l'écran
- que l'axe de symétrie du miroir soit tracé ou non
- l'épaisseur et la couleur du trait représentant le miroir à l'écran
- la couleur du trait représentant l'axe de symétrie à l'écran

On peut aussi choisir de trouer le miroir en son centre (pratique par exemple pour les télescopes de type Cassegrain).

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce miroir:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil








optgeo-2.21/aide/fr/sponctgrand.gif0000750000175000017500000000121511446465000017450 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jq#C4``IO\J)_P&ɔ4sTӦΟ>]Id͘E 2)PH\ʔT=}ʵ*O]3nM4ʨ0ڵ, 7dۂtbk2^|l E8kZ+~ um^Lx3fLv`6=;4}ƐF}sci.Z*[>79n =zؼZ;kc6=뽛{νb/}񛎞?h1ןDY H`P\ >Q Kf }1ၒYug%XR'J_I{TnXą\Ky^C-߉65v Iame2([]):ay\FY&N!%Qviܜ gIgi4ғܕ'Iމ'F jd$go(F:yH)[i)NiZRh:+J+뮼kEJ ^~Fl" :k"wlImfvl@;optgeo-2.21/aide/fr/rayongrand.gif0000750000175000017500000000070311446465000017273 0ustar georgeskgeorgeskGIF89add!,ddH*\Ȱ@#JHq"+jȑ!ƏCȓ(e˕,] ̛k3Ν=& TQ5*=tӁ0Jm*uiԪVb5JuЮ^y S+YfUf8Pŋ32X`G CjA(S>$i`K/UTa̙8A\N6} ˡH%hҧ 2= 0OZZ֚\.u6Teb׬mR\uEW[} ,a bw?xн/3֚9 * tאMGE?>dkGְMnyڍSY+'^Q߶L93/L^DX׏~~ؙyG`HTs ]M NwgR^f"݆x_u*a 027>8#)X Yc#"=VH3*٤Q2$F"9KZ _օ'^~Yf`dpl6cIUGhFבfy\z.'\Z(W٦y] ;optgeo-2.21/aide/fr/lmc.html0000750000175000017500000000612411446464777016130 0ustar georgeskgeorgesk Lentille mince paraxiale

  ou     (convergente ou divergente)


Définition

Elle est définie par les points 1 et 2 et le foyer F (ou F', peu importe) (ou la focale f').

La lentille peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points), puis un dernier clic pour saisir la position du foyer.
OU
- menu "Ajouter" puis "Système optique idéal" puis "Lentille mince convergente" ou "Lentille mince divergente". On donne alors les coordonnées des points 1 et 2, puis la valeur de la focale.


Options

On peut imposer
- que l'axe focal soit tracé ou non
-l'épaisseur et la couleur du trait représentant la lentille à l'écran
- la couleur du trait représentant l'axe focal à l'écran


Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Comme la lentille est représentée à l'écran par son schéma conventionnel plan, les normales et angles ne peuvent être affichés sur sa surface. Comme c'est une idéalisation d'une lentille réelle, les surfaces d'onde issues d'une source ponctuelle ou plane ne pourront être tracées si une telle lentille fait partie de la simulation.
A noter que les rayons suivent les régles habituelles de tracé des lentilles minces, même s'ils ne sont pas paraxiaux...

Retour à la page  d'accueil







optgeo-2.21/aide/fr/ecrangrand.gif0000750000175000017500000000063411446464777017262 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jȱLjB~I2H(79`}N:\k;WXWI/SL'Uo=Qٶh׎z+o'hn! wAhЃRؠbva@;optgeo-2.21/aide/fr/polysphere.html0000750000175000017500000001207311446464777017547 0ustar georgeskgeorgesk Polycercle réfractant

    


Définition

Il est défini par les sommets 1, 2, 3..., le caractère segment ou arc de cercle de chaque coté, et le sommet (ou le rayon de courbure) du coté si c'est un arc de cercle; et par les indices de réfraction.
Il ne doit pas y avoir d'intersection entre cotés non consécutifs; attention, le logiciel ne fait pas la vérification, et peut planter si vous ne respectez pas cette condition.
Le polycercle peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en choisissant le nombre de sommets via une boîte de dialogue, puis en faisant un clic simple pour saisir chacun des sommets (ne pas maintenir le bouton de la souris appuyé entre deux points), puis en saisissant le caractère segment ou arc de cercle de chacun des cotés, et enfin en cliquant pour chacun des sommets des arcs de cercle des cotés (s'il y en a).
OU
- menu "Ajouter" puis "Système optique réel" puis "Polycercle réfractant". On donne alors le nombre de sommets, puis les coordonnées des sommets, etc....


Options

On peut imposer
- la couleur à l'écran du polycercle
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce polycercle:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil












optgeo-2.21/aide/fr/prisme.html0000750000175000017500000001106311446464777016652 0ustar georgeskgeorgesk Prisme rfractant 

    


Dfinition

Il est dfini par son centre d'inertie G, l'angle au sommet, la hauteur, la direction de cette hauteur principale, et par les indices de rfraction.

Le prisme peut tre ajout:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le centre d'iinertie, puis un clic simple pour saisir le sommet principal (ne pas maintenir le bouton de la souris appuy entre deux points), puis un dernier clic qui fixe l'angle au sommet (en fixant un des 2 derniers sommets).
OU
- menu "Ajouter" puis "Systme optique rel" puis "Prisme".

Dplacement
On peut dplacer:
- le sommet principal: le prisme tourne alors de son centre d'inertie G, sa forme est inchange
- le centre d'inertie: translation du prisme
- les 2 autres sommets: avec l'un on modifie uniquement l'angle au sommet, avec l'autre on modifie uniquement la hauteur.



Options

On peut imposer
- la couleur l'cran du prisme
- les indices de rfraction dans le bleu, le vert et le rouge; par dfaut, les valeurs 1,8, 1,6 et 1,4 sont attribues. On peut aussi choisir directement un matriau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus prcisment, les indices sont donns pour les longueurs d'onde de rfrence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des lments proposs, cliquer ici.
- les conditions d'existence d'un rayon rflchi, dans le sens entrant et dans le sens sortant; le rayon rflchi peut exister "toujours", "jamais", "seulement si le rfract existe", "seulement si le rfract n'existe pas".  Lorsqu'il y a la fois un rayon transmis et un rayon rflchi, le rayon rflchi est un "rayon enfant", terminologie utilise dans la dfinition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces proprits peuvent tre rendues accessibles:
- la construction de la sphre si on passe par le menu "Ajouter"
- tout instant en cliquant sur le bouton "Proprits" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'lment dont on veut obtenir les proprits; ne pas oublier la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode proprits.

Divers

On peut demander que la normale soit trace chaque point d'intersection d'un rayon lumineux avec ce prisme:
- menu "Options", vrifier que "Afficher les normales" est coch
OU
- dans la barre d'outil, boite cocher "Normales"

On peut aussi demander que les angles d'incidence et de rfraction soient affichs (en ):
- menu "Options", vrifier que "Afficher les angles" est coch
OU
- dans la barre d'outil, boite cocher "Angles d'incidence et de rfraction"
L'angle de rflexion n'est pas affich, afin de ne pas surcharger les reprsentations.

Le nombre de  dcimales sur les angles est fix dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour la page  d'accueil













optgeo-2.21/aide/fr/polyhedregrand.gif0000750000175000017500000000112211446464777020156 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JH!3jxǏ )z I‹#M\)0%K.U|Y̖Qɳϟ@s>&УHIҧPJ3ի:[fefí!ة2ϖM%ٵ ۮ| -ʲt"k2^|I[0XÄupc\佖>vf65w x4ϠfLzræ[V-ubfq[lޯ}cZY }rkG^عCύľ\wpq{~Dek/zө>|}wZ蕀RǜhW 2 d VanVfFSU7")ִ"\!^1j8cX"';#[x8[c–y7b?EG5R8T=dW^7_5`Ey&9fr9ryDt''R Xeph\c>*餔Vj)^c)dHW*[ꪬjb;optgeo-2.21/aide/fr/lmcgrand.gif0000750000175000017500000000104111446464777016736 0ustar georgeskgeorgeskGIF89add!,ddH@Ç#Jh!C3jhѢBCر#†Q\AɒUlIE ʬ!H./IaNAw.,4Д9VlJuSW.Z5kROr#ٳ:U)۶pFKlݻoͫ,߾\*x۹#NLx1^C+h-/c^yΞmF1iΦONZ4!AÎ({Oֶ'֞>VZ_?LgW"_~hw,1ۀƆ^:MHZ]X!{ea܇":8ؚxḙX!91ٗzA JYtuamcrsyaWy&e^(PUyOĵcpy{F8nzިY*;optgeo-2.21/aide/fr/lentille.html0000750000175000017500000001215511446464777017166 0ustar georgeskgeorgesk Lentille

     


Définition

C'est le milieu compris entre deux portions de sphère; il faut se donner les sommets S1 et S2 des deux faces de la lentille, et les centres de courbure C1 et C2 de ces faces (ou les rayons de courbure R1 et R2); et  les indices de réfraction. Et le diamètre D de la lentille.

La lentille peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir chacun des sommets (ne pas maintenir le bouton de la souris appuyé entre deux points), puis en faisant un clic simple pour saisir chacun des centres de courbure (ils sont automatiquement ramenés sur l'axe S1S2), et enfin en saisissant le diamètre de la lentille.
OU
- menu "Ajouter" puis "Système optique réel" puis "Lentille".


Options

On peut imposer
- la couleur à l'écran de la lentille
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.

Remarque: si la lentille est à bords minces et qu'on impose un diamètre plus grand que son diamètre "naturel", la valeur du diamètre est automatiquement ramenée à la valeur "naturelle".

Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec cette lentille:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil













optgeo-2.21/aide/fr/oeilgrand.gif0000750000175000017500000000111311446464777017113 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋ3jȱǏ CIIR8ʔ-c.| S͂4k޼SΘ=Ws(ќFeMr)ӓABu*udԪ$bT֏]}~VXe͞ҵ;QtڽK3Km7 |81xUp㰄-됲DY1g^iX,]-nZg?wL{A}Qdq1NQ,c ]޻p+Ԏztןt9z9賹s{ z2/}1uןAxSmI^uӄ n%t6|dmȡ{е[x{,H,ތ*hF)|&E92i2_4udE~LI:dwU5eeQ%_MJ^AiXui&gY9njgTH'eމgzg Jhf.ʨj&*(h>ZfBfrn ꨤjꩨh@;optgeo-2.21/aide/fr/lsrgrand.gif0000750000175000017500000000077111446464777016774 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JHŋhcAn#ɒGDiq%ˁ*9e̙k̙<{2У"]Q%ӧMGBsԩfuukH]!jVذFݘ,ڄj6%Ѥ\ޭk2½|sxඅwjcs7%Xi+[f# ъ)z`ծ-tkzwnpnlaGraC*}@\v㰻\:΍v'J>yg -v[}_G\yF}. R蟅aq8ЁȜȑHțH蚌шh|!YWkn8-SZ $dU&u[եX_)di;optgeo-2.21/aide/fr/lsr.html0000750000175000017500000000775011446464777016163 0ustar georgeskgeorgesk Lame semi-réfléchissante

 


Définition

Elle est défini par les points 1 et 2.

La lame peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Lame semi-réfléchissante".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant la lame à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Remarques importantes


1) Lorsqu'un rayon lumineux arrivesur cette lame, il donne naissance à un rayon réfléchi et à un rayon transmis. Dans la terminologie utilisée dans ce logiciel, le rayon transmis est appelé "rayon enfant" (comportement contraire aux autres éléments réfractants, pour lesquels le rayon enfant est le rayon réfléchi). Pour une source ponctuelle, une onde plane, ou un rayon unique, le nombre maximal de rayons enfants est imposé (voir les propriétés de ces éléments).
2) La lame est idéale en ce sens qu'elle est infiniment mince: il n'y a pas de décalage latéral entre le rayon incident et le rayon transmis.



Divers


On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec cette lame:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil








optgeo-2.21/aide/fr/op.html0000750000175000017500000001310511446464777015770 0ustar georgeskgeorgesk

Onde plane


     



Définition

Elle est définie par les points  1, 2 et D, et par le nombre de rayons lumineux composant le faisceau.

L'onde plane peut être ajoutée:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le point 1, puis en faisant un clic simple pour saisir le point D, puis en faisant un clic simple pour saisir le point 2 (ne pas maintenir le bouton de la souris enfoncé entre les deux points); et enfin en donnant dans la boite de saisie qui s'ouvre alors, le nombre de rayons composant le faisceau. Le point2 sera automatiquement ramené sur la perpendiculaire à 1D passant par 1.
OU
- menu "Ajouter" puis "Source" puis "Onde plane".



Options

On peut imposer
-l'épaisseur du trait représentant les rayons à l'écran

- la couleur des rayons; ce n'est pas simplement la couleur représentée à l'écran, mais aussi la couleur qui détermine l'indice de réfraction pour les milieux réfractants dispersifs; un rayon de lumière blanche est composé de trois rayons rouge, vert et bleu.

- le nombre maximal de rayons enfants; lorsque le rayon arrive sur un dioptre, il donne en général naissance à un rayon réfléchi et à un rayon transmis; le rayon réfléchi est appelé ici "rayon enfant" (sauf dans le cas de la lame semi-réfléchissante idéale); par défaut, le nombre maximal d'enfants est de 10. Remarque: un enfant peut avoir lui aussi des enfants, mais son nombre maximal d'enfant est celui de son rayon parent diminué de 1. Le nomre de rayons enfant s'applique à chacun des rayons composant le faisceau.

- le fait qu'il existe ou pas un rayon réfléchi en plus du rayon réfracté est une propriété de chaque élément réfractant

- si il n'y a pas de réfraction (angle d'indicence plus grand que l'angle limite), le rayon réfléchi est un rayon simple, pas un enfant



- on peut demander à ce que les prolongements des différents segments qui composent le trajet d'un rayon soient tracés en pointillés, vers l'avant ou vers l'arrière, et ce pour chacun de rayons qui composent le faisceau; il suffit de préciser la liste des segments concernés (segments numérotés dans l'ordre de propagation du rayon); ainsi, si le cheminement du rayon est le suivant:

et qu'on demande le prolongement (1,2,4) vers l'avant et (3,4) vers l'arrière,
alors on obtient:






- Tracé des surfaces d'onde: on peut demander le tracé de surfaces d'onde; il suffit d'indiquer la valeur du chemin optique pour lequel on veut effectuer le tracé. Cela ne reléve pas vraiment de l'optique géométrique, mais on ne paye pas plus cher...Le plan  1-2, perpendiculaire aux rayons lumineux, est supposé être un plan d'onde, et constitue l'origine pour le calcul du chemin optique.
A noter que pour que le tracé soit pris en compte, la simulation ne doit comporter ni miroir sphérique paraxial, ni lentille mince paraxiale; ces éléments sont en effet des idéalisations, schématisées par des surfaces planes alors qu'ils sont en réalité sphériques, et on ne peut pas calculer les chemins optiques correctement dans ce cas. Mais rien n'empêche d'utiliser miroir sphérique réel et lentille réelle...


Ces propriétés peuvent être rendues accessibles:
- à la construction du rayon si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil











optgeo-2.21/aide/fr/miroirconique.html0000750000175000017500000000744711446464777020253 0ustar georgeskgeorgesk Miroir parabolique, elliptique, ou hyperbolique(concave ou convexe)

 




Définition

Il est défini par les points 1 et 2 (extrémités du miroir), le foyer F, et le sommet S.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme du miroir conique (concave ou convexe), puis en faisant un clic simple pour saisir le  point 1, puis en faisant un clic simple pour saisir le foyer, puis en faisant un clic simple pour saisir lesommet, puis en faisant un clic simple pour saisir le point 2 (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique réel" puis "Miroir cônique ". Dans ce cas, on définit le miroir par les coordonnées de F, l'angle polaire de l'axe focal (angle entre Fx et FS, compté positif dans le sens antihoraire), les angles polaires de FM1 et FM2 (M1 et M2 étant les extrémités du miroir), le paramétre de la conique, et son excentricité. On  donne aussi le caractère concave ou convexe du miroir.


Options

On peut imposer
-que les hachures soient tracées ou non à l'écran
-l'épaisseur et la couleur du trait représentant le miroir à l'écran
- que l'axe focal soit tracé ou pas à l'écran entre F et S
- la couleur de l'axe focal à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce miroir:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil





optgeo-2.21/aide/fr/oeil.html0000750000175000017500000000450311446464777016304 0ustar georgeskgeorgesk Diaphragme Oeil stylisé
 


Définition

Il est défini à la souris par les points  1 (rétine) et 2 (centre pupille). Toutes les parties de cet oeil sont aborbantes.

L'oeil peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le point 1, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Divers" puis "Oeil stylisé".

Remarque: cet oeil est optiquement inactif, il ne sert pas à représenter le cheminement des rayons jusqu'à la rétine.


Options

On peut imposer
-l'épaisseur  des traits du bord de l'oeil
- la couleur de l'oeil (c'est-y-pas mignon tout plein...)
Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Quand on est en mode déplacement, on peut:
- translater l'oeil en le prenant par la rétine
- changer son orientation et sa tailleen utilisant l'autre point

Retour à la page  d'accueil





optgeo-2.21/aide/fr/lmdgrand.gif0000750000175000017500000000103011446464777016735 0ustar georgeskgeorgeskGIF89add!,ddH †#JHB/VȱFA|豤I" 9ɗ0GbLIХØ8c^fΟwJ4(O>*xTҧZJԞUfl*0֬Wt,ٳ =kvڶn٪ v.]p]W.߾_.kw0Q"N t1㜎,,f'/c.yѿv]q4鉦OGL*(_Ckcٜi#u:G,}8*!g??waA>t5Zα9mϻ~%-ݫ?>뾿޾Jݧ{wxD^bYj > q~a9aFa~k"ԅ" ؚx񸙏Y!19AٗzQy eވEev1[r٘=9SIRn4GKR"9s%;optgeo-2.21/aide/fr/reseaugrand.bmp0000750000175000017500000007264612246323601017456 0ustar georgeskgeorgeskBMuv(dd0u  444BBBل$$$PPPBBBCCCCCC،٘BBBBBB444PPPBBB444BBB$$$PPP]]]444BBB444IIIQQQ444BBBBBBBBBBBBBBBQQQCCC444׈$$$ܘBBB444BBBBBB;;;BBB444;;;BBBBBB444BBBBBBoptgeo-2.21/aide/fr/diaphragmegrand.gif0000750000175000017500000000270511446464777020274 0ustar georgeskgeorgeskGIF89ah333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,h H*\ȰÇ#JHŋ3jȱǏ Cȓ TEaYQ&͛mܩP'O%}3(BDO4ȥ: RS͚*ן^ +&ٲ3ϢEvVnn۲-]vz̫w#߾(xp͹?N,*cň,0//c> wsΞIjq1飣O;4:j=_NzvLٶMm߰6ⴉޚiϕzu鹭o־oÏ#G-~W/ռ/r}.}1x&a ֠`_V7C^bxalE_("" q.h4h+81@XcHdH&:KF)cHt%%&^epP6 =;aR)t5fsfY|V<砄Jѝ!6(G^hwp)W)jrz:d ꧠ ¢ Zk8^l\k+U[ˢތ:mY~Rղ7jkm˕S.岋ڨnWrKo~K"g/X S51Kpcpz1 r"\+lǏ;optgeo-2.21/aide/fr/miroirspheriqueparaxial.html0000750000175000017500000000656311446464777022335 0ustar georgeskgeorgesk Miroir sphérique paraxial (troué on non)

ou     (concave ou convexe)


Définition

Il est défini par les points 1 et 2 et le foyer F (ou la focale f'). L'ordre des  points 1 et 2 est important, car il définit quelle est la face réfléchissante, l'autre étant absorbante, comme sur l'image ci-dessus.

Le miroir peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points), puis un dernier clic pour saisir la position du foyer
OU
- menu "Ajouter" puis "Système optique idéal" puis "Miroir sphérique concave" ou "Miroir sphérique convexe". On donne alors les coordonnées des points 1 et 2, puis la valeur de la focale.


Options

On peut imposer
-que les hachures soient tracées ou non à l'écran
- que l'axe focal soit tracé ou non
-l'épaisseur et la couleur du trait représentant le miroir à l'écran
- la couleur du trait représentant l'axe focal à l'écran

On peut aussi choisir de trouer le miroir en son centre (pratique par exemple pour les télescopes de type Cassegrain).

Ces propriétés peuvent être rendues accessibles:
- à la construction du miroir si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

Comme le miroir est représenté à l'écran par son schéma conventionnel plan, les normales et angles ne peuvent être affichés sur sa surface. Comme c'est une idéalisation du miroir sphérique réel, les surfaces d'onde issues d'une source ponctuelle ou plane ne pourront être tracées si un tel miroir fait partie de la simulation.

Retour à la page  d'accueil







optgeo-2.21/aide/fr/polyhedre.html0000750000175000017500000001166111446464777017352 0ustar georgeskgeorgesk Polygône réfractant (dont: prisme, lame à faces parallèles, etc...)

   


Définition

Il est défini par les sommets 1, 2, 3..., et par les indices de réfraction.
Le polygône doit être connexe (il ne doit pas y avoir d'intersection entre cotés non consécutifs); le logiciel vérifie cette condition de connexité.
Le polygône peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en choisissant le nombre de sommets via une boîte de dialogue, puis en faisant un clic simple pour saisir chacun des sommets (ne pas maintenir le bouton de la souris appuyé entre deux points).
OU
- menu "Ajouter" puis "Système optique réel" puis "Polygône réfractant". On donne alors le nombre de sommets, puis les coordonnées des sommets.


Options

On peut imposer
- la couleur à l'écran du polygône
- les indices de réfraction dans le bleu, le vert et le rouge; par défaut, les valeurs 1,8, 1,6 et 1,4 sont attribuées. On peut aussi choisir directement un matériau dans une liste qui comprend quelques verres, l'eau, et des plastiques optiques. Plus précisément, les indices sont donnés pour les longueurs d'onde de référence suivantes: 486,1nm, 587,6nm et 656,3nm. Pour modifier la liste des éléments proposés, cliquer ici.
- les conditions d'existence d'un rayon réfléchi, dans le sens entrant et dans le sens sortant; le rayon réfléchi peut exister "toujours", "jamais", "seulement si le réfracté existe", "seulement si le réfracté n'existe pas".  Lorsqu'il y a à la fois un rayon transmis et un rayon réfléchi, le rayon réfléchi est un "rayon enfant", terminologie utilisée dans la définition du rayon unique, de la source ponctuelle, et de l'onde plane.


Ces propriétés peuvent être rendues accessibles:
- à la construction de la sphère si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.

Divers

On peut demander que la normale au miroir soit tracée à chaque point d'intersection d'un rayon lumineux avec ce polygône:
- menu "Options", vérifier que "Afficher les normales" est coché
OU
- dans la barre d'outil, boite à cocher "Normales"

On peut aussi demander que les angles d'incidence et de réfraction soient affichés (en °):
- menu "Options", vérifier que "Afficher les angles" est coché
OU
- dans la barre d'outil, boite à cocher "Angles d'incidence et de réfraction"
L'angle de réflexion n'est pas affiché, afin de ne pas surcharger les représentations.

Le nombre de  décimales sur les angles est fixé dans la boite de dialogue des options des normales: menu "Options" puis "Options des normales"

Retour à la page  d'accueil













optgeo-2.21/aide/fr/ecran.html0000750000175000017500000000716311446464777016451 0ustar georgeskgeorgesk Ecran Ecran
 


Définition

Il est défini par les points 1 et 2. Les deux faces sont absorbantes.

L'écran peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Ecran".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant l'écran à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil





Ecran Ecran
 


Définition

Il est défini par les points 1 et 2. Les deux faces sont absorbantes.

L'écran peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Système optique idéal" puis "Ecran".


Options

On peut imposer
-l'épaisseur et la couleur du trait représentant l'écran à l'écran

Ces propriétés peuvent être rendues accessibles:
- à la construction de l'écran si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil





optgeo-2.21/aide/fr/mscoregrand.gif0000750000175000017500000000112411446464777017455 0ustar georgeskgeorgeskGIF89add!,ddHP JHQ"#dǏ/b|QcI(SX%Ž*czI7e\&N;iSdNHq,z44Q2=ҝ>7*3ԣM y2س$],۷T]B ܅U뮕V/ڲ[U+~C͋ݾlbx3玝=[IYtW¦N:4kǮ_fXWtm,[%޷s{i׼wMW8pG6Ǯ]u۸yvb[uW/kuхk X~c (Ԃp98{IHf7!%x܀⅔7"zYE$QXWn š~,݈r:>$(VDC*g_;nW#2#VJ$ta$iU^Tl}yi\Y^e?tcNeSgFb)"B陝5^K%hcj^o,~h}4v:g9פB.F$.:(-nbB9*&;optgeo-2.21/aide/fr/prismegrand.png0000750000175000017500000000102611446464777017504 0ustar georgeskgeorgeskPNG  IHDRddJ,sRGBPLTEٟ pHYs  tIME+Q.IDAT8U1n0P[tŖ*s@Gä *uaB ATZZ`?Cΰ(8_x]1:w'),RgJ|U 9#5AjFWj/ú-PN8\-XgǢ3Ж4-Kl3Rٰz%*+܊hN+kPꀏ+o*x(1bxX3p,*ykYڬ B 'uR/?b,ȢHQ!ٻ %o~M-$2OxIj#J~-I{cܣdsIsPcT&TšQ{&:+J!8' H Ԣft#WMH)驋JbbQB (uJ*()٦oBm7f IENDB`optgeo-2.21/aide/fr/segment1.gif0000750000175000017500000000345011446465000016654 0ustar georgeskgeorgeskGIF89aW333ffffff33̙33ff333f33ff33f3f33fff3̙ff3f3̙̙3ff̙3fff3̙3f333ff3f33fff3f3ff3ff33f3f33ff3f3̙33ff333f33ff333f3f3ff3ff̙f3f33̙ff̙3f3ff3f333ff3f33ff3ff3ff3f3f3f33f3ff33f33ff333f33ff33f3f33fff3f3ff̙3̙3ff3ff3f̙̙3f333ff3f33ff3fff3f3f3f3f33f3!,W H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0)I͛8sɳ> JѣHe&]ʴӧPF*իXj ֯`Ê+ٳhӪ]k,۷pʝ[-ݻxejw߿+È'N̸cËKLmʘ3k&yϠvM闣O^cְcnz۲k͛S-—+_8:Nֳk}EO>VϾ}ˇy~S> H):HYi[W ("r(G,b&m8#V3X9) I?!Z ByOrH%uWetRF^SnY1Y)!rj&w&'雟J:Y|ip{&X-XBhE)c^Pm'y r Bl Vw~_Ɗ[!kw1NA۪1IoKmGJ֭p [mk:ַnM dB{lV(z{Rq,>"#30wZ|1w+5hǗ,kgEqT"_r'7rU/ O -6s)\j^@/٠E%M>t6OEV+aZ;ui`k]eg; lxpݤom7A=ޣf7O~n-+j8QAjZ>9ws.VT ~:}K.%Izh;KGwR+)1C:?{7+gkܓ6'/[r^ſ]fkoQ#g}LB 5c ĵ^7( r0q DHxX:! _Zυ0 c!p7!tú3(;optgeo-2.21/aide/fr/rayon.html0000750000175000017500000000762611446465000016471 0ustar georgeskgeorgesk Rayon lumineux unique

 


Définition

Il est défini par les points 1 et 2.

Le rayon peut être ajouté:
- en cliquant sur le bouton de la barre d'outil ayant la forme ci-dessus, puis en faisant un clic simple pour saisir le premier point, puis en faisant un clic simple pour saisir le second (ne pas maintenir le bouton de la souris enfoncé entre les deux points)
OU
- menu "Ajouter" puis "Source" puis "Rayon unique".


Options

On peut imposer
-l'épaisseur du trait représentant le rayon à l'écran

- la couleur du rayon; ce n'est pas simplement la couleur représentée à l'écran, mais aussi la couleur qui détermine l'indice de réfraction pour les milieux réfractants dispersifs; un rayon de lumière blanche est composé de trois rayons rouge, vert et bleu.

- le nombre maximal de rayons enfants; lorsque le rayon arrive sur un dioptre, il donne en général naissance à un rayon réfléchi et à un rayon transmis; le rayon réfléchi est appelé ici "rayon enfant" (sauf dans le cas de la lame semi-réfléchissante idéale); par défaut, le nombre maximal d'enfants est de 10. Remarque: un enfant peut avoir lui aussi des enfants, mais son nombre maximal d'enfant est celui de son rayon parent diminué de 1.

- le fait qu'il existe ou pas un rayon réfléchi en plus du rayon réfracté est une propriété de chaque élément réfractant

- si il n'y a pas de réfraction (angle d'indicence plus grand que l'angle limite), le rayon réfléchi est un rayon simple, pas un enfant

- on peut demander à ce que les prolongements des différents segments qui composent le trajet du rayon soient tracés en pointillés, vers l'avant ou vers l'arrière; il suffit de préciser la liste des segments concernés (segments numérotés dans l'ordre de propagation du rayon); ainsi, si le cheminement du rayon est le suivant:

et qu'on demande le prolongement (1,2,4) vers l'avant et (3,4) vers l'arrière,
alors on obtient:




Ces propriétés peuvent être rendues accessibles:
- à la construction du rayon si on passe par le menu "Ajouter"
- à tout instant en cliquant sur le bouton "Propriétés" de la barre d'outil, puis en cliquant sur un des cercles bleus qui apparaissent sur l'élément dont on veut obtenir les propriétés; ne pas oublier à la fin de cliquer sur le bouton "Fin prop." de la barre d'outil pour quitter le mode propriétés.


Retour à la page  d'accueil







optgeo-2.21/aide/fr/anglegrand.gif0000750000175000017500000000101711446464777017254 0ustar georgeskgeorgeskGIF89add!,ddH*\ȰÇ#JH"CXȱAzIƏ'K\iP$˗*]œQ&͛ m3̝=RQD3=(ӧN*5(ժMbuЫ^i s,YfϖL$۶(wźv)q/_~: ,ؤWTV&?]t`nIp)tixyS@;optgeo-2.21/saisiemscepa.lfm0000750000175000017500000004633112247333133016305 0ustar georgeskgeorgeskobject saisiemiroirscepa: Tsaisiemiroirscepa Left = 275 Height = 434 Top = 115 Width = 479 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un miroir sphérique convexe paraxial' ClientHeight = 434 ClientWidth = 479 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFF000FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFF FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFF00000FFFFFFF0FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFF000000FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF000000FFFFFFFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF000000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 0FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFF0FFF0F0FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF0000FFFF0FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFF0FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000000000000000FF0 000FF000000000FF0000FF000000000000FF0000FF0000000000FF0000FF0000 000000FF0000FFFFFFFF00000000000000000FF0000FF000000000FF0000FF00 0000000000FF0000FF0000000000FF0000FF0000000000FF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F00000FFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF000000FFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000F0FFF0FF000000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFF00000FFF0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFF0FFFF F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFF0000FF0FFFFFFF0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFF0000F0FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000FFFFFFFFFFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF00000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000 00FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF000000FFFFF0FFFF0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFF000000FFFF0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF00000FFFF F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 120 Top = 0 Width = 169 Caption = 'Point 1' ClientHeight = 102 ClientWidth = 165 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 280 Height = 113 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 95 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 105 Top = 128 Width = 129 Caption = 'Couleur du miroir' ClientHeight = 87 ClientWidth = 125 TabOrder = 2 object Colorgrid1: TColorBox Left = 12 Height = 22 Top = 32 Width = 90 ItemHeight = 16 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 8 Height = 81 Top = 240 Width = 184 Caption = 'Epaisseur trait à l''écran' ClientHeight = 63 ClientWidth = 180 TabOrder = 3 object editepaisseur: TSpinEdit Left = 40 Height = 21 Top = 24 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox5: TGroupBox Left = 200 Height = 81 Top = 240 Width = 129 Caption = 'Aspect' ClientHeight = 63 ClientWidth = 125 TabOrder = 4 object cochehachures: TCheckBox Left = 16 Height = 17 Top = 16 Width = 65 Caption = 'Hachures' Checked = True State = cbChecked TabOrder = 0 end object cocheaxe: TCheckBox Left = 16 Height = 17 Top = 40 Width = 78 Caption = 'Axe optique' Checked = True State = cbChecked TabOrder = 1 end end object GroupBox6: TGroupBox Left = 280 Height = 65 Top = 120 Width = 161 Caption = 'Focale' ClientHeight = 47 ClientWidth = 157 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 16 Width = 21 Caption = '|f|=' ParentColor = False end object log5: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log5' ParentColor = False end object editfocale: TEdit Left = 24 Height = 21 Top = 16 Width = 89 TabOrder = 0 end end object GroupBox7: TGroupBox Left = 144 Height = 105 Top = 128 Width = 129 Caption = 'Couleur de l''axe' ClientHeight = 87 ClientWidth = 125 TabOrder = 6 object gridaxe: TColorBox Left = 14 Height = 22 Top = 32 Width = 96 ItemHeight = 16 TabOrder = 0 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 400 Width = 433 Caption = 'Supprimer ce miroir' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 7 end object GroupBox8: TGroupBox Left = 8 Height = 64 Top = 328 Width = 433 Caption = 'Trouer le miroir en son centre' ClientHeight = 46 ClientWidth = 429 TabOrder = 8 object StaticText6: TLabel Left = 118 Height = 14 Top = 21 Width = 86 Caption = 'Diamètre du trou:' ParentColor = False end object log6: TLabel Left = 366 Height = 14 Top = 17 Width = 21 Caption = 'log6' ParentColor = False end object checktrou: TCheckBox Left = 16 Height = 17 Top = 21 Width = 52 Caption = 'Trouer' OnClick = checktrouClick TabOrder = 0 end object editdiametretrou: TEdit Left = 216 Height = 21 Top = 17 Width = 145 Enabled = False TabOrder = 1 end end object BitBtn1: TBitBtn Left = 336 Height = 75 Top = 192 Width = 128 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 9 end object BitBtn2: TBitBtn Left = 336 Height = 48 Top = 273 Width = 128 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 10 end end optgeo-2.21/saisief1.lfm0000750000175000017500000005124712247333133015345 0ustar georgeskgeorgeskobject saisiefle1: Tsaisiefle1 Left = 356 Height = 519 Top = 218 Width = 793 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un trait, fléche...' ClientHeight = 519 ClientWidth = 793 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 105 Top = 0 Width = 105 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000000000 000000000000000080000080000000808000800000008000800080800000C0C0 C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF0 FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFF000FFFFFFFFF0F0FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFF0000FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0000FFFFFFFFFFFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF000000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF000000000000FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF0000FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF000F FFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00FFFFFF00000000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF00 000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF0000000 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF FFFFFFFFFFFFFF0000000FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF00000000FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 00000FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFF FFF0FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFF0FFFFF0FFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00000000FFFFFFFFFFFFF0FFF0FFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFF FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFF0 0FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF00FFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00000000FFFFFFF00FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF00FFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF00000000FFFFF00FFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000 000FFFF00FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00000000FF00FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F0 0FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF000000000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF000000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object radioext1: TRadioGroup Left = 0 Height = 225 Top = 112 Width = 201 AutoFill = True Caption = 'Forme de la première extrémité' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 207 ClientWidth = 197 ItemIndex = 0 Items.Strings = ( 'Normale' 'Fléche' 'Trait perpendiculaire' 'Cercle' 'Croix +' 'Croix x' 'Disque' ) TabOrder = 0 end object radioext2: TRadioGroup Left = 208 Height = 225 Top = 112 Width = 201 AutoFill = True Caption = 'Forme de la seconde extrémité' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 207 ClientWidth = 197 ItemIndex = 0 Items.Strings = ( 'Normale' 'Fléche' 'Trait perpendiculaire' 'Cercle' 'Croix +' 'Croix x' 'Disque' ) TabOrder = 1 end object GroupBox1: TGroupBox Left = 0 Height = 120 Top = 344 Width = 208 Caption = 'Taille de la première extrémité' ClientHeight = 102 ClientWidth = 204 TabOrder = 2 object StaticText1: TLabel Left = 16 Height = 14 Top = 56 Width = 125 Caption = 'en 1/1000 de la diagonale' ParentColor = False end object StaticText3: TLabel Left = 24 Height = 14 Top = 80 Width = 102 Caption = 'de l''espace de travail' ParentColor = False end object spintaille1: TSpinEdit Left = 56 Height = 21 Top = 24 Width = 57 MaxValue = 1000 MinValue = 1 TabOrder = 0 Value = 10 end end object GroupBox2: TGroupBox Left = 216 Height = 122 Top = 344 Width = 193 Caption = 'Taille de la seconde extrémité' ClientHeight = 104 ClientWidth = 189 TabOrder = 3 object StaticText2: TLabel Left = 16 Height = 14 Top = 56 Width = 125 Caption = 'en 1/1000 de la diagonale' ParentColor = False end object StaticText4: TLabel Left = 24 Height = 14 Top = 80 Width = 102 Caption = 'de l''espace de travail' ParentColor = False end object spintaille2: TSpinEdit Left = 56 Height = 21 Top = 24 Width = 57 MaxValue = 1000 MinValue = 1 TabOrder = 0 Value = 10 end end object GroupBox3: TGroupBox Left = 416 Height = 65 Top = 112 Width = 224 Caption = 'Epaisseur du trait' ClientHeight = 47 ClientWidth = 220 TabOrder = 4 object spinepaisseur: TSpinEdit Left = 62 Height = 21 Top = 8 Width = 49 MaxValue = 10 MinValue = 1 TabOrder = 0 Value = 1 end end object radiostyletrait: TRadioGroup Left = 416 Height = 153 Top = 184 Width = 226 AutoFill = True Caption = 'Style du trait (valable si épaisseur=1)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 135 ClientWidth = 222 ItemIndex = 0 Items.Strings = ( 'Plein' 'Pointillés' 'Tirés' 'Tirés - Points' 'Tirés - Points - Points' ) TabOrder = 5 end object GroupBox4: TGroupBox Left = 416 Height = 119 Top = 344 Width = 226 Caption = 'Couleur du trait' ClientHeight = 101 ClientWidth = 222 TabOrder = 6 object Colorgrid1: TColorBox Left = 30 Height = 22 Top = 40 Width = 135 ItemHeight = 16 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 112 Height = 105 Top = 0 Width = 264 Caption = 'Coordonnées point 1' ClientHeight = 87 ClientWidth = 260 TabOrder = 7 object StaticText5: TLabel Left = 16 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 16 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 176 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 176 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 40 Height = 21 Top = 24 Width = 129 TabOrder = 0 end object edity1: TEdit Left = 40 Height = 21 Top = 64 Width = 129 TabOrder = 1 end end object GroupBox6: TGroupBox Left = 384 Height = 105 Top = 0 Width = 258 Caption = 'Coordonnées point 2' ClientHeight = 87 ClientWidth = 254 TabOrder = 8 object StaticText7: TLabel Left = 16 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText8: TLabel Left = 16 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 160 Height = 14 Top = 24 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 160 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 32 Height = 21 Top = 24 Width = 121 TabOrder = 0 end object edity2: TEdit Left = 32 Height = 21 Top = 64 Width = 121 TabOrder = 1 end end object boutonsup: TBitBtn Left = 8 Height = 43 Top = 469 Width = 401 Caption = 'Supprimer ce trait' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 9 end object BitBtn1: TBitBtn Left = 648 Height = 504 Top = 8 Width = 134 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 10 end object BitBtn2: TBitBtn Left = 416 Height = 43 Top = 469 Width = 226 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 11 end end optgeo-2.21/optgeo.manifest0000750000175000017500000000142712247333133016161 0ustar georgeskgeorgesk Your application description here. optgeo-2.21/monimprimante.pas0000750000175000017500000013333712247333133016526 0ustar georgeskgeorgesk unit MonImprimante; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,LCLProc,Math, printers,UnitScaleFont; type TMyimprimante=Object Xmin,Xmax,Ymin1,Ymax1,Ymin2,Ymax2,GraduationX, GraduationY1,GraduationY2:extended; Largeur,Hauteur,BordureBasse,BordureHaute, BordureGauche,BordureDroite,EpaisseurGrille,PuissanceDeDixX, PuissancedeDixY1,PuissancedeDixY2,epaisseurcadre,epaisseurgraduation:integer; longueurgraduationX,longueurgraduationY1,longueurgraduationY2:extended; PasGrillex,PasGrilley1,PasGrilley2:extended; couleurfondsim,couleurcadre,couleurgraduation, couleurgrille1,couleurgrille2:tcolor; cadre,gradue,grille1,grille2,fond,borduresverticalessymetriques,echelle_g,echelle_d:boolean; titre,labelx,labely1,labely2,unitex,unitey1,unitey2:string; fontegraduation:tfont; fontetitre:tfont; procedure background(couleur:tcolor); function LimitesEtAxes(_xmin,_xmax,_ymin1,_ymax1,_ymin2,_ymax2:extended; _Largeur,_Hauteur:integer; _titre:string; _fontetitre:tfont; _Fond:boolean; _CouleurFondsim:tcolor; _Cadre:boolean; _EpaisseurCadre:integer; _CouleurCadre:tcolor; _Gradue:boolean; _EpaisseurGraduation,_LongueurGraduation:integer; _couleurgraduation:tcolor; _fontegraduation:tfont; _Grille1,_Grille2:boolean; _EpaisseurGrille:integer; _CouleurGrille1,_CouleurGrille2:tcolor; _labelx,_labely1,_labely2,_unitex,_unitey1,_unitey2:string; _borduresverticalessymetriques, _echelle_g,_echelle_d:boolean; b_g,b_d,b_b,b_h:integer):boolean; procedure dessinergrille(pas_grillex,pas_grilley:extended); procedure arronditalagrille(var x1,y1:extended;pas_grillex,pas_grilley:extended); function invconvert(var xi,yi:integer; x,y:extended;gauche:boolean):boolean; function Convert(xi,yi:integer; var x,y:extended;gauche:boolean):boolean; function CroixX(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function CroixP(x,y:extended; demi_longueur,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function Carreau(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; function Trait(x1,y1,x2,y2:extended; epaisseur:integer; couleur:tcolor; sty:tpenstyle; _penmod:tpenmode;gauche:boolean):boolean; function Point(x,y:extended; rayon:integer; couleur:tcolor; _penmod:tpenmode;gauche:boolean):boolean; function cercle(x,y:extended; rayon,epaisseur:integer; couleur:tcolor; _penmod:tpenmode;gauche:boolean):boolean; function disque(x,y:extended; rayon:extended; couleurbord,couleurf:tcolor;_transparent:boolean;gauche:boolean): boolean; function disque2(x,y:extended; rayon:integer; couleurbord,couleurf:tcolor;gauche:boolean): boolean; function arcdecercle(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean):boolean; function tracepolygone(nombrepoint:integer;listex,listey:array of extended; couleurbord,couleurf:tcolor;_transparent:boolean;_mode:tpenmode;gauche:boolean):boolean; procedure traceconique(theta0,theta1,theta2,fx,fy,excentricite,parametre:extended; couleur:tcolor;gauche:boolean); procedure arronditalagrille(var x1,y1:extended;gauche:boolean); procedure ecrire(x,y:extended; s:string;gauche:boolean; police:tfont); procedure ecrireI(x,y:integer; s:string; police:tfont); procedure graduation(xi,xa:extended; var xci,xca:extended; var graduation:extended; var PuissanceDeDix:integer; var nombregraduation:integer); end; procedure echange(var a,b:extended); procedure echange_entiers(var a,b:integer); function partieentiere(x:extended):extended; function dix_pp(p:longint):extended; implementation uses ray1,unit222; procedure TMyimprimante.arronditalagrille(var x1,y1:extended;pas_grillex,pas_grilley:extended); var newx,newy,divx,divy,fracx,fracy:extended; begin divx:=partieentiere((x1-xmin)/pas_grillex); divy:=partieentiere((y1-ymin1)/pas_grilley); fracx:=x1-xmin-divx*pas_grillex; fracy:=y1-ymin1-divy*pas_grilley; if fracx>0.5*pas_grillex then newx:=xmin+(divx+1)*pas_grillex else newx:=xmin+divx*pas_grillex; if fracy>0.5*pas_grilley then newy:=ymin1+(divy+1)*pas_grilley else newy:=ymin1+divy*pas_grilley; x1:=newx; y1:=newy; end; procedure TMyimprimante.dessinergrille(pas_grillex,pas_grilley:extended); var i,j,x1,y1:integer; x,y:extended; begin if grille1 then begin for i:=1 to trunc((xmax-xmin)/pas_grillex) do for j:=1 to trunc((ymax1-ymin1)/pas_grilley) do begin x:=xmin+i*pas_grillex; y:=ymin1+j*pas_grilley; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax1-y)/(ymax1-ymin1)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; imprimante.canvas.pixels[x1,y1]:=couleurgrille1; end; end; end; procedure TMyimprimante.graduation(xi,xa:extended; var xci,xca:extended; var graduation:extended; var PuissanceDeDix:integer; var nombregraduation:integer); var n,gm,g,d,logd,tht:extended; p,i,xpa,xpi:longint; res:array[1..12] of extended; nb:longint; begin if xa=0) then p :=longint(trunc(logd)) else p:=longint(trunc(logd)-1); PuissanceDeDix:=p; if xa>=0 then begin gm:=trunc(xa/dix_pp(p-1))*dix_pp(p-1); if (gm>=xa) then xpa:=trunc(xa/dix_pp(p-1)) else xpa:=trunc(xa/dix_pp(p-1))+1; end; if xa<0 then begin gm:=trunc(xa/dix_pp(p-1))*dix_pp(p-1); if (gm>=xa) then xpa:=trunc(xa/dix_pp(p-1)) else xpa:=trunc(xa/dix_pp(p-1)); end; if xi>=0 then begin gm:=trunc(xi/dix_pp(p-1))*dix_pp(p-1); if (gm<=xi) then xpi:=trunc(xi/dix_pp(p-1)) else xpi:=trunc(xi/dix_pp(p-1))-1; end; if xi<0 then begin gm:=trunc(xi/dix_pp(p-1))*dix_pp(p-1); if (gm<=xi) then xpi:=trunc(xi/dix_pp(p-1)) else xpi:=trunc(xi/dix_pp(p-1))-1; end; case (xpa-xpi ) of 1: g:=0.1; 2: g:=0.2; 3,4,5: g:=0.5; 6,7,8,9,10: g:=1; else g:=trunc((xpa-xpi-1)/10+0.001)+1; end; graduation:=g*dix_pp(p-1); {xca:=xpa*dix_pp(p-1); nombregraduation:=trunc((xpa-xpi)/g); xci:=xca-graduation*nombregraduation; if xci>xi then begin xci:=xci-graduation; inc(nombregraduation); end; } xci:=xpi*dix_pp(p-1); nombregraduation:=trunc((xpa-xpi)/g); xca:=xci+graduation*nombregraduation; if xca1) then begin inter:=10; for i:=1 to p-1 do inter:=inter*10; result:=inter; end else if (p=-1) then begin result:=1/10; end; end; function partieentiere(x:extended):extended; begin if x>=0 then begin partieentiere:=int(x); exit; end; if frac(x)=0 then begin partieentiere:=x; exit; end; {cas ou x est <0 et non entier} partieentiere:=int(x)-1; end; function TMyimprimante.disque2(x,y:extended; rayon:integer; couleurbord,couleurf:tcolor;gauche:boolean): boolean; var x1,y1,r1x,r1y:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin disque2:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; if rayon=0 then exit; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.pen.color:=couleurbord; imprimante.canvas.pen.style:=pssolid; imprimante.canvas.pen.width:=1; imprimante.canvas.pen.mode:=pmcopy; disque2:=true; imprimante.canvas.brush.style:=bssolid; imprimante.canvas.brush.color:=couleurf; imprimante.canvas.ellipse(x1-rayon,y1-rayon,x1+rayon, y1+rayon); imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; function TMyimprimante.Carreau(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin carreau:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.pen.width:=epaisseur; imprimante.canvas.pen.mode:=penmod; imprimante.canvas.pen.style:=pssolid; imprimante.canvas.pen.color:=couleur; imprimante.canvas.moveto(x1,y1+demi_diagonale); imprimante.canvas.lineto(x1+demi_diagonale,y1); imprimante.canvas.lineto(x1,y1-demi_diagonale); imprimante.canvas.lineto(x1-demi_diagonale,y1); imprimante.canvas.lineto(x1,y1+demi_diagonale); carreau:=true; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; procedure echange_entiers(var a,b:integer); var c:integer; begin c:=a; a:=b; b:=c; end; procedure echange(var a,b:extended); var c:extended; begin c:=a; a:=b; b:=c; end; procedure TMyimprimante.traceconique(theta0,theta1,theta2,fx,fy,excentricite,parametre:extended; couleur:tcolor;gauche:boolean); var pas,theta,r,ract,thetaact,nx,ny,ttai:extended; nombrepas,i:integer; ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; nombrepas:=1000; pas:=(theta2-theta1)/nombrepas; thetaact:=theta1; ract:=parametre/(1+excentricite*cos(thetaact-theta0)); for i:=1 to nombrepas do begin theta:=theta1+i*pas; r:=parametre/(1+excentricite*cos(theta-theta0)); if ((r>0) and (ract>0)) then trait(fx+ract*cos(thetaact),fy+ract*sin(thetaact),fx+r*cos(theta),fy+r*sin(theta), 1,couleur,pssolid,pmcopy,gauche); thetaact:=theta; ract:=r; end; end; function TMyimprimante.tracepolygone(nombrepoint:integer;listex,listey:array of extended; couleurbord,couleurf:tcolor;_transparent:boolean;_mode:tpenmode;gauche:boolean):boolean; var i,x1,y1:integer; titi:array of tpoint; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; setlength(titi,nombrepoint); for i:=1 to nombrepoint do begin x1:= trunc((listex[i-1]-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-listey[i-1])/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; titi[i-1].x:=x1; titi[i-1].y:=y1; end; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.Pen.Color:=couleurbord; imprimante.canvas.brush.color:=couleurf; imprimante.canvas.brush.style:=bsSolid; imprimante.canvas.pen.Color:=couleurbord; imprimante.canvas.Pen.Style:=pssolid; imprimante.canvas.Pen.Mode:=pmcopy; imprimante.canvas.pen.Width:=1; if not(_transparent) then imprimante.canvas.brush.style:=bsSolid else imprimante.canvas.brush.style:=bsclear; imprimante.canvas.Polygon(titi,false,0,nombrepoint); imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; function TMyimprimante.arcdecercle(x,y:extended; rayonreel:extended; epaisseur:integer; theta1,theta2:extended; couleur:tcolor; _penmod:tpenmode;_style:tpenstyle;gauche:boolean): boolean; var x1,y1,rax,ray:integer; ymax,ymin,pasgrilley,t1,t2:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; invconvert(x1,y1,x,y,gauche); rax:= trunc(rayonreel/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); ray:= trunc(rayonreel/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if rayonreel=0 then exit; t1:=donneanglepolairedans02pi(cos(theta1),sin(theta1)); t2:=donneanglepolairedans02pi(cos(theta2),sin(theta2)); if t1>t2 then t1:=t1-2*Pi; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.Canvas.pen.style:=pssolid; imprimante.Canvas.pen.width:=epaisseur; imprimante.Canvas.pen.Style:=_style; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin imprimante.Canvas.pen.mode:=pmxor; imprimante.Canvas.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin imprimante.Canvas.pen.color:=couleur; imprimante.Canvas.pen.mode:=_penmod; end; imprimante.canvas.brush.style:=bsclear; imprimante.canvas.arc(x1-rax,y1-ray,x1+rax,y1+ray,trunc(t1/Pi*180*16),trunc((t2-t1)/Pi*180*16)); arcdecercle:=true; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; function TMyimprimante.Point(x,y:extended; rayon:integer; couleur:tcolor ; _penmod:tpenmode;gauche:boolean): boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; invconvert(x1,y1,x,y,true); if ((xxmax) or (y>ymax) or (y=xmax) or (yymax) or (rayon=0)) then begin cercle:=false; exit; end; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.pen.color:=couleur; imprimante.canvas.pen.style:=pssolid; imprimante.canvas.pen.width:=epaisseur; if ((_penmod=pmnot) or (_penmod=pmxor)or (_penmod=pmnotxor)) then begin imprimante.Canvas.pen.mode:=pmxor; imprimante.Canvas.pen.color:=colortorgb(couleur) xor colortorgb(couleurfondsim); end else begin imprimante.Canvas.pen.color:=couleur; imprimante.Canvas.pen.mode:=_penmod; end; cercle:=true; imprimante.canvas.brush.style:=bsclear; imprimante.canvas.arc(xx1-rayon,yy1-rayon,xx1+rayon,yy1+rayon,0, 360*16); imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; function TMyimprimante.disque(x,y:extended; rayon:extended; couleurbord,couleurf:tcolor;_transparent:boolean;gauche:boolean): boolean; var x1,y1,r1x,r1y:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin disque:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; r1x:= trunc(rayon/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); r1y:=trunc((rayon)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if rayon=0 then exit; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.pen.color:=couleurbord; imprimante.canvas.pen.style:=pssolid; imprimante.canvas.pen.width:=1; imprimante.canvas.pen.mode:=pmcopy; disque:=true; imprimante.canvas.brush.color:=couleurf; if not(_transparent) then imprimante.canvas.brush.style:=bssolid else imprimante.canvas.brush.style:=bsclear; imprimante.canvas.ellipse(x1-r1x,y1-r1y,x1+r1x, y1+r1y); imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; function TMyimprimante.Trait(x1,y1,x2,y2:extended; epaisseur:integer; couleur:tcolor;sty:tpenstyle; _penmod:tpenmode;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; xi1,yi1,xi2,yi2:integer; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; if xmax=xmin then exit; if ymax=ymin then exit; if ((x1>xmax) or (x1ymax) or (y1xmax) or (x2ymax) or (y2=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin croixp:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.pen.width:=epaisseur; imprimante.canvas.pen.mode:=penmod; imprimante.canvas.pen.style:=pssolid; imprimante.canvas.pen.color:=couleur; imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1,y1+demi_longueur); imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1,y1-demi_longueur); imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1+demi_longueur,y1); imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1-demi_longueur,y1); croixp:=true; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; procedure TMyimprimante.arronditalagrille(var x1,y1:extended;gauche:boolean); var newx,newy,divx,divy,fracx,fracy:extended; ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; divx:=partieentiere((x1-xmin)/pasgrillex); divy:=partieentiere((y1-ymin)/pasgrilley); fracx:=x1-xmin-divx*pasgrillex; fracy:=y1-ymin-divy*pasgrilley; if fracx>0.5*pasgrillex then newx:=(divx+1)*pasgrillex else newx:=divx*pasgrillex; if fracy>0.5*pasgrilley then newy:=(divy+1)*pasgrilley else newy:=divy*pasgrilley; x1:=newx; y1:=newy; end; procedure TMyimprimante.ecrireI(x,y:integer; s:string; police:tfont); var xi,yi:integer; old_font:tfont; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.Canvas.Brush.Color:=couleurfondsimulation; imprimante.Canvas.Pen.Color:=couleurfondsimulation; imprimante.Canvas.Brush.Style:=bsclear; old_font:=imprimante.Canvas.Font; imprimante.canvas.Font:=police; imprimante.canvas.textout(x,y,s); imprimante.Canvas.Font:=old_font; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; procedure TMyimprimante.ecrire(x,y:extended; s:string;gauche:boolean; police:tfont); var xi,yi:integer; old_font:tfont; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.Canvas.Brush.Color:=couleurfondsimulation; imprimante.Canvas.Pen.Color:=couleurfondsimulation; imprimante.Canvas.Brush.Style:=bsclear; invconvert(xi,yi,x,y,gauche); old_font:=imprimante.Canvas.Font; imprimante.canvas.Font:=police; imprimante.canvas.textout(xi,yi,s); imprimante.Canvas.Font:=old_font; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; procedure TMyimprimante.background(couleur:tcolor); var old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.Brush.Color:=couleur; imprimante.canvas.Brush.Style:=bssolid; imprimante.Canvas.Pen.Color:=couleur; imprimante.Canvas.Pen.Mode:=pmcopy; imprimante.Canvas.Rectangle(0,0,largeur,hauteur); imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; function TMyimprimante.LimitesEtAxes(_xmin,_xmax,_ymin1,_ymax1,_ymin2,_ymax2:extended; _Largeur,_Hauteur:integer; _titre:string; _fontetitre:tfont; _Fond:boolean; _CouleurFondsim:tcolor; _Cadre:boolean; _EpaisseurCadre:integer; _CouleurCadre:tcolor; _Gradue:boolean; _EpaisseurGraduation,_LongueurGraduation:integer; _couleurgraduation:tcolor; _fontegraduation:tfont; _Grille1,_Grille2:boolean; _EpaisseurGrille:integer; _CouleurGrille1,_CouleurGrille2:tcolor; _labelx,_labely1,_labely2,_unitex,_unitey1,_unitey2:string; _borduresverticalessymetriques, _echelle_g,_echelle_d:boolean; b_g,b_d,b_b,b_h:integer):boolean; var xi,xa,yi1,yi2,ya1,ya2,gi,ga:extended; t1,t2,i:integer; dixx,dixy1,dixy2,tt,aff:string; nbgx,nbgy1,nbgy2:integer; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; old_font:tfont; begin old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; old_font:=imprimante.Canvas.Font; fond:=_fond; echelle_g:=_echelle_g; echelle_d:=_echelle_d; borduresverticalessymetriques:=_borduresverticalessymetriques; labelx:=_labelx; labely1:=_labely1; labely2:=_labely2; unitex:=_unitex; unitey1:=_unitey1; unitey2:=_unitey2; fontetitre:=_fontetitre; largeur:=_largeur; hauteur:=_hauteur; titre:=_titre; couleurfondsim:=_couleurfondsim; cadre:=_cadre; epaisseurcadre:=_epaisseurcadre; couleurcadre:=_couleurcadre; gradue:=_gradue; epaisseurgraduation:=_epaisseurgraduation; fontegraduation:=_fontegraduation; couleurgraduation:=_couleurgraduation; grille1:=_grille1; grille2:=_grille2; epaisseurgrille:=_epaisseurgrille; couleurgrille1:=_couleurgrille1; couleurgrille2:=_couleurgrille2; if (echelle_g and ( (_ymin1=_ymax1) or (_xmax=_xmin))) then begin LimitesEtAxes:=false; exit; end; if (echelle_d and ( (_ymin2=_ymax2) or (_xmax=_xmin))) then begin LimitesEtAxes:=false; exit; end; LimitesEtAxes:=true; if (_xmin>_xmax ) then begin xmin:=_xmax; xmax:=_xmin; end else begin xmin:=_xmin; xmax:=_xmax; end; if (_ymin1>_ymax1 ) then begin ymin1:=_ymax1; ymax1:=_ymin1; end else begin ymin1:=_ymin1; ymax1:=_ymax1; end; if (_ymin2>_ymax2 ) then begin ymin2:=_ymax2; ymax2:=_ymin2; end else begin ymin2:=_ymin2; ymax2:=_ymax2; end; xi:=xmin; yi1:=ymin1; yi2:=ymin2; xa:=xmax; ya1:=ymax1; ya2:=ymax2; imprimante.canvas.font:=fontetitre; if (titre<>'') then begin t1:=trunc(imprimante.canvas.textheight(titre))+10; end else t1:=10; if gradue then begin imprimante.canvas.font:=fontegraduation; if ((dixy1='0') and (dixy2='0')) then t2:=trunc(imprimante.canvas.textheight('10'+unitex+labelx)*1.5) else t2:=trunc(imprimante.canvas.textheight('10'+unitex+labelx)*2.2); end else t2:=10; if (t1>t2) then bordurehaute:=t1 else bordurehaute:=t2; {taille bordure basse} if gradue then begin imprimante.canvas.font:=fontegraduation; t1:=trunc(imprimante.canvas.textheight('x10'))+10; end else t1:=10; bordurebasse:=t1; {taille bordure droite} if (gradue and echelle_d) then begin imprimante.canvas.font:=fontegraduation; str( trunc((ymin2)/dix_pp(puissancededixy2-1)),tt); t1:=trunc(imprimante.canvas.textwidth(tt))+10; str( trunc((ymin2+nbgy2*graduationy2)/dix_pp(puissancededixy2-1)),tt); t2:=trunc(imprimante.canvas.textwidth(tt))+10; end else begin t1:=10; t2:=10; end; if t1t2 then borduredroite:=t1 else borduredroite:=t2; {taille bordure gauche} if (gradue and echelle_g) then begin imprimante.canvas.font:=fontegraduation; str( trunc((ymin1)/dix_pp(puissancededixy1-1)),tt); t1:=trunc(imprimante.canvas.textwidth(tt))+10; str( trunc((ymin1+nbgy1*graduationy1)/dix_pp(puissancededixy1-1)),tt); t2:=trunc(imprimante.canvas.textwidth(tt))+10; end else begin t1:=10; t2:=10; end; if t1t2 then borduregauche:=t1 else borduregauche:=t2; if borduresverticalessymetriques then begin borduregauche:=max(borduregauche,borduredroite); borduredroite:=borduregauche; end; borduregauche:=max(borduregauche,b_g); borduredroite:=max(borduredroite,b_d); bordurebasse:=max(bordurebasse,b_b); bordurehaute:=max(bordurehaute,b_h); if fond then background(couleurfondsim); {longueurgraduation} longueurgraduationX:=_longueurgraduation/largeur*(xmax-xmin); if echelle_g then longueurgraduationy1:=_longueurgraduation/hauteur*(ymax1-ymin1); if echelle_d then longueurgraduationy2:=_longueurgraduation/hauteur*(ymax2-ymin2); if grille1 then begin imprimante.canvas.pen.style:=psdot; imprimante.canvas.pen.color:=couleurgrille1; imprimante.canvas.pen.width:=epaisseurgrille; for i:=0 to nbgx do trait(xmin+i*graduationx,ymin1,xmin+i*graduationx,ymax1, epaisseurgrille,couleurgrille1,psdot,pmcopy,true); for i:=0 to nbgy1 do trait(xmin,ymin1+i*graduationy1,xmax,ymin1+i*graduationy1, epaisseurgrille,couleurgrille1,psdot,pmcopy,true); end; if grille2 then begin imprimante.canvas.pen.style:=psdot; imprimante.canvas.pen.color:=couleurgrille2; imprimante.canvas.pen.width:=epaisseurgrille; for i:=0 to nbgx do trait(xmin+i*graduationx,ymin2,xmin+i*graduationx,ymax2, epaisseurgrille,couleurgrille2,psdot,pmcopy,false); for i:=0 to nbgy2 do trait(xmin,ymin2+i*graduationy2,xmax,ymin2+i*graduationy2, epaisseurgrille,couleurgrille2,psdot,pmcopy,false); end; {cadre} if cadre then begin imprimante.canvas.pen.width:=epaisseurcadre; imprimante.canvas.pen.mode:=pmcopy; imprimante.canvas.pen.style:=pssolid; imprimante.canvas.pen.color:=couleurcadre; imprimante.canvas.moveto(BordureGauche,BordureHaute); imprimante.canvas.lineto(largeur-BordureDroite,BordureHaute); imprimante.canvas.lineto(largeur-BordureDroite,hauteur-BordureBasse); imprimante.canvas.lineto(BordureGauche,hauteur-BordureBasse); imprimante.canvas.lineto(BordureGauche,BordureHaute); end; {affichage du titre} imprimante.canvas.font:=fontetitre; while ((imprimante.canvas.textwidth(titre)>largeur-borduredroite-borduregauche) and (imprimante.canvas.Font.Size>1)) do imprimante.canvas.Font.Size:= imprimante.canvas.Font.Size-1; //if imprimante.canvas.Font.Size<6 then imprimante.canvas.Font.Size:=6; imprimante.canvas.textout(borduregauche+((largeur-borduredroite-borduregauche) div 2) -(imprimante.canvas.textwidth(titre) div 2), bordurehaute -2-imprimante.canvas.textheight(titre),titre); {graduation} if gradue then begin if dixx='0' then aff:='' else begin aff:='10'; if dixx<>'1' then for i:=1 to length(dixx) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labelx; if ((unitex<>'1') and (unitex<>'')) then aff:=aff+' en '+unitex; imprimante.canvas.font:=fontegraduation; imprimante.canvas.textout(largeur-borduredroite-trunc(imprimante.canvas.textwidth (aff)*1.3),hauteur-bordurebasse- trunc(imprimante.canvas.textheight('x10')*1.3),aff); if ((dixx<>'0') and (dixx<>'1')) then imprimante.canvas.textout(largeur-borduredroite-trunc(imprimante.canvas.textwidth(aff)*1.3)+ trunc(imprimante.canvas.textwidth('10')),hauteur-bordurebasse -trunc(1.9*imprimante.canvas.textheight('x10')), dixx); for i:=0 to nbgx do begin str(round((xmin+i*graduationx)/dix_pp(puissancededixx-1)),tt); imprimante.canvas.textout( trunc(i*graduationx/(xmax-xmin)*(largeur-borduredroite-borduregauche)+ borduregauche)-imprimante.canvas.textwidth(tt) div 2, hauteur-bordurebasse+2,tt); end; if echelle_g then begin if dixy1='0' then aff:='' else begin aff:='10'; if dixy1<>'1' then for i:=1 to length(dixy1) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labely1; if ((unitey1<>'1') and (unitey1<>'')) then aff:=aff+' en '+unitey1; imprimante.canvas.font:=fontegraduation; imprimante.canvas.textout(borduregauche,bordurehaute-trunc(imprimante.canvas.textheight(aff)*1.2),aff); if ((dixy1<>'0') and (dixy1<>'1')) then imprimante.canvas.textout(borduregauche+imprimante.canvas.textwidth('10'),bordurehaute -trunc(imprimante.canvas.textheight(aff)*1.8), dixy1); end; if echelle_d then begin if dixy2='0' then aff:='' else begin aff:='10'; if dixy2<>'1' then for i:=1 to length(dixy2) do aff:=aff+' '; aff:=aff+' '; end; aff:=aff+labely2; if ((unitey2<>'1') and (unitey2<>'')) then aff:=aff+' en '+unitey2; imprimante.canvas.font:=fontegraduation; imprimante.canvas.textout(largeur-borduredroite-trunc(imprimante.canvas.textwidth(aff)*1.2), bordurehaute-trunc(imprimante.canvas.textheight(aff)*1.2),aff); if ((dixy2<>'0') and (dixy2<>'1')) then imprimante.canvas.textout(largeur-borduredroite-trunc(imprimante.canvas.textwidth(aff)*1.2)+imprimante.canvas.textwidth('10'), bordurehaute -trunc(imprimante.canvas.textheight(aff)*1.8), dixy2); end; if echelle_g then for i:=0 to nbgy1 do begin str( round((ymin1+i*graduationy1)/dix_pp(puissancededixy1-1)),tt); if i=0 then imprimante.canvas.textout( borduregauche-trunc(imprimante.canvas.textwidth(tt)*1.1), trunc(- bordurebasse+hauteur)-imprimante.canvas.textheight(tt) , tt) else imprimante.canvas.textout( borduregauche-trunc(imprimante.canvas.textwidth(tt)*1.1), trunc(-i*graduationy1/(ymax1-ymin1)*(hauteur-bordurehaute-bordurebasse)- bordurebasse+hauteur)-imprimante.canvas.textheight(tt) div 2, tt); end; if echelle_d then for i:=0 to nbgy2 do begin str( round((ymin2+i*graduationy2)/dix_pp(puissancededixy2-1)),tt); if i=0 then imprimante.canvas.textout( largeur-borduredroite+5, trunc(- bordurebasse+hauteur)-imprimante.canvas.textheight(tt) , tt) else imprimante.canvas.textout( largeur-borduredroite+5, trunc(-i*graduationy2/(ymax2-ymin2)*(hauteur-bordurehaute-bordurebasse)- bordurebasse+hauteur)-imprimante.canvas.textheight(tt) div 2, tt); end; if echelle_g then begin for i:=0 to nbgx do trait(xmin+i*graduationx,ymin1,xmin+i*graduationx, ymin1+longueurgraduationy1,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgx do trait(xmin+i*graduationx,ymax1,xmin+i*graduationx, ymax1-longueurgraduationy1,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgy1 do trait(xmin,ymin1+i*graduationy1,xmin+longueurgraduationx,ymin1+i*graduationy1, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); for i:=0 to nbgy1 do trait(xmax,ymin1+i*graduationy1,xmax-longueurgraduationx,ymin1+i*graduationy1, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,true); end; if echelle_d then begin for i:=0 to nbgx do trait(xmin+i*graduationx,ymin2,xmin+i*graduationx, ymin2+longueurgraduationy2,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgx do trait(xmin+i*graduationx,ymax2,xmin+i*graduationx, ymax2-longueurgraduationy2,epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgy2 do trait(xmin,ymin2+i*graduationy2,xmin+longueurgraduationx,ymin2+i*graduationy2, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); for i:=0 to nbgy2 do trait(xmax,ymin2+i*graduationy2,xmax-longueurgraduationx,ymin2+i*graduationy2, epaisseurgraduation,couleurgraduation,pssolid,pmcopy,false); end; end; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; imprimante.Canvas.font:=old_font; end; function TMyimprimante.Convert(xi,yi:integer; var x,y:extended;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x:=(xi-BordureGauche)*(xmax-xmin)/ (largeur-BordureGauche-BordureDroite) +xmin; y:=-(yi-BordureHaute)*(ymax-ymin)/(hauteur-BordureHaute-BordureBasse) +ymax; convert:=true; end; function TMyimprimante.invconvert(var xi,yi:integer; x,y:extended;gauche:boolean):boolean; var ymax,ymin,pasgrilley:extended; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; xi:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; yi:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; invconvert:=true; end; function TMyimprimante.CroixX(x,y:extended; demi_diagonale,epaisseur:integer; couleur:tcolor; penmod:tpenmode;gauche:boolean):boolean; var x1,y1:integer; ymax,ymin,pasgrilley:extended; old_pencolor:tcolor; old_penmode:tpenmode; old_penstyle:tpenstyle; old_penwidth:integer; old_brushcolor:tcolor; old_brushstyle:tbrushstyle; begin if gauche then begin ymin:=ymin1; ymax:=ymax1; pasgrilley:=pasgrilley1; end else begin ymin:=ymin2; ymax:=ymax2; pasgrilley:=pasgrilley2; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite)); y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse)); if ((x1<=-borduregauche) or (x1>=largeur-borduregauche) or (y1>hauteur-bordurehaute) or (y1<-bordurehaute)) then begin croixx:=false; exit; end; x1:= trunc((x-xmin)/(xmax-xmin)*(largeur-BordureGauche-BordureDroite))+ BordureGauche; y1:=trunc((ymax-y)/(ymax-ymin)*(hauteur-BordureHaute-BordureBasse))+ BordureHaute; old_pencolor:=imprimante.Canvas.Pen.Color; old_penmode:=imprimante.Canvas.Pen.Mode; old_penstyle:=imprimante.Canvas.Pen.Style; old_penwidth:=imprimante.Canvas.Pen.Width; old_brushcolor:=imprimante.Canvas.Brush.Color; old_brushstyle:=imprimante.Canvas.Brush.Style; imprimante.canvas.pen.width:=epaisseur; imprimante.canvas.pen.mode:=penmod; imprimante.canvas.pen.style:=pssolid; imprimante.canvas.pen.color:=couleur; imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1+demi_diagonale,y1+demi_diagonale); imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1-demi_diagonale,y1+demi_diagonale); imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1+demi_diagonale,y1-demi_diagonale); imprimante.canvas.moveto(x1,y1); imprimante.canvas.lineto(x1-demi_diagonale,y1-demi_diagonale); croixx:=true; imprimante.Canvas.Pen.Color:=old_pencolor; imprimante.Canvas.Pen.Mode:=old_penmode; imprimante.Canvas.Pen.Style:=old_penstyle; imprimante.Canvas.Pen.Width:=old_penwidth; imprimante.Canvas.Brush.Color:=old_brushcolor; imprimante.Canvas.Brush.Style:=old_brushstyle; end; end. optgeo-2.21/saisief1.pas0000750000175000017500000001567112247333133015353 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisief1; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Colorbox, Spin, ExtCtrls,unit222, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiefle1 } Tsaisiefle1 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; radioext1: TRadioGroup; radioext2: TRadioGroup; GroupBox1: TGroupBox; GroupBox2: TGroupBox; spintaille1: TSpinEdit; spintaille2: TSpinEdit; StaticText1: TLabel; StaticText3: TLabel; StaticText2: TLabel; StaticText4: TLabel; GroupBox3: TGroupBox; spinepaisseur: TSpinEdit; radiostyletrait: TRadioGroup; GroupBox4: TGroupBox; ColorGrid1: TColorBox; Image1: TImage; GroupBox5: TGroupBox; StaticText5: TLabel; StaticText6: TLabel; editx1: TEdit; edity1: TEdit; GroupBox6: TGroupBox; StaticText7: TLabel; StaticText8: TLabel; editx2: TEdit; edity2: TEdit; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiefle1: Tsaisiefle1; ra_ext1,ra_ext2:textremite; ra_epaisseur:integer; ra_styletrait:tpenstyle; ra_couleur:tcolor; ra_taille1,ra_taille2:integer; ra_x1,ra_x2,ra_y1,ra_y2:extended; implementation procedure Tsaisiefle1.BitBtn1Click(Sender: TObject); begin ra_taille1:=spintaille1.value; ra_taille2:=spintaille2.value; ra_epaisseur:=spinepaisseur.value; case radioext1.itemindex of 0: ra_ext1:=trien; 1: ra_ext1:=tffleche; 2: ra_ext1:=ttrait; 3: ra_ext1:=trond; 4: ra_ext1:=tcroix; 5: ra_ext1:=tcroixx; 6: ra_ext1:=tdisque; end; case radioext2.itemindex of 0: ra_ext2:=trien; 1: ra_ext2:=tffleche; 2: ra_ext2:=ttrait; 3: ra_ext2:=trond; 4: ra_ext2:=tcroix; 5: ra_ext2:=tcroixx; 6: ra_ext2:=tdisque; end; case radiostyletrait.itemindex of 0: ra_styletrait:=pssolid; 1: ra_styletrait:=psdot; 2: ra_styletrait:=psdash; 3: ra_styletrait:=psdashdot; 4: ra_styletrait:=psdashdotdot; end; ra_couleur:=colorgrid1.selected; try ra_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsAttention), mb_ok); exit; end; end; if ((ra_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try ra_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((ra_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try ra_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try ra_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; ReTaillePfleche(Listefleche,nombrefleche,nombrefleche+1); inc(nombrefleche); if not (Listefleche[-1+nombrefleche].create(ra_x1,ra_y1,ra_x2,ra_y2, ra_epaisseur, ra_couleur,ra_ext1,ra_ext2,ra_styletrait,ra_taille1,ra_taille2)) then begin ReTaillePfleche(Listefleche,nombrefleche,nombrefleche-1); dec(nombrefleche); application.messagebox(pchar(rsTailleDuTrai2), pchar(rsattention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisiefle1.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCeT3; CAPTION :=rsAjoutDUnTrai2; GROUPBOX1.CAPTION :=rsTailleDeLaPr; GROUPBOX2.CAPTION :=rsTailleDeLaSe; GROUPBOX3.CAPTION :=rsEpaisseurDuT; GROUPBOX4.CAPTION :=rsCouleurDuTra; GROUPBOX5.CAPTION :=rsCoordonnEsPo; GROUPBOX6.CAPTION :=rsCoordonnEsPo2; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; RADIOEXT1.CAPTION :=rsFormeDeLaPre; RADIOEXT2.CAPTION :=rsFormeDeLaSec; RADIOSTYLETRAIT.CAPTION :=rsStyleDuTrait; STATICTEXT1.CAPTION :=rsEn11000DeLaD; STATICTEXT2.CAPTION :=rsEn11000DeLaD; STATICTEXT3.CAPTION :=rsDeLEspaceDeT; STATICTEXT4.CAPTION :=rsDeLEspaceDeT2; STATICTEXT5.CAPTION :=rsX; STATICTEXT6.CAPTION :=rsY; STATICTEXT7.CAPTION :=rsX; STATICTEXT8.CAPTION :=rsY; radioext1.Items[0]:=rsNormale; radioext1.Items[1]:=rsFlChe; radioext1.Items[2]:=rsTraitPerpend; radioext1.Items[3]:=rsCercle; radioext1.Items[4]:=rsCroix; radioext1.Items[5]:=rsCroixX; radioext1.Items[6]:=rsDisque; radioext2.Items[0]:=rsNormale; radioext2.Items[1]:=rsFlChe; radioext2.Items[2]:=rsTraitPerpend; radioext2.Items[3]:=rsCercle; radioext2.Items[4]:=rsCroix; radioext2.Items[5]:=rsCroixX; radioext2.Items[6]:=rsDisque; radiostyletrait.Items[0]:=rsPlein; radiostyletrait.Items[1]:=rsPointillS; radiostyletrait.Items[2]:=rsTirS; radiostyletrait.Items[3]:=rsTirSPoints; radiostyletrait.Items[4]:=rsTirSPointsPo; end; procedure Tsaisiefle1.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisief1.lrs} end. optgeo-2.21/gpl.txt0000750000175000017500000004365512247333133014470 0ustar georgeskgeorgesk GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. optgeo-2.21/UNIT32.lfm0000750000175000017500000000147212247333133014560 0ustar georgeskgeorgeskobject FormEditeur: TFormEditeur Left = 580 Height = 480 Top = 314 Width = 640 VertScrollBar.Range = 20 ActiveControl = Memo1 Caption = 'Editeur de texte' ClientHeight = 480 ClientWidth = 640 Color = clBackground Font.Color = clBlack Font.Height = 17 Font.Name = 'Sans' Font.Pitch = fpVariable OnCloseQuery = FormCloseQuery OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Memo1: TMemo Left = 0 Height = 460 Top = 0 Width = 640 Align = alClient OnChange = Memo1Change TabOrder = 1 end object StatusBar1: TStatusBar Left = 0 Height = 20 Top = 460 Width = 640 Panels = < item Text = 'untitled.txt' Width = 50 end> SizeGrip = False end end optgeo-2.21/Unit6.lfm0000750000175000017500000001536712247333133014651 0ustar georgeskgeorgeskobject saisiepolyhedre: Tsaisiepolyhedre Left = 291 Height = 431 Top = 191 Width = 530 BorderIcons = [] BorderStyle = bsDialog Caption = 'Propriétés de ce polygône' ClientHeight = 431 ClientWidth = 530 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object radiosortant: TRadioGroup Left = 8 Height = 128 Top = 256 Width = 242 AutoFill = True Caption = 'Rayon réfléchi (sens sortant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 110 ClientWidth = 238 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 0 end object radioentrant: TRadioGroup Left = 264 Height = 113 Top = 104 Width = 257 AutoFill = True Caption = 'Rayon réfléchi (sens entrant)' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 95 ClientWidth = 253 ItemIndex = 1 Items.Strings = ( 'Toujours' 'Jamais' 'Seulement si le réfracté existe' 'Seulement si le réfracté n''existe pas' ) TabOrder = 1 end object GroupBox2: TGroupBox Left = 264 Height = 161 Top = 224 Width = 258 Caption = 'Indice de réfraction du milieu' ClientHeight = 143 ClientWidth = 254 TabOrder = 2 object StaticText2: TLabel Left = 8 Height = 14 Top = 24 Width = 69 Caption = 'Pour le rouge:' ParentColor = False end object StaticText3: TLabel Left = 8 Height = 14 Top = 48 Width = 61 Caption = 'Pour le vert:' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 72 Width = 61 Caption = 'Pour le bleu:' ParentColor = False end object StaticText1: TLabel Left = 8 Height = 14 Top = 112 Width = 47 Caption = 'Matériau:' ParentColor = False end object editnrouge: TEdit Left = 80 Height = 21 Top = 24 Width = 73 TabOrder = 3 end object editnvert: TEdit Left = 80 Height = 21 Top = 48 Width = 73 TabOrder = 0 end object editnbleu: TEdit Left = 80 Height = 21 Top = 72 Width = 73 TabOrder = 1 end object combomateriaux: TComboBox Left = 56 Height = 21 Top = 104 Width = 145 ItemHeight = 13 OnChange = combomateriauxChange Style = csDropDownList TabOrder = 2 end end object ComboBox1: TComboBox Left = 0 Height = 21 Top = 32 Width = 81 ItemHeight = 13 OnChange = ComboBox1Change Style = csDropDownList TabOrder = 3 end object GroupBox3: TGroupBox Left = 88 Height = 97 Top = 0 Width = 161 Caption = 'Coordonnées de ce sommet' ClientHeight = 79 ClientWidth = 157 TabOrder = 4 object StaticText5: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editx: TEdit Left = 24 Height = 21 Top = 17 Width = 97 TabOrder = 0 end object edity: TEdit Left = 24 Height = 21 Top = 48 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 8 Height = 33 Top = 392 Width = 513 Caption = 'Supprimer ce polygône' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 5 end object GroupBox1: TGroupBox Left = 8 Height = 145 Top = 104 Width = 240 Caption = 'Couleur à l''écran' ClientHeight = 127 ClientWidth = 236 TabOrder = 6 object Colorgrid1: TColorBox Left = 29 Height = 22 Top = 40 Width = 136 ItemHeight = 16 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 254 Height = 56 Top = 6 Width = 266 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 7 end object BitBtn2: TBitBtn Left = 256 Height = 23 Top = 72 Width = 260 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 8 end end optgeo-2.21/modif_espace_travail.pas0000750000175000017500000000742112247333133020001 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit modif_espace_travail; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, LResources,LCLType,UnitScaleFont,UChaines; type { Tsaisieretailleespace } Tsaisieretailleespace = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Label1: TLabel; Edit_xxmin_m: TEdit; Label2: TLabel; edit_xxmax_m: TEdit; Label3: TLabel; Label4: TLabel; Edit_yymin_m: TEdit; Edit_yymax_m: TEdit; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; cocherespect_m: TCheckBox; Label5: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisieretailleespace: Tsaisieretailleespace; xxmin_m,xxmax_m,yymin_m,yymax_m:extended; respect_m:boolean; implementation procedure Tsaisieretailleespace.BitBtn1Click(Sender: TObject); begin try xxmin_m:=strtofloat(edit_xxmin_m.text); except application.messagebox(pchar(rsExpressionIl), pchar(rsAttention3), mb_ok); self.ModalResult:=mrcancel; exit; end; try xxmax_m:=strtofloat(edit_xxmax_m.text); except application.messagebox(pchar(rsExpressionIl2), pchar(rsAttention3), mb_ok); self.ModalResult:=mrcancel; exit; end; try yymin_m:=strtofloat(edit_yymin_m.text); except application.messagebox(pchar(rsExpressionIl3), pchar(rsAttention3), mb_ok); self.ModalResult:=mrcancel; exit; end; try yymax_m:=strtofloat(edit_yymax_m.text); except application.messagebox(pchar(rsExpressionIl4), pchar(rsAttention3), mb_ok); self.ModalResult:=mrcancel; exit; end; if xxmax_m<=xxmin_m then begin application.messagebox(pchar(rsXmaxDoitTreS), pchar(rsAttention3), mb_ok); self.ModalResult:=mrcancel; exit; end; if yymax_m<=yymin_m then begin application.messagebox(pchar(rsYmaxDoitTreS), pchar(rsAttention3), mb_ok); self.ModalResult:=mrcancel; exit; end; respect_m:=cocherespect_m.Checked; end; procedure Tsaisieretailleespace.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; BITBTN2.CAPTION:=rsAnnuler; CAPTION:=rsModifierLEsp; COCHERESPECT_M.CAPTION:=rsRespecterRap; LABEL1.CAPTION:=rsAbscisseMin; LABEL2.CAPTION:=rsAbscisseMax; LABEL3.CAPTION:=rsOrdonnEMin; LABEL4.CAPTION:=rsOrdonnEMax; LABEL5.CAPTION:=rsPourAvoirUnR; end; procedure Tsaisieretailleespace.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i modif_espace_travail.lrs} end. optgeo-2.21/saisiereseau.lfm0000750000175000017500000004760512247333133016326 0ustar georgeskgeorgeskobject saisiereseau: Tsaisiereseau Left = 581 Height = 642 Top = 211 Width = 681 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un réseau' ClientHeight = 642 ClientWidth = 681 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '1.0.10.0' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 000000000000000080000080000000808000800000008000800080800000C0C0 C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0F0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF0FF 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000000000FFF0FF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00000000000FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFF00FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000F00000000FFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00 000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF00000000F00FFFF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFF0000000 00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00000000FFFF00FFFF00FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFF00000000FFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000000FF00 FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF000000000FFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFF00000000FFFF00FFFF00FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF F00000000FFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00000000FF00FFFF00FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF0000 000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFF00000000FFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF00000000F FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF00000000FF00FFFF00FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0000000000FFFF 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFF00000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFF00 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF0 0000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFF00FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F00 FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF00000000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F00FFFF00FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF00000000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFF00 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF00000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000 000FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00000000F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF00000000FFFF00FFFFFFFFFFFFF000000FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FF FFFFFFFFFFF0FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFFFFFFFFFFFF0FFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF00000000F00FFFF00FFFFFFFFF0FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFF00FFFF FFFFFF0FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000000000FFFF00FFFFFFFFFFF0FFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 000000FFFF00FFFFFFFFFFFF0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFF 0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00000000FF00FFFFFFF0FFFF0FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000 0F00FFFFFFF0FFF0FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFF000FFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF00000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 0 Height = 129 Top = 104 Width = 129 Caption = 'Couleur à l''écran' ClientHeight = 107 ClientWidth = 125 TabOrder = 0 object Colorgrid1: TColorBox Left = 13 Height = 22 Top = 32 Width = 85 ItemHeight = 16 TabOrder = 0 end end object GroupBox2: TGroupBox Left = 136 Height = 57 Top = 176 Width = 273 Caption = 'Aspect' ClientHeight = 35 ClientWidth = 269 TabOrder = 1 object cochehachures: TCheckBox Left = 16 Height = 24 Top = 4 Width = 228 Caption = 'Hachures si réseau en réflexion' Checked = True State = cbChecked TabOrder = 0 end end object GroupBox3: TGroupBox Left = 136 Height = 65 Top = 104 Width = 193 Caption = 'Epaisseur trait à l''écran' ClientHeight = 43 ClientWidth = 189 TabOrder = 2 object editepaisseur: TSpinEdit Left = 22 Height = 28 Top = 8 Width = 49 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 104 Height = 97 Top = 0 Width = 185 Caption = 'Point 1' ClientHeight = 75 ClientWidth = 181 TabOrder = 3 object StaticText1: TLabel Left = 8 Height = 21 Top = 16 Width = 18 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 21 Top = 56 Width = 18 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 21 Top = 16 Width = 31 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 21 Top = 56 Width = 31 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 28 Top = 16 Width = 97 TabOrder = 1 end object edity1: TEdit Left = 24 Height = 28 Top = 56 Width = 97 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 296 Height = 97 Top = 0 Width = 185 Caption = 'Point 2' ClientHeight = 75 ClientWidth = 181 TabOrder = 4 object StaticText3: TLabel Left = 8 Height = 21 Top = 16 Width = 18 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 21 Top = 56 Width = 18 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 21 Top = 16 Width = 31 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 21 Top = 56 Width = 31 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 28 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 28 Top = 56 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 272 Height = 41 Top = 439 Width = 201 Caption = 'Supprimer ce réseau' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 OnClick = boutonsupClick TabOrder = 5 end object BitBtn1: TBitBtn Left = 496 Height = 464 Top = 16 Width = 152 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 6 end object BitBtn2: TBitBtn Left = 336 Height = 56 Top = 112 Width = 144 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 7 end object RadioGroup1: TRadioGroup Left = 3 Height = 105 Top = 240 Width = 181 AutoFill = True Caption = 'Type de réseau' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 83 ClientWidth = 177 ItemIndex = 0 Items.Strings = ( 'En transmission' 'En réflexion' ) TabOrder = 8 end object GroupBox6: TGroupBox Left = 197 Height = 105 Top = 240 Width = 211 Caption = 'Nombre de trait par mm' ClientHeight = 83 ClientWidth = 207 TabOrder = 9 object FloatSpinEdit1: TFloatSpinEdit Left = 17 Height = 28 Top = 20 Width = 166 Increment = 1 MaxValue = 100000 MinValue = 1 TabOrder = 0 Value = 100 end end object GroupBox7: TGroupBox Left = 10 Height = 127 Top = 353 Width = 247 Caption = 'Ordres à prendre en compte' ClientHeight = 105 ClientWidth = 243 TabOrder = 10 object SpinEdit_ordre_min: TSpinEdit Left = 164 Height = 28 Top = 11 Width = 71 MaxValue = 10000 MinValue = -10000 TabOrder = 0 Value = -1 end object StaticText5: TStaticText Left = 19 Height = 27 Top = 12 Width = 109 Caption = 'Ordre minimum' TabOrder = 1 end object StaticText6: TStaticText Left = 19 Height = 24 Top = 59 Width = 118 Caption = 'Ordre maximum' TabOrder = 2 end object SpinEdit_ordre_max: TSpinEdit Left = 164 Height = 28 Top = 54 Width = 68 MaxValue = 10000 MinValue = -10000 TabOrder = 3 Value = 1 end end object StaticText7: TStaticText Left = 13 Height = 68 Top = 492 Width = 635 Caption = 'Remarque importante: ce réseau diffractant doit être éclairé par une onde plane.'#13#10'Un rayon unique sera diffracté selon la loi des réseaux sin i=+-sin i0+k.lambda/a'#13#10'mais cela n''a pas de sens pour un rayon unique.' TabOrder = 11 end object StaticText8: TStaticText Left = 12 Height = 46 Top = 581 Width = 638 Caption = 'Les longueurs d''onde peuvent être modifiées dans le menu options, indices du milieu'#13#10'ambian et longueurs d''onde.' TabOrder = 12 end end optgeo-2.21/saisielamesr.lfm0000750000175000017500000004140312247333133016313 0ustar georgeskgeorgeskobject saisielsr: Tsaisielsr Left = 409 Height = 241 Top = 152 Width = 490 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''une lame semi-réfléchissante' ClientHeight = 241 ClientWidth = 490 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FF0000FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00000FFFFFFFFFFF0F0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFF000000FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF00000 0FFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF000000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF000000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF00 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF000000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0000000FFF0 0000000FFFF000000000FFFF00000000FFF000000FFFFF00000000FFFFFF0000 000000FFFF000000FFFFF0000000FF000000FFF00000000FFFF000000000FFFF 00000000FFFF000000FFFF00000000FFFFFF0000000000FFFF000000FFFFF000 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF000000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF000000FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF000 000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF000000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFF000000FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF FFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF000000FFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00FFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF 000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF000 0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFF0FFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000 0FFFFFFFFFFFFF0FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFF0FFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF FFFFFFFFFFFFF000000FFFFFFFFFFFFF0FFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF000000FFFF FFFFFFFF0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00FFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF0FF0FFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF FFFFFFFF000000FFFFFFFF00FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF FFF000000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF000000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000F FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF000000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF0000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 8 Height = 129 Top = 104 Width = 129 Caption = 'Couleur à l''écran' ClientHeight = 111 ClientWidth = 125 TabOrder = 0 object Colorgrid1: TColorBox Left = 22 Height = 22 Top = 32 Width = 86 ItemHeight = 16 TabOrder = 0 end end object GroupBox3: TGroupBox Left = 152 Height = 65 Top = 104 Width = 168 Caption = 'Epaisseur trait à l''écran' ClientHeight = 47 ClientWidth = 164 TabOrder = 1 object editepaisseur: TSpinEdit Left = 38 Height = 21 Top = 16 Width = 49 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 104 Height = 97 Top = 0 Width = 200 Caption = 'Point 1' ClientHeight = 79 ClientWidth = 196 TabOrder = 2 object StaticText1: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 1 end object edity1: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 312 Height = 97 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 79 ClientWidth = 157 TabOrder = 3 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 144 Height = 57 Top = 176 Width = 177 Caption = 'Supprimer cette lame' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 4 end object BitBtn1: TBitBtn Left = 328 Height = 81 Top = 104 Width = 145 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 5 end object BitBtn2: TBitBtn Left = 328 Height = 40 Top = 192 Width = 147 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 6 end end optgeo-2.21/ray1.pas0000750000175000017500000165446012247333133014531 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit ray1; {$mode objfpc}{$H+} interface uses Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType, {$ifdef windows}windows,shellapi,registry,{$endif} Menus, ComCtrls,clipbrd,printers, saisiemp,saisieray, Unit_imp,Unit3,Unit4,saisiemscopa,saisiemscepa,math, MonBitmap, PrintersDlgs, FileUtil,MonImprimante,UnitScaleFont, LazHelpHTML,UTF8Process,unit1_palette,LCLIntf,UChaines,Translations,Unit_indices_milieu_ambiant, MonPostScript,MonPostScriptCanvas,UnitConfigPostScript,Definitions,unit222,gettext; type { TForm1 } TForm1 = class(TForm) Image1: TImage; MenuItem1: TMenuItem; MenuItem10: TMenuItem; MenuItem11: TMenuItem; MenuItem12: TMenuItem; MenuItemreseau: TMenuItem; MenuItem14: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem9: TMenuItem; MenuPrisme: TMenuItem; Pop: TPopupMenu; PrintDialog1: TPrintDialog; SaveDialog2: TSaveDialog; SaveDialog3: TSaveDialog; SaveDialog4: TSaveDialog; ScrollBox1: TScrollBox; boutonprisme: TSpeedButton; boutonreseau: TSpeedButton; StatusBar1: TStatusBar; ToolBar1: TToolBar; PrinterSetupDialog1: TPrinterSetupDialog; MainMenu1: TMainMenu; boutonmiroirplan: TSpeedButton; boutonmscopa: TSpeedButton; boutonmscepa: TSpeedButton; ToolBar2: TToolBar; boutonlmc: TSpeedButton; ToolButton4: TToolButton; boutonlmd: TSpeedButton; boutonmscore: TSpeedButton; boutonmscere: TSpeedButton; Ajouter1: TMenuItem; Systmeoptique1: TMenuItem; Source2: TMenuItem; Miroirplan2: TMenuItem; Lentilleminceconvergente1: TMenuItem; Lentillemincedivergente1: TMenuItem; Miroirsphriqueconvergent1: TMenuItem; Miroirsphriqueconvexe1: TMenuItem; Systmeoptiquerel1: TMenuItem; Miroirsphriqueconcave1: TMenuItem; Miroirsphriqueconvexe2: TMenuItem; Rayonunique1: TMenuItem; boutonrayon: TSpeedButton; boutonsourceponctuelle: TSpeedButton; boutonondeplane: TSpeedButton; Sourceponctuelle1: TMenuItem; Ondeplane1: TMenuItem; ToolButton5: TToolButton; Fichier1: TMenuItem; Nouveau1: TMenuItem; Enregistrersimulation1: TMenuItem; Ouvrirsimulation1: TMenuItem; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; N3: TMenuItem; Imprimer1: TMenuItem; N4: TMenuItem; Quitter1: TMenuItem; Edition1: TMenuItem; Copier1: TMenuItem; ToolButton2: TToolButton; boutonecran: TSpeedButton; ToolButton6: TToolButton; boutonlsr: TSpeedButton; Ecran1: TMenuItem; Lamesemirflchissante1: TMenuItem; boutonpoly: TSpeedButton; Polyhdrerfractant1: TMenuItem; boutonsphere: TSpeedButton; boutondistance: TSpeedButton; Sphrerfractante1: TMenuItem; boutonconiqueconcave: TSpeedButton; boutonconiqueconvexe: TSpeedButton; Miroircnique1: TMenuItem; boutontexte: TSpeedButton; Divers1: TMenuItem; Textesurledessin1: TMenuItem; boutondia: TSpeedButton; Diaphragme1: TMenuItem; N1: TMenuItem; N2: TMenuItem; N5: TMenuItem; Grille1: TMenuItem; Afficherlagrille1: TMenuItem; Attractiondelagrille1: TMenuItem; N6: TMenuItem; Dupliquerunlment1: TMenuItem; Optionsdelagrille1: TMenuItem; boutonlec: TSpeedButton; Lentille1: TMenuItem; boutonspv: TSpeedButton; N7: TMenuItem; Optionsdesnormales1: TMenuItem; N8: TMenuItem; StaticText1: TLabel; ComboZoom: TComboBox; ToolButton1: TToolButton; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; StaticText5: TLabel; cochenormale: TCheckBox; ToolButton9: TToolButton; cochegrille: TCheckBox; boutonangle: TSpeedButton; StaticText6: TLabel; Afficherlesangles1: TMenuItem; cocheangles: TCheckBox; StaticText7: TLabel; boutonpolycercle: TSpeedButton; PopupMenu1: TPopupMenu; Joindreparunsegment1: TMenuItem; Joindreparunarcdecercle1: TMenuItem; Enregistrersimulation2: TMenuItem; boutonfantome: TSpeedButton; Polysphrerfractante1: TMenuItem; SpeedButton1: TSpeedButton; Aide1: TMenuItem; Contacterlauteur1: TMenuItem; N9: TMenuItem; AidesurOptGeo1: TMenuItem; N10: TMenuItem; Apropos2: TMenuItem; N11: TMenuItem; Surfacesdonde1: TMenuItem; N12: TMenuItem; Editerlecommentairedelasimulation1: TMenuItem; Supprimerunlment1: TMenuItem; Propritsdunlment1: TMenuItem; Dplacerunlment1: TMenuItem; Commenatiresurlasimulation1: TMenuItem; Mesurededistance1: TMenuItem; Mesuredangle1: TMenuItem; Rayonsfantomes1: TMenuItem; N13: TMenuItem; SiteWeb1: TMenuItem; boutonfleche: TSpeedButton; Traitflche1: TMenuItem; boutonoeil: TSpeedButton; Oeilstylis1: TMenuItem; Grouperdeslments1: TMenuItem; Tousleslments1: TMenuItem; Elementschoisir2: TMenuItem; N14: TMenuItem; Basederegistre1: TMenuItem; AssocierlesfichiersoptavecOptGeo1: TMenuItem; Dsassocier1: TMenuItem; cocheattraction: TCheckBox; N15: TMenuItem; Modifierdimensionsespacedetravail1: TMenuItem; durpertoireexemples1: TMenuItem; durpertoireexemples2: TMenuItem; Couleurdefond1: TMenuItem; N16: TMenuItem; ColorDialog1: TColorDialog; N17: TMenuItem; Prfrences1: TMenuItem; FontDialog1: TFontDialog; N18: TMenuItem; Empennagedesrayons1: TMenuItem; Ajusterautomatiquement1: TMenuItem; Manuellement1: TMenuItem; N19: TMenuItem; Rtablir1: TMenuItem; Refaire1: TMenuItem; N20: TMenuItem; Dfinirlerpertoirepersonnel1: TMenuItem; dudernierrpertoireutilis1: TMenuItem; N21: TMenuItem; LicenseGPL1: TMenuItem; SpeedButton2: TSpeedButton; procedure boutonprismeClick(Sender: TObject); procedure cocheanglesChange(Sender: TObject); procedure FormDeactivate(Sender: TObject); procedure MenuItem10Click(Sender: TObject); procedure MenuItem11Click(Sender: TObject); procedure MenuItem12Click(Sender: TObject); procedure MenuItem14Click(Sender: TObject); procedure MenuItem3Click(Sender: TObject); procedure MenuItem4Click(Sender: TObject); procedure MenuItem6Click(Sender: TObject); procedure MenuItem7Click(Sender: TObject); procedure MenuItem8Click(Sender: TObject); procedure MenuItemreseauClick(Sender: TObject); procedure MenuPrismeClick(Sender: TObject); procedure retaille_image1; procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormResize(Sender: TObject); procedure boutonmiroirplanClick(Sender: TObject); procedure ComboZoomChange(Sender: TObject); procedure ConfigurationInitiale; procedure boutonrayonClick(Sender: TObject); procedure boutonmscopaClick(Sender: TObject); procedure desactiveboutons; procedure activeboutons; procedure FormShow(Sender: TObject); function modequelquechose:boolean; procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); function nombrequelquechose:integer; function ajoutencours:boolean; procedure boutonmscepaClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure boutonlmcClick(Sender: TObject); procedure boutonlmdClick(Sender: TObject); procedure boutonmscoreClick(Sender: TObject); procedure boutonmscereClick(Sender: TObject); procedure Miroirplan2Click(Sender: TObject); procedure Rayonunique1Click(Sender: TObject); procedure Miroirsphriqueconvergent1Click(Sender: TObject); procedure Miroirsphriqueconvexe1Click(Sender: TObject); procedure Lentilleminceconvergente1Click(Sender: TObject); procedure Lentillemincedivergente1Click(Sender: TObject); procedure Miroirsphriqueconcave1Click(Sender: TObject); procedure Miroirsphriqueconvexe2Click(Sender: TObject); procedure boutonreseauClick(Sender: TObject); function taillemini:extended; procedure boutonsourceponctuelleClick(Sender: TObject); procedure Sourceponctuelle1Click(Sender: TObject); procedure boutonondeplaneClick(Sender: TObject); procedure Ondeplane1Click(Sender: TObject); procedure Nouveau1Click(Sender: TObject); procedure Enregistrersimulation1Click(Sender: TObject); procedure Ouvrirsimulation(Sender: TObject;repertoiredepart:string); procedure SuperposeSimulation(Sender: TObject;repertoiredepart:string); procedure Imprimer1Click(Sender: TObject); procedure Copier1Click(Sender: TObject); procedure boutonecranClick(Sender: TObject); procedure boutonlsrClick(Sender: TObject); procedure Quitter1Click(Sender: TObject); procedure Ecran1Click(Sender: TObject); procedure Lamesemirflchissante1Click(Sender: TObject); procedure boutonpolyClick(Sender: TObject); procedure Polyhdrerfractant1Click(Sender: TObject); procedure boutonsphereClick(Sender: TObject); procedure boutondistanceClick(Sender: TObject); procedure Sphrerfractante1Click(Sender: TObject); procedure boutonconiqueconcaveClick(Sender: TObject); procedure boutonconiqueconvexeClick(Sender: TObject); procedure Miroircnique1Click(Sender: TObject); procedure boutontexteClick(Sender: TObject); procedure Textesurledessin1Click(Sender: TObject); procedure boutondiaClick(Sender: TObject); procedure Diaphragme1Click(Sender: TObject); procedure Dupliquerunlment1Click(Sender: TObject); procedure Afficherlagrille1Click(Sender: TObject); procedure Optionsdelagrille1Click(Sender: TObject); procedure Attractiondelagrille1Click(Sender: TObject); procedure boutonlecClick(Sender: TObject); procedure Lentille1Click(Sender: TObject); procedure boutonspvClick(Sender: TObject); procedure N7Click(Sender: TObject); procedure Optionsdesnormales1Click(Sender: TObject); procedure cochenormaleClick(Sender: TObject); procedure cochegrilleClick(Sender: TObject); procedure boutonangleClick(Sender: TObject); procedure Afficherlesangles1Click(Sender: TObject); procedure cocheanglesClick(Sender: TObject); procedure boutonpolycercleClick(Sender: TObject); procedure Enregistrersimulation2Click(Sender: TObject); procedure boutonfantomeClick(Sender: TObject); procedure Polysphrerfractante1Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure Contacterlauteur1Click(Sender: TObject); procedure Apropos2Click(Sender: TObject); procedure AidesurOptGeo1Click(Sender: TObject); procedure Surfacesdonde1Click(Sender: TObject); procedure Editerlecommentairedelasimulation1Click(Sender: TObject); procedure Supprimerunlment1Click(Sender: TObject); procedure Propritsdunlment1Click(Sender: TObject); procedure Dplacerunlment1Click(Sender: TObject); procedure Commenatiresurlasimulation1Click(Sender: TObject); procedure Mesurededistance1Click(Sender: TObject); procedure Mesuredangle1Click(Sender: TObject); procedure Rayonsfantomes1Click(Sender: TObject); procedure SiteWeb1Click(Sender: TObject); procedure boutonflecheClick(Sender: TObject); procedure Traitflche1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure boutonoeilClick(Sender: TObject); procedure Oeilstylis1Click(Sender: TObject); procedure Tousleslments1Click(Sender: TObject); procedure Elementschoisir2Click(Sender: TObject); procedure AssocierlesfichiersoptavecOptGeo1Click(Sender: TObject); procedure Dsassocier1Click(Sender: TObject); procedure cocheattractionClick(Sender: TObject); procedure metazero; function retaille_espace_possible(newxmin,newxmax,newymin,newymax:extended):boolean; procedure Modifierdimensionsespacedetravail11Click(Sender: TObject); procedure durpertoireexemples1Click(Sender: TObject); procedure durpertoireexemples2Click(Sender: TObject); procedure Couleurdefond1Click(Sender: TObject); procedure Prfrences1Click(Sender: TObject); procedure Empennagedesrayons1Click(Sender: TObject); procedure Manuellement1Click(Sender: TObject); procedure Ajusterautomatiquement1Click(Sender: TObject); procedure charge_virtuel; procedure Sauver1Click(Sender: TObject); procedure Rtablir1Click(Sender: TObject); procedure Refaire1Click(Sender: TObject); procedure Dfinirlerpertoirepersonnel1Click(Sender: TObject); procedure dudernierrpertoireutilis1Click(Sender: TObject); procedure LicenseGPL1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; procedure enregistrer(nomfichier:string); procedure sauvevirtuel; const maxannulation=50; var ps : TMonPostScriptCanvas; Lang, FallbackLang, ID_lang: String; liste_langues:tstringlist; Form1: TForm1; fermeture,creation,modepage:boolean; versionprogramme:longint; rapportideal,rapportactuel:extended; respectrapport,fichierouvert:boolean; etatactuel:array[1..maxannulation] of tstringlist; nombre_etats_sauvegardes,niveau_max_sauvegarde:integer; BIBI:tmonbitmap; imprimante:tprinter; orientation_impression:tprinterorientation; or_ps:orientation_ps; p_ps:page_ps; respect_ps:boolean; res_ps_x,res_ps_y:integer; var il:integer; PODirectory: String; f_ini:textfile; nom_ini_file:string; newmenuitem:tmenuitem; chemin_po:string; Search:sysutils.TSearchRec; implementation uses saisielmc, saisielmd, saisiemscore, saisiemscere, saisiesp1,saisieop1, saisielamesr, saisieec, Unit6, Unit8, saisiesphere, saisiemconique, Unit9, Unit10, saisiedia,Unit11, saisiech, saisiegr, saisielec, saisienor, saisiefant, saisiecercle, UNIT32, saisieptssurfaceonde, saisief1, saisieoe, modif_espace_travail, Unit16, Unit17, Unit19, Unit14, Unit13, Unitgpl, fiche_affiche_coordonees,Unit15,Unit12,saisiefle,Unit5, saisiepri,saisiereseau; label 1888; procedure tform1.ConfigurationInitiale; var fc,fconf:textfile; s,s1:string; titi:integer; t1:tcolor; label 111,112,113; begin policedefaut:=tfont.Create; policedefaut.Assign(form1.font); unit9.fontetexte:=tfont.Create; unit9.fontetexte.Assign(form1.font); if fileexistsutf8(nom_fichier_config_optgeo) then begin AssignFile(Fc,UTF8ToSys(nom_fichier_config_optgeo)); reset(fc); while not(eof(fc)) do begin readln(fc,s); if s='repertoire exemples' then begin readln(fc,s1); repertoire_exemples:=s1; repertoire_exemples:=AppendPathDelim(repertoire_exemples); end; if s='repertoire simulation perso' then begin readln(fc,s1); repertoire_simul_perso:=s1; repertoire_simul_perso:=AppendPathDelim(repertoire_simul_perso); end; if s='repertoire config perso' then begin readln(fc,s1); end; end; { de la boucle while} closefile(fc); goto 112; end; 111: try titi:=idno; forcedirectories(UTF8ToSys(repertoire_config_perso)); AssignFile(Fc,UTF8ToSys(nom_fichier_config_optgeo)); rewrite(fc); {si creation impossible} except titi:= application.messagebox(pchar(rsImpossibleDe), pchar(rsErreurCritiq), mb_okcancel); end; if titi=idcancel then close; if titi=idok then begin repertoire_exemples:=repertoire_exemples_par_defaut; repertoire_simul_perso:=repertoire_simul_perso_par_defaut; exit; end; application.messagebox(pchar(rsOptGeoEstExC), pchar(rsBienvenue), mb_ok); 113: with form16 do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; form16.rep1.text:=repertoireexecutable; form16.rep1.Enabled:=false; form16.directoryedit1.enabled:=true; form16.directoryedit2.enabled:=false; form16.directoryedit3.enabled:=true; form16.directoryedit1.Directory:=repertoire_exemples; form16.directoryedit2.Directory:=repertoire_config_perso; form16.directoryedit3.Directory:=repertoire_simul_perso; form16.showmodal; repertoire_exemples:=form16.directoryedit1.Directory; //repertoire_config_perso:=form16.directoryedit2.Directory; repertoire_simul_perso:=form16.directoryedit3.Directory; if not(directoryexistsUTF8(repertoire_exemples)) then try forcedirectories(UTF8ToSys(repertoire_exemples)); except; end; if not(directoryexistsUTF8(repertoire_exemples)) then begin application.messagebox(pchar(rsJeNeParviens), pchar(rsMaisEuh), mb_ok); repertoire_exemples:=repertoire_exemples_par_defaut; goto 113; end; if not(directoryexistsUTF8(repertoire_simul_perso)) then try forcedirectories(UTF8ToSys(repertoire_simul_perso)); except end; if not(directoryexistsUTF8(repertoire_simul_perso)) then begin application.messagebox(pchar(rsJeNeParviens2), pchar(rsMaisEuh), mb_ok); repertoire_simul_perso:=repertoire_simul_perso_par_defaut; goto 113; end; if not(directoryexistsUTF8(repertoire_config_perso)) then try forcedirectories(UTF8ToSys(repertoire_config_perso)); except; end; if not(directoryexistsUTF8(repertoire_config_perso)) then begin application.messagebox(pchar(rsJeNeParviens3), pchar(rsMaisEuh), mb_ok); repertoire_config_perso:=''; nom_fichier_config_perso:=''; goto 113; end; writeln(fc,'repertoire exemples'); writeln(fc,repertoire_exemples); writeln(fc,'repertoire simulation perso'); writeln(fc,repertoire_simul_perso); writeln(fc,'repertoire config perso'); writeln(fc,repertoire_config_perso); closefile(fc); 112: if not(directoryexistsUTF8(repertoire_exemples)) then try forcedirectories(UTF8ToSys(repertoire_exemples)); except; end; if not(directoryexistsUTF8(repertoire_exemples)) then begin application.messagebox(pchar(rsRepertoireDe), pchar(rsMaisEuh), mb_ok); repertoire_exemples:=repertoire_exemples_par_defaut; end; if not(directoryexistsUTF8(repertoire_simul_perso)) then try forcedirectories(UTF8ToSys(repertoire_simul_perso)); except; end; if not(directoryexistsUTF8(repertoire_simul_perso)) then begin application.messagebox(pchar(rsRepertoireDe2), pchar(rsMaisEuh), mb_ok); repertoire_simul_perso:=repertoire_simul_perso_par_defaut; end; if not(directoryexistsUTF8(repertoire_config_perso)) then try forcedirectories(UTF8ToSys(repertoire_config_perso)); except; end; if not(directoryexistsUTF8(repertoire_config_perso)) then begin application.messagebox(pchar(rsRepertoireDe3), pchar(rsMaisEuh), mb_ok); repertoire_config_perso:=''; nom_fichier_config_perso:=''; exit; end; if not(fileexistsutf8(nom_fichier_config_perso)) then exit; {le fichier de config existe: on tente de le lire} assignfile(fconf,UTF8ToSys(nom_fichier_config_perso)); reset(fconf); while not(eof(fconf)) do begin readln(fconf,s); {ecrase le repertoire perso de simul} if s='Repertoire perso' then readln(fconf, repertoire_simul_perso); if s='Repertoire courant' then readln(fconf,repertoire_actuel); if s='Miroir plan' then begin readln(fconf,couleurmiroirplan); readln(fconf,epaisseurmiroirplan); end; if s='Miroir sphérique concave paraxial' then begin readln(fconf,couleurmscopa); readln(fconf,epaisseurmscopa); readln(fconf,couleuraxemscopa); end; if s='Miroir sphérique convexe paraxial' then begin readln(fconf,couleurmscepa); readln(fconf,epaisseurmscepa); readln(fconf,couleuraxemscepa); end; if s='Miroir sphérique concave réel' then begin readln(fconf,couleurmscore); readln(fconf,epaisseurmscore); readln(fconf,couleuraxemscore); end; if s='Miroir sphérique convexe réel' then begin readln(fconf,couleurmscere); readln(fconf,epaisseurmscere); readln(fconf,couleuraxemscere); end; if s='Miroir cônique' then begin readln(fconf,couleurmiroirconique); readln(fconf,epaisseurmiroirconique); readln(fconf,couleuraxemiroirconique); end; if s='Lentille mince convergente idéale' then begin readln(fconf,couleurlmc); readln(fconf,epaisseurlmc); readln(fconf,couleuraxelmc); end; if s='Lentille mince divergente idéale' then begin readln(fconf,couleurlmd); readln(fconf,epaisseurlmd); readln(fconf,couleuraxelmd); end; if s='Lentille épaisse' then begin readln(fconf,couleurlec); readln(fconf,couleuraxelec); end; if s='Polyhèdre réfractant' then readln(fconf,couleurpolyhedre); if s='Polycercle réfractant' then readln(fconf,couleurpolycercle); if s='Sphère réfractante' then readln(fconf,couleursphere); if s='Rayon unique' then begin readln(fconf,couleurrayon); readln(fconf,epaisseurrayon); end; if s='Onde plane' then begin readln(fconf,couleurondeplane); readln(fconf,epaisseurondeplane); end; if s='Source ponctuelle' then begin readln(fconf,couleursourceponctuelle); readln(fconf,epaisseursourceponctuelle); end; if s='Ecran' then begin readln(fconf,couleurecran); readln(fconf,epaisseurecran); end; if s='Lame semi-réfléchissante' then begin readln(fconf,couleurlsr); readln(fconf,epaisseurlsr); end; if s='Diaphragme' then begin readln(fconf,couleurDiaphragme); readln(fconf,epaisseurDiaphragme); end; if s='Oeil' then begin readln(fconf,couleurOeil); readln(fconf,epaisseurOeil); end; if s='Fléche' then begin readln(fconf,couleurFleche); readln(fconf,epaisseurFleche); end; if s='Texte' then begin policedefaut.style:=[]; readln(fconf,s1); policedefaut.charset:=strtoint(s1); readln(fconf,t1); policedefaut.color:=t1; readln(fconf,s1); policedefaut.name:=s1; readln(fconf,s1); policedefaut.size:=strtoint(s1); readln(fconf,s1); if s1='fsbold' then policedefaut.style:=policedefaut.style+[fsbold]; readln(fconf,s1); if s1='fsitalic' then policedefaut.style:=policedefaut.style+[fsitalic]; readln(fconf,s1); if s1='fsunderline' then policedefaut.style:=policedefaut.style+[fsunderline]; readln(fconf,s1); if s1='fsstrikeout' then policedefaut.style:=policedefaut.style+[fsstrikeout]; readln(fconf,s1); if s1='fpDefault' then policedefaut.pitch:=fpDefault; if s1='fpVariable' then policedefaut.pitch:=fpVariable; if s1='fpFixed' then policedefaut.pitch:=fpFixed; end; if s='Prisme' then readln(fconf,couleurprisme); if s='Reseau' then begin readln(fconf,couleurreseau); readln(fconf,epaisseurreseau); end; end; closefile(fconf); end; function tform1.retaille_espace_possible(newxmin,newxmax,newymin,newymax:extended):boolean; var oldxmin,oldxmax,oldymax,oldymin:extended; i:integer; essaimiroirplan:miroirplan; essaireseau:reseau; essaimscopa:mscopa; essaimscepa:mscepa; essaimscore:mscore; essaimscere:mscere; essailmc:lmc; essailmd:lmd; essailec:lec; essairayon:rayon; essaiondeplane:ondeplane; essaisourceponctuelle:sourceponctuelle; essaiecran:ecran; essailsr:lsr; essaipolyhedre:polyhedre; essaipolycercle:polycercle; essaisphere:sphere; essaimiroirconique:miroirconique; essaitexteaffiche:texteaffiche; essaidiaphragme:diaphragme; essaifleche:fleche; essaioeil:oeil; essaimetre:metre; essaiangle:angle; label 789456; begin retaille_espace_possible:=true; if nombrequelquechose=0 then exit; oldymax:=yymax; oldymin:=yymin; oldxmax:=xxmax; oldxmin:=xxmin; xxmax:=newxmax; xxmin:=newxmin; yymax:=newymax; yymin:=newymin; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if not essaimiroirplan.create(listemiroirplan[-1+i].a1x,listemiroirplan[-1+i].a1y, listemiroirplan[-1+i].a2x,listemiroirplan[-1+i].a2y,listemiroirplan[-1+i].epaisseur, listemiroirplan[-1+i].couleur,listemiroirplan[-1+i].hachures) then goto 789456; if nombrereseau>0 then for i:=1 to nombrereseau do if not essaireseau.create(listereseau[-1+i].a1x,listereseau[-1+i].a1y, listereseau[-1+i].a2x,listereseau[-1+i].a2y,listereseau[-1+i].epaisseur, listereseau[-1+i].couleur,listereseau[-1+i].pas,listereseau[-1+i].entransmission, listereseau[-1+i].hachures,listereseau[-1+i].ordre_min,listereseau[-1+i].ordre_max) then goto 789456; if nombremscopa>0 then for i:=1 to nombremscopa do if not essaimscopa.create2( listemscopa[-1+i].a1x, listemscopa[-1+i].a1y, listemscopa[-1+i].a2x, listemscopa[-1+i].a2y, listemscopa[-1+i].focale, listemscopa[-1+i].epaisseur, listemscopa[-1+i].couleur, listemscopa[-1+i].couleuraxe, listemscopa[-1+i].hachures, listemscopa[-1+i].axefocal, listemscopa[-1+i].trou, listemscopa[-1+i].diametretrou) then goto 789456; if nombremscepa>0 then for i:=1 to nombremscepa do if not essaimscepa.create2( listemscepa[-1+i].a1x, listemscepa[-1+i].a1y, listemscepa[-1+i].a2x, listemscepa[-1+i].a2y, listemscepa[-1+i].focale, listemscepa[-1+i].epaisseur, listemscepa[-1+i].couleur, listemscepa[-1+i].couleuraxe, listemscepa[-1+i].hachures, listemscepa[-1+i].axefocal, listemscepa[-1+i].trou, listemscepa[-1+i].diametretrou) then goto 789456; if nombremscore>0 then for i:=1 to nombremscore do if not essaimscore.create2( listemscore[-1+i].a1x, listemscore[-1+i].a1y, listemscore[-1+i].a2x, listemscore[-1+i].a2y, listemscore[-1+i].rayoncourbure, listemscore[-1+i].epaisseur, listemscore[-1+i].couleur, listemscore[-1+i].couleuraxe, listemscore[-1+i].hachures, listemscore[-1+i].axefocal, listemscore[-1+i].aigu, listemscore[-1+i].trou, listemscore[-1+i].diametretrou) then goto 789456; if nombremscere>0 then for i:=1 to nombremscere do if not essaimscere.create2( listemscere[-1+i].a1x, listemscere[-1+i].a1y, listemscere[-1+i].a2x, listemscere[-1+i].a2y, listemscere[-1+i].rayoncourbure, listemscere[-1+i].epaisseur, listemscere[-1+i].couleur, listemscere[-1+i].couleuraxe, listemscere[-1+i].hachures, listemscere[-1+i].axefocal, listemscere[-1+i].aigu, listemscere[-1+i].trou, listemscere[-1+i].diametretrou) then goto 789456; if nombrelec>0 then for i:=1 to nombrelec do if not essailec.create( listelec[-1+i].s1x, listelec[-1+i].s1y, listelec[-1+i].s2x, listelec[-1+i].s2y, listelec[-1+i].r1, listelec[-1+i].r2, listelec[-1+i].diametre, listelec[-1+i].couleurfond, listelec[-1+i].couleuraxe, listelec[-1+i].axefocal, listelec[-1+i].indicerouge, listelec[-1+i].indicebleu, listelec[-1+i].indicevert, listelec[-1+i].reflechientrant, listelec[-1+i].reflechisortant) then goto 789456; if nombrelmc>0 then for i:=1 to nombrelmc do if not essailmc.create2( listelmc[-1+i].a1x, listelmc[-1+i].a1y, listelmc[-1+i].a2x, listelmc[-1+i].a2y, listelmc[-1+i].focale, listelmc[-1+i].epaisseur, listelmc[-1+i].couleur, listelmc[-1+i].couleuraxe, listelmc[-1+i].axefocal) then goto 789456; if nombrelmd>0 then for i:=1 to nombrelmd do if not essailmd.create2( listelmd[-1+i].a1x, listelmd[-1+i].a1y, listelmd[-1+i].a2x, listelmd[-1+i].a2y, listelmd[-1+i].focale, listelmd[-1+i].epaisseur, listelmd[-1+i].couleur, listelmd[-1+i].couleuraxe, listelmd[-1+i].axefocal) then goto 789456; if nombrerayon>0 then for i:=1 to nombrerayon do if not essairayon.create( listerayon[-1+i].ax, listerayon[-1+i].ay, listerayon[-1+i].kx, listerayon[-1+i].ky, listerayon[-1+i].couleur, listerayon[-1+i].epaisseur, listerayon[-1+i].vav, listerayon[-1+i].vaa, listerayon[-1+i].nombremaxenfant, listerayon[-1+i].maxsegment) then goto 789456; if nombreondeplane>0 then for i:=1 to nombreondeplane do if not essaiondeplane.create( listeondeplane[-1+i].nombrederayon, listeondeplane[-1+i].sx, listeondeplane[-1+i].sy, listeondeplane[-1+i].a1x, listeondeplane[-1+i].a1y, listeondeplane[-1+i].a2x, listeondeplane[-1+i].a2y, listeondeplane[-1+i].couleur, listeondeplane[-1+i].epaisseur, listeondeplane[-1+i].vav, listeondeplane[-1+i].vaa, listeondeplane[-1+i].maxenfantparrayon, listeondeplane[-1+i].tracersurfacesonde, listeondeplane[-1+i].listechemins, listeondeplane[-1+i].maxsegment) then goto 789456; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if not essaisourceponctuelle.create( listesourceponctuelle[-1+i].nombrederayon, listesourceponctuelle[-1+i].sx, listesourceponctuelle[-1+i].sy, listesourceponctuelle[-1+i].a1x, listesourceponctuelle[-1+i].a1y, listesourceponctuelle[-1+i].a2x, listesourceponctuelle[-1+i].a2y, listesourceponctuelle[-1+i].couleur, listesourceponctuelle[-1+i].epaisseur, listesourceponctuelle[-1+i].vav, listesourceponctuelle[-1+i].vaa, listesourceponctuelle[-1+i].maxenfantparrayon, listesourceponctuelle[-1+i].sourcevirtuelle, listesourceponctuelle[-1+i].tracersurfacesonde, listesourceponctuelle[-1+i].listechemins, listesourceponctuelle[-1+i].maxsegment) then goto 789456; if nombreecran>0 then for i:=1 to nombreecran do if not essaiecran.create( listeecran[-1+i].a1x, listeecran[-1+i].a1y, listeecran[-1+i].a2x, listeecran[-1+i].a2y, listeecran[-1+i].epaisseur, listeecran[-1+i].couleur) then goto 789456; if nombrelsr>0 then for i:=1 to nombrelsr do if not essailsr.create( listelsr[-1+i].a1x, listelsr[-1+i].a1y, listelsr[-1+i].a2x, listelsr[-1+i].a2y, listelsr[-1+i].epaisseur, listelsr[-1+i].couleur) then goto 789456; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do if not essaipolyhedre.create( listepolyhedre[-1+i].nombresommet, listepolyhedre[-1+i].messommets, listepolyhedre[-1+i].indicerouge, listepolyhedre[-1+i].indicebleu, listepolyhedre[-1+i].indicevert, listepolyhedre[-1+i].couleurbord, listepolyhedre[-1+i].couleurfond, listepolyhedre[-1+i].reflechientrant, listepolyhedre[-1+i].reflechisortant) then goto 789456; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do if not essaipolycercle.create( listepolycercle[-1+i].nombresommet, listepolycercle[-1+i].messommets, listepolycercle[-1+i].mess, listepolycercle[-1+i].rectiligne, listepolycercle[-1+i].indicerouge, listepolycercle[-1+i].indicebleu, listepolycercle[-1+i].indicevert, listepolycercle[-1+i].couleurbord, listepolycercle[-1+i].couleurfond, listepolycercle[-1+i].reflechientrant, listepolycercle[-1+i].reflechisortant) then goto 789456; if nombresphere>0 then for i:=1 to nombresphere do if not essaisphere.create( listesphere[-1+i].cx, listesphere[-1+i].cy, listesphere[-1+i].rayon, listesphere[-1+i].indicerouge, listesphere[-1+i].indicebleu, listesphere[-1+i].indicevert, listesphere[-1+i].couleurbord, listesphere[-1+i].couleurfond, listesphere[-1+i].reflechientrant, listesphere[-1+i].reflechisortant) then goto 789456; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if not essaimiroirconique.create2( listemiroirconique[-1+i].fx, listemiroirconique[-1+i].fy, listemiroirconique[-1+i].theta0, listemiroirconique[-1+i].theta1, listemiroirconique[-1+i].theta2, listemiroirconique[-1+i].excentricite, listemiroirconique[-1+i].parametre, listemiroirconique[-1+i].concave, listemiroirconique[-1+i].couleur, listemiroirconique[-1+i].couleuraxe, listemiroirconique[-1+i].hachures, listemiroirconique[-1+i].axefocal) then goto 789456; if nombretexte>0 then for i:=1 to nombretexte do if not essaitexteaffiche.create(listetexteaffiche[-1+i].texteluimeme, listetexteaffiche[-1+i].policename,listetexteaffiche[-1+i]. policecharset,listetexteaffiche[-1+i].policecolor, listetexteaffiche[-1+i].policesize, listetexteaffiche[-1+i].policepitch, listetexteaffiche[-1+i].policefsbold, listetexteaffiche[-1+i].policefsitalic, listetexteaffiche[-1+i].policefsunderline, listetexteaffiche[-1+i].policefsstrikeout, listetexteaffiche[-1+i].x, listetexteaffiche[-1+i].y) then goto 789456; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if not essaidiaphragme.create2( listediaphragme[-1+i].cx, listediaphragme[-1+i].cy, listediaphragme[-1+i].anglepolaire, listediaphragme[-1+i].rint, listediaphragme[-1+i].rext, listediaphragme[-1+i].couleur, listediaphragme[-1+i].epaisseur) then goto 789456; if nombrefleche>0 then for i:=1 to nombrefleche do if not essaifleche.create( listefleche[-1+i].a1x, listefleche[-1+i].a1y, listefleche[-1+i].a2x, listefleche[-1+i].a2y, listefleche[-1+i].epaisseur, listefleche[-1+i].couleur, listefleche[-1+i].ext1, listefleche[-1+i].ext2, listefleche[-1+i].styletrait, listefleche[-1+i].taille1, listefleche[-1+i].taille2 ) then goto 789456; if nombreoeil>0 then for i:=1 to nombreoeil do if not essaioeil.create( listeoeil[-1+i].cx, listeoeil[-1+i].cy, listeoeil[-1+i].ax, listeoeil[-1+i].ay, listeoeil[-1+i].epaisseur, listeoeil[-1+i].couleur) then goto 789456; if nombremetre>0 then for i:=1 to nombremetre do if not essaimetre.create( listemetre[-1+i].a1x, listemetre[-1+i].a1y, listemetre[-1+i].a2x, listemetre[-1+i].a2y) then goto 789456; if nombreangle>0 then for i:=1 to nombreangle do if not essaiangle.create( listeangle[-1+i].cx, listeangle[-1+i].cy, listeangle[-1+i].a1x, listeangle[-1+i].a1y, listeangle[-1+i].a2x, listeangle[-1+i].a2y) then goto 789456; xxmax:=oldxmax; xxmin:=oldxmin; yymax:=oldymax; yymin:=oldymin; exit; 789456: retaille_espace_possible:=false; xxmax:=oldxmax; xxmin:=oldxmin; yymax:=oldymax; yymin:=oldymin; exit; end; function tform1.nombrequelquechose:integer; begin nombrequelquechose:=nombremiroirplan+nombrereseau+nombremscopa+nombremscepa+nombremscore+nombremscere+ nombrelmc+nombrelec+nombrelmd+nombrerayon+nombreondeplane+nombresourceponctuelle+nombreecran+ nombrelsr+nombrepolyhedre+nombresphere+nombremiroirconique+nombretexte +nombrediaphragme+nombrepolycercle+nombrefleche+nombreoeil+nombreangle+nombremetre+nombreprisme; end; function TForm1.modequelquechose:boolean; begin modequelquechose:=(ajoutencours or modemodif or modeinfo or modeduplication or modedistance or modeangle or modesuppression) end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var x1,y1,lambda,riri1,riri2,tx,ty,ux,uy,hx,hy,AiAj,ix,iy,tt:extended; iiii:integer; ppoint,posi:tpoint; begin {sous gtk2, ca ne suit pas le mouvement de la souris: on rerecupere la position du curseur, pas actualisee assez rapidement} getcursorpos(posi); image1.OnMousedown:=nil; application.ProcessMessages; image1.OnMousedown:=@image1mousedown; posi:=image1.ScreenToClient(posi); x:=posi.x; y:=posi.y; if creation then exit; if modesuppression then begin effectuesuppression(sender,button,shift,x,y); sauvevirtuel; exit; end; if modegroupement then begin effectuegroupement(sender,button,shift,x,y); sauvevirtuel; exit; end; if (modemodif and modifencours) then begin finmodif(sender,button,shift,x,y); sauvevirtuel; exit; end; if (modemodif and not(modifencours)) then begin debutmodif(sender,button,shift,x,y); exit; end; if (modeinfo) then begin Info(Sender,Button,Shift,x,y); exit; end; if not(Form1.modequelquechose) then exit; bibi.LimitesEtAxes(xxmin,xxmax,yymin,yymax,yymin,yymax,form1.image1.width, form1.image1.height,'',policedefaut,true,clwhite,false,0,clblack,false,0,0,clblack, policedefaut,false,false,{grillex,grilley,}1,clblack,clblack,'','','','','','',false,false,false); graphepresent:=true; if point1fait then begin if (ssalt in shift) then x:=lastxf; if (ssctrl in shift) then y:=lastyf; end; BIBI.convert(x,y,x1,y1,true); lastxf:=x; lastyf:=y; if ((modedistance or modeangle) and not(point1fait)) then begin point1fait:=true; point1x:=x1; point1y:=y1; BIBI.cercle(point1x,point1y,3,1,clblack,pmcopy,true); rafraichit; affichecoordonnees(x1,y1); if modedistance then form1.image1.Cursor:=crpoint2 else form1.image1.Cursor:=crpoint1 ; if modedistance then form1.StatusBar1.Panels[2].text:= rsPositionnezL else form1.StatusBar1.Panels[2].text:= rsPositionnezL2; exit; end; if (modedistance and point1fait) then begin retaillepmetre(listemetre,nombremetre,nombremetre+1); inc(nombremetre); listemetre[-1+nombremetre].create(point1x,point1y,x1,y1); listemetre[-1+nombremetre].dessine(BIBI); sauvevirtuel; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:= ''; modedistance:=false; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; if (modeangle and point1fait and not(point2fait)) then begin point2x:=x1; point2y:=y1; point2fait:=true; BIBI.cercle(point2x,point2y,3,1,clblack,pmcopy,true); affichecoordonnees(x1,y1); form1.image1.Cursor:=crpoint2; form1.StatusBar1.Panels[2].text:= rsPositionnezL3; rafraichit; exit; end; if (modeangle and point2fait) then begin retaillepangle(listeangle,nombreangle,nombreangle+1); inc(nombreangle); listeangle[-1+nombreangle].create(point1x,point1y,point2x,point2y,x1,y1); listeangle[-1+nombreangle].dessine(bibi); sauvevirtuel; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:= ''; modeangle:=false; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; if( not (form1.ajoutencours)) then begin affichecoordonnees(x1,y1); //form1.monimage1.free; exit; end; if attractiongrille then bibi.arronditalagrille(x1,y1,grillex,grilley); {1er clic} if ajouttexte then begin retailleptexteaffiche(listetexteaffiche,nombretexte,nombretexte+1); inc(nombretexte); listetexteaffiche[-1+nombretexte].create(texteaafficher,fontetexte.name, fontetexte.charset,fontetexte.color,fontetexte.size,fontetexte.pitch, (fsbold in fontetexte.style),(fsitalic in fontetexte.style), (fsunderline in fontetexte.style),(fsstrikeout in fontetexte.style),x1,y1); affichecoordonnees(x1,y1); form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:= ''; ajouttexte:=false; //form1.monimage1.free; form1.activeboutons; rafraichit; sauvevirtuel; exit; end; if ajoutpoly then begin point1fait:=true; point2fait:=true; point1x:=x1; pointrx:=x1; point1xi:=x; pointrxi:=x; point1y:=y1; pointry:=y1; point1yi:=y; pointryi:=y; inc(nbactsommet); toutjustefait:=(nbactsommet=nbpoly-1); ttpoly[nbactsommet].ax:=x1; ttpoly[nbactsommet].ay:=y1; form1.image1.Cursor:=crsuivant; form1.StatusBar1.Panels[2].text:= rsPositionnezL4; if nbactsommet=nbpoly then begin ReTaillePpolyhedre(Listepolyhedre,nombrepolyhedre,nombrepolyhedre+1); inc(nombrepolyhedre); if not (listepolyhedre[-1+nombrepolyhedre].create(nbpoly,ttpoly,1.4,1.8,1.6, clblack,couleurpolyhedre,jamaisreflechi,jamaisreflechi)) then begin ReTaillePpolyhedre(Listepolyhedre,nombrepolyhedre,nombrepolyhedre-1); dec(nombrepolyhedre); application.messagebox(pchar(rsPointsSaisis), pchar(rsAttention), mb_ok); end else begin Listepolyhedre[-1+nombrepolyhedre].dessine(BIBI); sauvevirtuel; end; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; form1.activeboutons; end; rafraichit; affichecoordonnees(x1,y1); exit; end; if (ajoutpolycercle and not(rectifait)) then begin point1x:=x1; pointrx:=x1; point1xi:=x; pointrxi:=x; point1fait:=true; point1y:=y1; pointry:=y1; point1yi:=y; pointryi:=y; inc(nbactsommet); ttpoly[nbactsommet].ax:=x1; ttpoly[nbactsommet].ay:=y1; toutjustefait:=(nbactsommet=nbpoly-1); if nbactsommetwidth then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; if iiii0 then begin ttc[listerecti[nbrectiact]].ax:=tts[listerecti[nbrectiact]].ax +tt_rayon[listerecti[nbrectiact]] *(ttpoly[listerecti[nbrectiact]+1].ay-ttpoly[listerecti[nbrectiact]].ay)/AiAj; ttc[listerecti[nbrectiact]].ay:=tts[listerecti[nbrectiact]].ay -tt_rayon[listerecti[nbrectiact]] *(ttpoly[listerecti[nbrectiact]+1].ax-ttpoly[listerecti[nbrectiact]].ax)/AiAj; end; cctheta1[listerecti[nbrectiact]] :=donneanglepolairedans02pi(ttpoly[listerecti[nbrectiact]].ax -ttc[listerecti[nbrectiact]].ax, ttpoly[listerecti[nbrectiact]].ay-ttc[listerecti[nbrectiact]].ay); cctheta2[listerecti[nbrectiact]]:=donneanglepolairedans02pi (ttpoly[listerecti[nbrectiact]+1].ax- ttc[listerecti[nbrectiact]].ax, ttpoly[listerecti[nbrectiact]+1].ay-ttc[listerecti[nbrectiact]].ay); if (tts[listerecti[nbrectiact]].ax-ttc[listerecti[nbrectiact]].ax) *(ttpoly[listerecti[nbrectiact]+1].ay-ttpoly[listerecti[nbrectiact]].ay)- (tts[listerecti[nbrectiact]].ay-ttc[listerecti[nbrectiact]].ay) *(ttpoly[listerecti[nbrectiact]+1].ax-ttpoly[listerecti[nbrectiact]].ax)>0 then begin if cctheta2[listerecti[nbrectiact]]cctheta1[listerecti[nbrectiact]] then cctheta2[listerecti[nbrectiact]]:=cctheta2[listerecti[nbrectiact]]-2*pi; tt:=cctheta1[listerecti[nbrectiact]]; cctheta1[listerecti[nbrectiact]]:=cctheta2[listerecti[nbrectiact]]; cctheta2[listerecti[nbrectiact]]:=tt; end; {********************************} rafraichit; BIBI.trait(ttpoly[1].ax,ttpoly[1].ay,ttpoly[nbpoly].ax, ttpoly[nbpoly].ay,1,couleurmiroirplan,psdot,pmcopy,true); for iiii:=1 to nbpoly-1 do BIBI.trait(ttpoly[iiii].ax,ttpoly[iiii].ay,ttpoly[iiii+1].ax, ttpoly[iiii+1].ay,1,couleurmiroirplan,psdot,pmcopy,true); BIBI.cercle(tts[listerecti[nbrectiact]].ax,tts[listerecti[nbrectiact]].ay,3, 1,clblack,pmcopy,true); for iiii:=1 to nbrectiact do begin BIBI.cercle(tts[listerecti[iiii]].ax, tts[listerecti[iiii]].ay,3,1,clblack,pmcopy,true); BIBI.arcdecercle(ttc[listerecti[iiii]].ax,ttc[listerecti[iiii]].ay, tt_rayon[listerecti[iiii]],1,cctheta1[listerecti[iiii]],cctheta2[listerecti[iiii]], clblack,pmcopy,psdot,true); end; for iiii:=1 to nbpoly do BIBI.trait(ttpoly[iiii].ax,ttpoly[iiii].ay,ttpoly[iiii+1].ax,ttpoly[iiii+1].ay,1, couleurmiroirplan,psdot,pmcopy,true); if nbrecti=nbrectiact then begin ReTaillePpolycercle(Listepolycercle,nombrepolycercle,nombrepolycercle+1); inc(nombrepolycercle); if not (listepolycercle[-1+nombrepolycercle].create(nbpoly,ttpoly,tts,youri,1.4,1.8,1.6, clblack,couleurpolycercle,jamaisreflechi,jamaisreflechi)) then begin ReTaillePpolycercle(Listepolycercle,nombrepolycercle,nombrepolycercle-1); dec(nombrepolycercle); application.messagebox(pchar(rsPointsSaisis), pchar(rsAttention), mb_ok); end else begin Listepolycercle[-1+nombrepolycercle].dessine(BIBI); sauvevirtuel; end; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; form1.activeboutons; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); exit; end; if (not(point1fait) and not(ajoutpoly or ajoutpolycercle)) then begin if (ajoutmiroirplan or ajoutreseau or ajoutecran or ajoutlsr or ajoutconiqueconcave or ajoutconiqueconvexe or ajoutdiaphragme or ajoutlec or ajoutfleche or ajoutoeil) then BIBI.cercle(x1,y1,2*epaisseurmiroirplan, epaisseurmiroirplan,couleurmiroirplan,pmcopy,true); if ajoutsphere then BIBI.cercle(x1,y1,2*epaisseursphere, epaisseursphere,couleursphere,pmcopy,true); if (ajoutmscopa or ajoutmscepa)then BIBI.cercle(x1,y1,2*epaisseurmscopa, epaisseurmscopa,couleurmscopa,pmcopy,true); if (ajoutmscore or ajoutmscere)then BIBI.cercle(x1,y1,2*epaisseurmscore, epaisseurmscore,couleurmscore,pmcopy,true); if ajoutrayon then BIBI.cercle(x1,y1,2*epaisseurrayon, epaisseurrayon,couleurrayon,pmcopy,true); if ajoutsourceponctuelle then BIBI.cercle(x1,y1,2*epaisseursourceponctuelle, epaisseursourceponctuelle,couleursourceponctuelle,pmcopy,true); if ajoutondeplane then BIBI.cercle(x1,y1,2*epaisseurondeplane, epaisseurondeplane,couleurondeplane,pmcopy,true); if ajoutlmc then BIBI.cercle(x1,y1,2*epaisseurlmc, epaisseurlmc,couleurlmc,pmcopy,true); if ajoutprisme then BIBI.cercle(x1,y1,2*epaisseurprisme, epaisseurprisme,couleurprisme,pmcopy,true); if ajoutlmd then BIBI.cercle(x1,y1,2*epaisseurlmd, epaisseurlmd,couleurlmd,pmcopy,true); point1x:=x1; pointrx:=x1; point1xi:=x; pointrxi:=x; point1y:=y1; pointry:=y1; point1yi:=y; pointryi:=y; if ajoutsourceponctuelle then begin sourcex:=x1; sourcey:=y1; end; point1fait:=true; if ajoutsourceponctuelle then form1.image1.Cursor:=crPoint1 else if ajoutondeplane then form1.image1.Cursor:=crDirection else form1.image1.Cursor:=crPoint2; if ajoutrayon then form1.StatusBar1.Panels[2].text:=rsPositionnezL6; if ajoutondeplane then form1.StatusBar1.Panels[2].text:=rsPositionnezL7; if ajoutsourceponctuelle then form1.StatusBar1.Panels[2].text:=rsPositionnezL8; if ajoutsphere then begin form1.StatusBar1.Panels[2].text:=rsPositionnezU; form1.image1.Cursor:=crdefault; end; if ajoutlec then begin form1.StatusBar1.Panels[2].text:=rsPositionnezL9; form1.image1.Cursor:=crsommet2; end; if ajoutdiaphragme then begin form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL10; end; if (ajoutmiroirplan or ajoutmscopa or ajoutmscepa or ajoutmscere or ajoutmscore ) then form1.StatusBar1.Panels[2].text:= rsPositionnezL11; if (ajoutreseau ) then form1.StatusBar1.Panels[2].text:= rsPositionnezL54; ; if ajoutfleche then form1.StatusBar1.Panels[2].text:= rsPositionnezL12; if (ajoutconiqueconcave or ajoutconiqueconvexe)then begin form1.StatusBar1.Panels[2].text:= rsPositionnezL13; form1.image1.Cursor:=crfoyer; end; if ajoutecran then form1.StatusBar1.Panels[2].text:= rsPositionnezL14; if ajoutoeil then form1.StatusBar1.Panels[2].text:= rsPositionnezL15; if ajoutlsr then form1.StatusBar1.Panels[2].text:= rsPositionnezL16; if ajoutprisme then begin form1.StatusBar1.Panels[2].text:= rsPositionnezL17; form1.image1.Cursor:=crsommet; end; if (ajoutlmc or ajoutlmd) then form1.StatusBar1.Panels[2].text:= rsPositionnezL18; rafraichit; affichecoordonnees(x1,y1); exit; end; {2eme clic lec} if (ajoutlec and point1fait and not(point2fait)) then begin point2x:=x1; point2y:=y1; if sqrt(sqr(point1x-point2x)+sqr(point2y-point1y))width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiediametre.log1.Caption:=unitelongueur; repeat until saisiediametre.showmodal=mrok; if ((point3x-point1x)*(point2x-point1x)+(point3y-point1y)*(point2y-point1y)<0) then riri1:=sqrt(sqr(point3x-point1x)+sqr(point3y-point1y)) else riri1:=-sqrt(sqr(point3x-point1x)+sqr(point3y-point1y)); if ((point4x-point2x)*(point2x-point1x)+(point4y-point2y)*(point2y-point1y)<0) then riri2:=sqrt(sqr(point4x-point2x)+sqr(point4y-point2y)) else riri2:=-sqrt(sqr(point4x-point2x)+sqr(point4y-point2y)); ReTaillePlec(Listelec,nombrelec,nombrelec+1); inc(nombrelec); if not (Listelec[-1+nombrelec].create(point1x,point1y,point2x,point2y,riri1,riri2,diadia, couleurlec,couleuraxelec,true,1.4,1.8,1.6,jamaisreflechi,jamaisreflechi)) then begin ReTaillePlec(Listelec,nombrelec,nombrelec-1); dec(nombrelec); application.messagebox(pchar(rsDonnEsAberra), pchar(rsAttention), mb_ok); end else sauvevirtuel; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic exterieur sphere}; if ajoutsphere then begin ReTaillePsphere(Listesphere,nombresphere,nombresphere+1); inc(nombresphere); if not (Listesphere[-1+nombresphere].create(point1x,point1y,sqrt(sqr(x1-point1x)+sqr(y1-point1y)), 1.4,1.8,1.6,clblack,couleursphere,jamaisreflechi,jamaisreflechi)) then begin ReTaillePsphere(Listesphere,nombresphere,nombresphere-1); dec(nombresphere); application.messagebox(pchar(rsRayonDeLaSph), pchar(rsAttention), mb_ok); end else begin Listesphere[-1+nombresphere].dessine(BIBI); sauvevirtuel; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 2 du miroir plan} if ajoutmiroirplan then begin ReTaillePMiroirPlan(ListeMiroirPlan,nombremiroirplan,nombremiroirplan+1); inc(nombremiroirplan); if not (ListeMiroirPlan[-1+nombremiroirplan].create(point1x,point1y,x1,y1,epaisseurmiroirplan, couleurmiroirplan,true)) then begin ReTaillePMiroirPlan(ListeMiroirPlan,nombremiroirplan,nombremiroirplan-1); dec(nombremiroirplan); application.messagebox(pchar(rsTailleDuMiro), pchar(rsAttention), mb_ok); end else begin ListeMiroirPlan[-1+nombremiroirplan].dessine(BIBI); sauvevirtuel; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 2 du reseau} if ajoutreseau then begin ReTaillePreseau(Listereseau,nombrereseau,nombrereseau+1); inc(nombrereseau); if not (Listereseau[-1+nombrereseau].create(point1x,point1y,x1,y1,epaisseurreseau, couleurreseau,1e-3/500,true,false,-1,1)) then begin ReTaillePreseau(Listereseau,nombrereseau,nombrereseau-1); dec(nombrereseau); application.messagebox(pchar(rsTailleDuRSea2), pchar(rsAttention), mb_ok); end else begin Listereseau[-1+nombrereseau].dessine(BIBI); sauvevirtuel; with fsaisiereseau do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; fsaisiereseau.boutonsup.enabled:=true; fsaisiereseau.editx1.text:=floattostr(listeReseau[-1+nombrereseau].a1x); fsaisiereseau.editx2.text:=floattostr(listeReseau[-1+nombrereseau].a2x); fsaisiereseau.edity1.text:=floattostr(listeReseau[-1+nombrereseau].a1y); fsaisiereseau.edity2.text:=floattostr(listeReseau[-1+nombrereseau].a2y); fsaisiereseau.cochehachures.checked:=listeReseau[-1+nombrereseau].hachures; fsaisiereseau.editepaisseur.Value:=listeReseau[-1+nombrereseau].epaisseur; fsaisiereseau.spinedit_ordre_min.value:=listeReseau[-1+nombrereseau].ordre_min; fsaisiereseau.spinedit_ordre_max.value:=listeReseau[-1+nombrereseau].ordre_max; fsaisiereseau.FloatSpinEdit1.value:=listeReseau[-1+nombrereseau].nombre_trait_par_mm; if listeReseau[-1+nombrereseau].entransmission then fsaisiereseau.radiogroup1.itemindex:=0 else fsaisiereseau.radiogroup1.itemindex:=1; fsaisiereseau.colorgrid1.selected:=( listeReseau[-1+nombrereseau].couleur); fsaisiereseau.caption:= rsPropriTSDeCe24; fsaisiereseau.log1.Caption:=unitelongueur; fsaisiereseau.log2.Caption:=unitelongueur; fsaisiereseau.log3.Caption:=unitelongueur; fsaisiereseau.log4.Caption:=unitelongueur; if fsaisiereseau.showmodal=mrok then begin listeReseau[-2+nombreReseau].create( listeReseau[-1+nombreReseau].a1x, listeReseau[-1+nombreReseau].a1y, listeReseau[-1+nombreReseau].a2x, listeReseau[-1+nombreReseau].a2y, listeReseau[-1+nombreReseau].epaisseur, listeReseau[-1+nombreReseau].couleur, listeReseau[-1+nombreReseau].pas, listeReseau[-1+nombreReseau].entransmission, listeReseau[-1+nombreReseau].hachures, listeReseau[-1+nombreReseau].ordre_min, listeReseau[-1+nombreReseau].ordre_max); retaillepReseau(listeReseau,nombreReseau,nombreReseau-1); dec(nombreReseau); sauvevirtuel; end; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; if ajoutfleche then begin ReTaillePfleche(Listefleche,nombrefleche,nombrefleche+1); inc(nombrefleche); with saisiefleche do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiefleche.showmodal; if not (Listefleche[-1+nombrefleche].create(point1x,point1y,x1,y1,saisiefle.ra_epaisseur, saisiefle.ra_couleur,saisiefle.ra_ext1,saisiefle.ra_ext2,saisiefle.ra_styletrait, saisiefle.ra_taille1,saisiefle.ra_taille2)) then begin ReTaillePfleche(Listefleche,nombrefleche,nombrefleche-1); dec(nombrefleche); application.messagebox(pchar(rsTailleDuTrai), pchar(rsAttention), mb_ok); end else begin sauvevirtuel; Listefleche[-1+nombrefleche].dessine(BIBI); end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 2 de ecran} if ajoutecran then begin ReTaillePecran(Listeecran,nombreecran,nombreecran+1); inc(nombreecran); if not (Listeecran[-1+nombreecran].create(point1x,point1y,x1,y1,epaisseurecran, couleurecran)) then begin ReTaillePecran(Listeecran,nombreecran,nombreecran-1); dec(nombreecran); application.messagebox(pchar(rsTailleDeLCra), pchar(rsAttention), mb_ok); end else begin Listeecran[-1+nombreecran].dessine(BIBI); sauvevirtuel; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 2 de oeil} if ajoutoeil then begin ReTaillePoeil(Listeoeil,nombreoeil,nombreoeil+1); inc(nombreoeil); if not (Listeoeil[-1+nombreoeil].create(point1x,point1y,x1,y1,epaisseuroeil, couleuroeil)) then begin ReTaillePoeil(Listeoeil,nombreoeil,nombreoeil-1); dec(nombreoeil); application.messagebox(pchar(rsTailleDeLOei), pchar(rsAttention), mb_ok); end else begin Listeoeil[-1+nombreoeil].dessine(BIBI); sauvevirtuel; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 2 de lsr} if ajoutlsr then begin ReTaillePlsr(Listelsr,nombrelsr,nombrelsr+1); inc(nombrelsr); if not (Listelsr[-1+nombrelsr].create(point1x,point1y,x1,y1,epaisseurlsr, couleurlsr)) then begin ReTaillePlsr(Listelsr,nombrelsr,nombrelsr-1); dec(nombrelsr); application.messagebox(pchar(rsTailleDeLaLa), pchar(rsAttention), mb_ok); end else begin Listelsr[-1+nombrelsr].dessine(BIBI); sauvevirtuel; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 2 du rayon} if ajoutrayon then begin ReTaillePrayon(Listerayon,nombrerayon,nombrerayon+1); inc(nombrerayon); if not( listerayon[-1+nombrerayon].create(point1x,point1y,x1-point1x,y1-point1y, couleurrayon,epaisseurrayon,'','',10,maxmaxsegment)) then begin ReTaillePrayon(Listerayon,nombrerayon,nombrerayon-1); dec(nombrerayon); application.messagebox(pchar(rsPointsTropPr), pchar(rsAttention), mb_ok); end else begin sauvevirtuel; listerayon[-1+nombrerayon].dessine(BIBI); end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 1 de la source ponctuelle} if (ajoutsourceponctuelle and not(point2fait) and point1fait) then begin point1x:=x1; point1y:=y1; if sqrt(sqr(sourcex-point1x)+sqr(sourcey-point1y))width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; rafraichit; BIBI.trait(point1x,point1y,directionx,directiony,1,couleurondeplane,pssolid,pmcopy,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurondeplane,pssolid,pmcopy,true); BIBI.cercle(point1x,point1y,2*epaisseurondeplane,epaisseurondeplane, couleurondeplane,pmcopy,true); BIBI.cercle(directionx,directiony,2*epaisseurondeplane,epaisseurondeplane, couleurondeplane,pmcopy,true); BIBI.cercle(x1,y1,2*epaisseurondeplane,epaisseurondeplane, couleurondeplane,pmcopy,true); saisienombrerayons.showmodal; ReTaillePondeplane(Listeondeplane,nombreondeplane,nombreondeplane+1); inc(nombreondeplane); if not(listeondeplane[-1+nombreondeplane].create(nbsaisie,directionx,directiony,point1x, point1y,x1,y1,couleurondeplane,epaisseurondeplane,'','',10,false,'',maxmaxsegment)) then begin ReTaillePondeplane(Listeondeplane,nombreondeplane,nombreondeplane-1); dec(nombreondeplane); application.messagebox(pchar(rsPointsTropPr), pchar(rsAttention), mb_ok); //form1.monimage1.free; rafraichit; exit; end; sauvevirtuel; listeondeplane[-1+nombreondeplane].dessine(BIBI); //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.image1.Cursor:=crdefault; form1.activeboutons; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic sur le point 2 de la source ponctuelle} if (ajoutsourceponctuelle and point2fait) then begin if ((sqrt(sqr(sourcex-x1)+sqr(sourcey-y1))width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; if genrevirtuel then StaticText1.Caption:= rsNombreDeRayo else StaticText1.Caption:= rsNombreDeRayo2; ; end; saisienombrerayons.showmodal; ReTaillePSourcePonctuelle(listesourceponctuelle,nombresourceponctuelle, nombresourceponctuelle+1); inc(nombresourceponctuelle); if not(genrevirtuel) then if not(listesourceponctuelle[-1+nombresourceponctuelle].create(nbsaisie,sourcex,sourcey,point1x, point1y,x1,y1,couleursourceponctuelle,epaisseursourceponctuelle,'','',10,false,false,'',maxmaxsegment)) then begin ReTaillePSourcePonctuelle(listesourceponctuelle,nombresourceponctuelle, nombresourceponctuelle-1); dec(nombresourceponctuelle); application.messagebox(pchar(rsPointsTropPr), pchar(rsAttention), mb_ok); //form1.monimage1.free; rafraichit; exit; end; if (genrevirtuel) then if not(listesourceponctuelle[-1+nombresourceponctuelle].create(nbsaisie,sourcex,sourcey,point1x, point1y,x1,y1,couleursourceponctuelle,epaisseursourceponctuelle,'(1)','',10,true,false,'',maxmaxsegment)) then begin ReTaillePSourcePonctuelle(listesourceponctuelle,nombresourceponctuelle, nombresourceponctuelle-1); dec(nombresourceponctuelle); application.messagebox(pchar(rsPointsTropPr), pchar(rsAttention), mb_ok); //form1.monimage1.free; rafraichit; exit; end; sauvevirtuel; listesourceponctuelle[-1+nombresourceponctuelle].dessine(BIBI); //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; {clic point 1 du diaphragme} if ((ajoutdiaphragme) and not( point2fait)) then begin point2x:=x1; point2y:=y1; if sqrt((point2x-point1x)*(point2x-point1x)+(point2y-point1y)*(point2y-point1y))0 then begin axefocal_x2:=axefocal_x1; axefocal_y2:=yymax; end else begin axefocal_x2:=axefocal_x1; axefocal_y2:=yymin; end; if ((axefocal_normaley=0) and (axefocal_normalex<>0)) then if axefocal_normalex>0 then begin axefocal_x2:=xxmax; axefocal_y2:=axefocal_y1; end else begin axefocal_x2:=xxmin; axefocal_y2:=axefocal_y1; end; if ((axefocal_normaley<>0) and (axefocal_normalex<>0)) then if ( (axefocal_y1+(xxmin-axefocal_x1)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_y1+(xxmin-axefocal_x1)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex<0)) then begin axefocal_y2:=axefocal_y1+(xxmin-axefocal_x1)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmin; end else if ( (axefocal_y1+(xxmax-axefocal_x1)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_y1+(xxmax-axefocal_x1)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex>0)) then begin axefocal_y2:=axefocal_y1+(xxmax-axefocal_x1)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmax; end else if ( (axefocal_x1+(yymin-axefocal_y1)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_x1+(yymin-axefocal_y1)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley<0)) then begin axefocal_x2:=axefocal_x1+(yymin-axefocal_y1)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymin; end else if ( (axefocal_x1+(yymax-axefocal_y1)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_x1+(yymax-axefocal_y1)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley>0)) then begin axefocal_x2:=axefocal_x1+(yymax-axefocal_y1)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymax; end; BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,1, clblack,psdashdot,pmcopy,true); //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); exit; end; {clic point 2 du miroir spherique paraxial} if ((ajoutmscopa or ajoutmscepa) and not( point2fait)) then begin point2x:=x1; point2y:=y1; if sqrt((point2x-point1x)*(point2x-point1x)+(point2y-point1y)*(point2y-point1y))point1y) then axefocal_anglepolaire:=Pi/2 else axefocal_anglepolaire:=-Pi/2 else begin axefocal_anglepolaire:=arctan((point2y-point1y)/(point2x-point1x)); if (point2xPi then axefocal_anglepolaire:=axefocal_anglepolaire-Pi*2; axefocal_normalex:=cos(axefocal_anglepolaire+Pi/2); axefocal_normaley:=sin(axefocal_anglepolaire+Pi/2); if axefocal_normalex=0 then if axefocal_normaley>0 then begin axefocal_x2:=axefocal_x1; axefocal_y2:=yymax; end else begin axefocal_x2:=axefocal_x1; axefocal_y2:=yymin; end; if ((axefocal_normaley=0) and (axefocal_normalex<>0)) then if axefocal_normalex>0 then begin axefocal_x2:=xxmax; axefocal_y2:=axefocal_y1; end else begin axefocal_x2:=xxmin; axefocal_y2:=axefocal_y1; end; if ((axefocal_normaley<>0) and (axefocal_normalex<>0)) then if ( (axefocal_y1+(xxmin-axefocal_x1)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_y1+(xxmin-axefocal_x1)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex<0)) then begin axefocal_y2:=axefocal_y1+(xxmin-axefocal_x1)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmin; end else if ( (axefocal_y1+(xxmax-axefocal_x1)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_y1+(xxmax-axefocal_x1)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex>0)) then begin axefocal_y2:=axefocal_y1+(xxmax-axefocal_x1)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmax; end else if ( (axefocal_x1+(yymin-axefocal_y1)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_x1+(yymin-axefocal_y1)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley<0)) then begin axefocal_x2:=axefocal_x1+(yymin-axefocal_y1)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymin; end else if ( (axefocal_x1+(yymax-axefocal_y1)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_x1+(yymax-axefocal_y1)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley>0)) then begin axefocal_x2:=axefocal_x1+(yymax-axefocal_y1)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymax; end; BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurmscopa, couleuraxemscopa,psdashdot,pmcopy,true); //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); exit; end; {clic point 2 du miroir spherique reel} if ((ajoutmscore or ajoutmscere) and not( point2fait)) then begin point2x:=x1; point2y:=y1; if sqrt((point2x-point1x)*(point2x-point1x)+(point2y-point1y)*(point2y-point1y))point1y) then axefocal_anglepolaire:=Pi/2 else axefocal_anglepolaire:=-Pi/2 else begin axefocal_anglepolaire:=arctan((point2y-point1y)/(point2x-point1x)); if (point2xPi then axefocal_anglepolaire:=axefocal_anglepolaire-Pi*2; axefocal_normalex:=cos(axefocal_anglepolaire+Pi/2); axefocal_normaley:=sin(axefocal_anglepolaire+Pi/2); if axefocal_normalex=0 then if axefocal_normaley>0 then begin axefocal_x1:=axefocal_ox; axefocal_y1:=yymax; end else begin axefocal_x1:=axefocal_ox; axefocal_y1:=yymin; end; if ((axefocal_normaley=0) and (axefocal_normalex<>0)) then if axefocal_normalex>0 then begin axefocal_x1:=xxmax; axefocal_y1:=axefocal_oy; end else begin axefocal_x1:=xxmin; axefocal_y1:=axefocal_oy; end; if ((axefocal_normaley<>0) and (axefocal_normalex<>0)) then if ( (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex<0)) then begin axefocal_y1:=axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x1:=xxmin; end else if ( (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex>0)) then begin axefocal_y1:=axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x1:=xxmax; end else if ( (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley<0)) then begin axefocal_x1:=axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y1:=yymin; end else if ( (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley>0)) then begin axefocal_x1:=axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y1:=yymax; end; axefocal_anglepolaire:=axefocal_anglepolaire+Pi; if axefocal_anglepolaire>Pi then axefocal_anglepolaire:=axefocal_anglepolaire-Pi*2; axefocal_normalex:=cos(axefocal_anglepolaire+Pi/2); axefocal_normaley:=sin(axefocal_anglepolaire+Pi/2); if axefocal_normalex=0 then if axefocal_normaley>0 then begin axefocal_x2:=axefocal_ox; axefocal_y2:=yymax; end else begin axefocal_x2:=axefocal_ox; axefocal_y2:=yymin; end; if ((axefocal_normaley=0) and (axefocal_normalex<>0)) then if axefocal_normalex>0 then begin axefocal_x2:=xxmax; axefocal_y2:=axefocal_oy; end else begin axefocal_x2:=xxmin; axefocal_y2:=axefocal_oy; end; if ((axefocal_normaley<>0) and (axefocal_normalex<>0)) then if ( (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex<0)) then begin axefocal_y2:=axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmin; end else if ( (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex>0)) then begin axefocal_y2:=axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmax; end else if ( (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley<0)) then begin axefocal_x2:=axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymin; end else if ( (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley>0)) then begin axefocal_x2:=axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymax; end; BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurmscore, couleuraxemscore,psdashdot,pmcopy,true); //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); exit; end; {clic foyer du miroir conique} if ((ajoutconiqueconcave or ajoutconiqueconvexe) and point1fait and not( foyerfait)) then begin foyerx:=x1; foyery:=y1; if sqrt(sqr(foyerx-point1x)+sqr(foyery-point1y))point1y) then axefocal_anglepolaire:=Pi/2 else axefocal_anglepolaire:=-Pi/2 else begin axefocal_anglepolaire:=arctan((point2y-point1y)/(point2x-point1x)); if (point2xPi then axefocal_anglepolaire:=axefocal_anglepolaire-Pi*2; axefocal_normalex:=cos(axefocal_anglepolaire+Pi/2); axefocal_normaley:=sin(axefocal_anglepolaire+Pi/2); if axefocal_normalex=0 then if axefocal_normaley>0 then begin axefocal_x1:=axefocal_ox; axefocal_y1:=yymax; end else begin axefocal_x1:=axefocal_ox; axefocal_y1:=yymin; end; if ((axefocal_normaley=0) and (axefocal_normalex<>0)) then if axefocal_normalex>0 then begin axefocal_x1:=xxmax; axefocal_y1:=axefocal_oy; end else begin axefocal_x1:=xxmin; axefocal_y1:=axefocal_oy; end; if ((axefocal_normaley<>0) and (axefocal_normalex<>0)) then if ( (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex<0)) then begin axefocal_y1:=axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x1:=xxmin; end else if ( (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex>0)) then begin axefocal_y1:=axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x1:=xxmax; end else if ( (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley<0)) then begin axefocal_x1:=axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y1:=yymin; end else if ( (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley>0)) then begin axefocal_x1:=axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y1:=yymax; end; axefocal_anglepolaire:=axefocal_anglepolaire+Pi; if axefocal_anglepolaire>Pi then axefocal_anglepolaire:=axefocal_anglepolaire-Pi*2; axefocal_normalex:=cos(axefocal_anglepolaire+Pi/2); axefocal_normaley:=sin(axefocal_anglepolaire+Pi/2); if axefocal_normalex=0 then if axefocal_normaley>0 then begin axefocal_x2:=axefocal_ox; axefocal_y2:=yymax; end else begin axefocal_x2:=axefocal_ox; axefocal_y2:=yymin; end; if ((axefocal_normaley=0) and (axefocal_normalex<>0)) then if axefocal_normalex>0 then begin axefocal_x2:=xxmax; axefocal_y2:=axefocal_oy; end else begin axefocal_x2:=xxmin; axefocal_y2:=axefocal_oy; end; if ((axefocal_normaley<>0) and (axefocal_normalex<>0)) then if ( (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex<0)) then begin axefocal_y2:=axefocal_oy+(xxmin-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmin; end else if ( (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex<=yymax) and (axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex>=yymin) and (axefocal_normalex>0)) then begin axefocal_y2:=axefocal_oy+(xxmax-axefocal_ox)*axefocal_normaley/axefocal_normalex; axefocal_x2:=xxmax; end else if ( (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley<0)) then begin axefocal_x2:=axefocal_ox+(yymin-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymin; end else if ( (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley<=xxmax) and (axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley>=xxmin) and (axefocal_normaley>0)) then begin axefocal_x2:=axefocal_ox+(yymax-axefocal_oy)*axefocal_normalex/axefocal_normaley; axefocal_y2:=yymax; end; if ajoutlmc then BIBI.trait(axefocal_x2,axefocal_y2,axefocal_x1,axefocal_y1,epaisseurlmc, couleuraxelmc,psdashdot,pmcopy,true); if ajoutlmd then BIBI.trait(axefocal_x2,axefocal_y2,axefocal_x1,axefocal_y1,epaisseurlmd, couleuraxelmd,psdashdot,pmcopy,true); //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); exit; end; if (ajoutdiaphragme and point2fait) then begin lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); if lambda<0 then lambda:=0; pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); foyerfait:=true; retaillepdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+1); inc(nombrediaphragme); if not(listediaphragme[-1+nombrediaphragme].create(point1x,point1y,point2x,point2y, pointrx,pointry,couleurdiaphragme,epaisseurdiaphragme)) then begin retaillepdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme-1); dec(nombrediaphragme); application.messagebox(pchar(rsEpaisseurDuD), pchar(rsAttention), mb_ok); end else begin listediaphragme[-1+nombrediaphragme].dessine(BIBI); sauvevirtuel; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; if ((ajoutmscopa or ajoutmscepa) and point2fait) then begin {clic foyer miroir spherique} lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); if lambda<0 then lambda:=0; pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); foyerfait:=true; if ajoutmscopa then begin ReTaillePMscopa(listemscopa,nombremscopa,nombremscopa+1); inc(nombremscopa); end; if ajoutmscepa then begin ReTaillePMscepa(listemscepa,nombremscepa,nombremscepa+1); inc(nombremscepa); end; if ajoutmscopa then if not(listemscopa[-1+nombremscopa].create(point1x,point1y,point2x,point2y,pointrx,pointry, epaisseurmscopa,couleurmscopa,couleuraxemscopa,true,true,false,0))then begin ReTaillePMscopa(listemscopa,nombremscopa,nombremscopa-1); dec(nombremscopa); application.messagebox(pchar(rsTailleDuMiro3), pchar(rsAttention), mb_ok); end else begin listemscopa[-1+nombremscopa].dessine(BIBI); sauvevirtuel; end; if ajoutmscepa then if not(listemscepa[-1+nombremscepa].create(point1x,point1y,point2x,point2y,pointrx,pointry, epaisseurmscepa,couleurmscepa,couleuraxemscepa,true,true,false,0))then begin ReTaillePMscepa(listemscepa,nombremscepa,nombremscepa-1); dec(nombremscepa); application.messagebox(pchar(rsTailleDuMiro4), pchar(rsAttention), mb_ok); end else begin listemscepa[-1+nombremscepa].dessine(BIBI); sauvevirtuel; end; //form1.monimage1.free; rafraichit; affichecoordonnees(x1,y1); form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; if ((ajoutmscore or ajoutmscere) and point2fait) then begin {clic centre miroir spheriquereel} lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); { if ((pointrx+sqrt((pointrx-point1x)*(pointrx-point1x)+(pointry-point1y)* (pointry-point1y))>xxmax) or (pointrx-sqrt((pointrx-point1x)*(pointrx-point1x)+(pointry-point1y)* (pointry-point1y))yymax) or (pointry-sqrt((pointrx-point1x)*(pointrx-point1x)+(pointry-point1y)* (pointry-point1y))0) and (modeinfo)) then begin pointrx:=x1; pointry:=y1; BIBI.convert(3,form1.image1.height-3,tx,ty,true); tx:=tx-xxmin; ty:=ty-yymin; //form1.monimage1.free; affichecoordonnees(pointrx,pointry); if not(modeduplication) then begin if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].cx-x1)<=tx*1.1) and (abs(listemetre[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1)) then goto 667; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx+listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy+listesphere[-1+i].rayon-y1)<=ty*1.1)) then goto 667; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-listesphere[-1+i].rayon-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-listesphere[-1+i].rayon-y1)<=ty*1.1)) then goto 667; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1)) then goto 667; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].fx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].fy-y1)<=ty*1.1)) then goto 667; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a1x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].a2x-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a1x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].a2x-x1)<=tx*1.1) and (abs(listeReseau[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs(listepolyhedre[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolyhedre[-1+i].messommets[j].ay-y1)<=ty*1.1)) then goto 667; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs(listeprisme[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listeprisme[-1+i].messommets[j].ay-y1)<=ty*1.1)) then goto 667; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs(listepolycercle[-1+i].messommets[j].ax-x1)<=tx*1.1) and (abs(listepolycercle[-1+i].messommets[j].ay-y1)<=ty*1.1)) then goto 667; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].ax-x1)<=tx*1.1) and (abs(listeoeil[-1+i].ay-y1)<=ty*1.1)) then goto 667; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a1x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].a2x-x1)<=tx*1.1) and (abs(listeecran[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].a2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap1x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap1y-y1)<=ty*1.1)) then goto 667; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].ap2x-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].ap2y-y1)<=ty*1.1)) then goto 667; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a1x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].a2x-x1)<=tx*1.1) and (abs(listelsr[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then goto 667; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].fy-y1)<=ty*1.1)) then goto 667; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscopa[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then goto 667; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].fx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].fy-y1)<=ty*1.1)) then goto 667; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscepa[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then goto 667; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].cx-x1)<=tx*1.1) and (abs(listemscore[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscore[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then goto 667; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].cx-x1)<=tx*1.1) and (abs(listemscere[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a1x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].a2x-x1)<=tx*1.1) and (abs(listemscere[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then goto 667; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f1y-y1)<=ty*1.1)) then goto 667; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].f2y-y1)<=ty*1.1)) then goto 667; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmc[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then goto 667; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s1x-x1)<=tx*1.1) and (abs(listelec[-1+i].s1y-y1)<=ty*1.1)) then goto 667; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].s2x-x1)<=tx*1.1) and (abs(listelec[-1+i].s2y-y1)<=ty*1.1)) then goto 667; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then goto 667; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f1y-y1)<=ty*1.1)) then goto 667; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].f2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].f2y-y1)<=ty*1.1)) then goto 667; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a1x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].a2x-x1)<=tx*1.1) and (abs(listelmd[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then goto 667; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].ax-x1)<=tx*1.1) and (abs(listerayon[-1+i].ay-y1)<=ty*1.1)) then goto 667; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].bx-x1)<=tx*1.1) and (abs(listerayon[-1+i].by-y1)<=ty*1.1)) then goto 667; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].sx-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].sy-y1)<=ty*1.1)) then goto 667; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a1x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs(listesourceponctuelle[-1+i].a2x-x1)<=tx*1.1) and (abs(listesourceponctuelle[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1)) then goto 667; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].sx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].sy-y1)<=ty*1.1)) then goto 667; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a2x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a2y-y1)<=ty*1.1)) then goto 667; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].ray[listeondeplane[-1+i].nombrederayon].bx-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].ray[listeondeplane[-1+i].nombrederayon].by-y1)<=ty*1.1)) then goto 667; form1.image1.Cursor:=crprop; form1.StatusBar1.Panels[2].text:=''; exit; 667: form1.image1.Cursor:=crInfo; form1.StatusBar1.Panels[2].text:=rsCliquezPourA; exit; end; if modeduplication then begin if nombremetre>0 then for i:=1 to nombremetre do if ((abs(listemetre[-1+i].cx-x1)<=tx*1.1) and (abs(listemetre[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombreangle>0 then for i:=1 to nombreangle do if ((abs(listeangle[-1+i].cx-x1)<=tx*1.1) and (abs(listeangle[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombretexte>0 then for i:=1 to nombretexte do if ((abs(listetexteaffiche[-1+i].x-x1)<=tx*1.1) and (abs(listetexteaffiche[-1+i].y-y1)<=ty*1.1)) then goto 668; if nombrefleche>0 then for i:=1 to nombrefleche do if ((abs(listefleche[-1+i].cx-x1)<=tx*1.1) and (abs(listefleche[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do if ((abs(listemiroirconique[-1+i].sx-x1)<=tx*1.1) and (abs(listemiroirconique[-1+i].sy-y1)<=ty*1.1)) then goto 668; if nombresphere>0 then for i:=1 to nombresphere do if ((abs(listesphere[-1+i].cx-x1)<=tx*1.1) and (abs(listesphere[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do if ((abs(listemiroirplan[-1+i].cx-x1)<=tx*1.1) and (abs(listemiroirplan[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombreReseau>0 then for i:=1 to nombreReseau do if ((abs(listeReseau[-1+i].cx-x1)<=tx*1.1) and (abs(listeReseau[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do for j:=1 to listepolyhedre[-1+i].nombresommet do if ((abs((listepolyhedre[-1+i].messommets[j].ax+listepolyhedre[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolyhedre[-1+i].messommets[j].ay+listepolyhedre[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then goto 668; if nombreprisme>0 then for i:=1 to nombreprisme do for j:=1 to listeprisme[-1+i].nombresommet do if ((abs((listeprisme[-1+i].messommets[j].ax+listeprisme[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listeprisme[-1+i].messommets[j].ay+listeprisme[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) ) then goto 668; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do for j:=1 to listepolycercle[-1+i].nombresommet do if ((abs((listepolycercle[-1+i].messommets[j].ax+listepolycercle[-1+i].messommets[j+1].ax)/2-x1)<=tx*1.1) and (abs((listepolycercle[-1+i].messommets[j].ay+listepolycercle[-1+i].messommets[j+1].ay)/2-y1)<=ty*1.1) and not((listepolycercle[-1+i].nombresommet=2) and (j=2))) then goto 668; if nombreecran>0 then for i:=1 to nombreecran do if ((abs(listeecran[-1+i].cx-x1)<=tx*1.1) and (abs(listeecran[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombreoeil>0 then for i:=1 to nombreoeil do if ((abs(listeoeil[-1+i].cx-x1)<=tx*1.1) and (abs(listeoeil[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do if ((abs(listediaphragme[-1+i].cx-x1)<=tx*1.1) and (abs(listediaphragme[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombrelsr>0 then for i:=1 to nombrelsr do if ((abs(listelsr[-1+i].cx-x1)<=tx*1.1) and (abs(listelsr[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombremscopa>0 then for i:=1 to nombremscopa do if ((abs(listemscopa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscopa[-1+i].sy-y1)<=ty*1.1)) then goto 668; if nombremscepa>0 then for i:=1 to nombremscepa do if ((abs(listemscepa[-1+i].sx-x1)<=tx*1.1) and (abs(listemscepa[-1+i].sy-y1)<=ty*1.1)) then goto 668; if nombremscore>0 then for i:=1 to nombremscore do if ((abs(listemscore[-1+i].sx-x1)<=tx*1.1) and (abs(listemscore[-1+i].sy-y1)<=ty*1.1)) then goto 668; if nombremscere>0 then for i:=1 to nombremscere do if ((abs(listemscere[-1+i].sx-x1)<=tx*1.1) and (abs(listemscere[-1+i].sy-y1)<=ty*1.1)) then goto 668; if nombrelmc>0 then for i:=1 to nombrelmc do if ((abs(listelmc[-1+i].ox-x1)<=tx*1.1) and (abs(listelmc[-1+i].oy-y1)<=ty*1.1)) then goto 668; if nombrelec>0 then for i:=1 to nombrelec do if ((abs(listelec[-1+i].ox-x1)<=tx*1.1) and (abs(listelec[-1+i].oy-y1)<=ty*1.1)) then goto 668; if nombrelmd>0 then for i:=1 to nombrelmd do if ((abs(listelmd[-1+i].ox-x1)<=tx*1.1) and (abs(listelmd[-1+i].oy-y1)<=ty*1.1)) then goto 668; if nombrerayon>0 then for i:=1 to nombrerayon do if ((abs(listerayon[-1+i].cx-x1)<=tx*1.1) and (abs(listerayon[-1+i].cy-y1)<=ty*1.1)) then goto 668; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do if ((abs((listesourceponctuelle[-1+i].a1x+listesourceponctuelle[-1+i].a2x)/2-x1)<=tx*1.1) and (abs((listesourceponctuelle[-1+i].a1y+listesourceponctuelle[-1+i].a2y)/2-y1)<=ty*1.1)) then goto 668; if nombreondeplane>0 then for i:=1 to nombreondeplane do if ((abs(listeondeplane[-1+i].a1x-x1)<=tx*1.1) and (abs(listeondeplane[-1+i].a1y-y1)<=ty*1.1)) then goto 668; if not(modeduplication) then form1.image1.Cursor:=crprop else form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; 668: form1.image1.Cursor:=crdupliquer; form1.StatusBar1.Panels[2].text:=rsCliquezPourD; exit; end; end; if (not(form1.ajoutencours) or (form1.ajoutencours and not(point1fait or ((ajoutpoly or ajoutpolycercle) and (nbactsommet>0))))) then begin pointrx:=x1; pointry:=y1; end; if ((ajoutpoly) and (nbactsommet>=1)) then begin if nbactsommet>1 then for i:=1 to nbactsommet-1 do BIBI.trait(ttpoly[i].ax,ttpoly[i].ay,ttpoly[i+1].ax,ttpoly[i+1].ay,1, clblack,pssolid,pmcopy,true); BIBI.trait(ttpoly[nbactsommet].ax,ttpoly[nbactsommet].ay,pointrx,pointry,1, clblack,psdot,pmxor,true); BIBI.trait(ttpoly[nbactsommet].ax,ttpoly[nbactsommet].ay,x1,y1,1, clblack,psdot,pmxor,true); if nbactsommet=nbpoly-1 then begin if not(toutjustefait) then BIBI.trait(ttpoly[1].ax,ttpoly[1].ay,pointrx,pointry,1, clblack,psdot,pmxor,true) else toutjustefait:=false; BIBI.trait(ttpoly[1].ax,ttpoly[1].ay,x1,y1,1, clblack,psdot,pmxor,true); end; pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (((ajoutpolycercle and not(rectifait))) and (nbactsommet>=1)) then begin if nbactsommet>1 then for i:=1 to nbactsommet-1 do BIBI.trait(ttpoly[i].ax,ttpoly[i].ay,ttpoly[i+1].ax,ttpoly[i+1].ay,1, clblack,pssolid,pmcopy,true); BIBI.trait(ttpoly[nbactsommet].ax,ttpoly[nbactsommet].ay,pointrx,pointry,1, clblack,psdot,pmxor,true); BIBI.trait(ttpoly[nbactsommet].ax,ttpoly[nbactsommet].ay,x1,y1,1, clblack,psdot,pmxor,true); if nbactsommet=nbpoly-1 then begin if not(toutjustefait) then BIBI.trait(ttpoly[1].ax,ttpoly[1].ay,pointrx,pointry,1, clblack,psdot,pmxor,true) else toutjustefait:=false; BIBI.trait(ttpoly[1].ax,ttpoly[1].ay,x1,y1,1, clblack,psdot,pmxor,true); end; pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (((ajoutpolycercle and (rectifait))) ) then begin for i:=1 to nbpoly do begin BIBI.trait(ttpoly[i].ax,ttpoly[i].ay,ttpoly[i+1].ax,ttpoly[i+1].ay,1, couleurmiroirplan,psdot,pmcopy,true); BIBI.invconvert(xec,yec,ttpoly[i].ax,ttpoly[i].ay,true); form1.image1.Picture.Bitmap.Canvas.font.Color:=clblack; form1.image1.Picture.Bitmap.Canvas.font.Name:='Arial Narrow'; form1.image1.Picture.Bitmap.Canvas.font.Charset:=DEFAULT_CHARSET; form1.image1.Picture.Bitmap.Canvas.font.size:=10; form1.image1.Picture.Bitmap.Canvas.font.Style:=[]; form1.image1.Picture.Bitmap.Canvas.textout(xec+5,yec,inttostr(i)); end; for i:=1 to nbrectiact do begin BIBI.cercle(tts[listerecti[i]].ax, tts[listerecti[i]].ay,3,1,clblack,pmcopy,true); BIBI.arcdecercle(ttc[listerecti[i]].ax,ttc[listerecti[i]].ay, tt_rayon[listerecti[i]],1,cctheta1[listerecti[i]],cctheta2[listerecti[i]], clblack,pmcopy,psdot,true); end; BIBI.cercle(ttpoly[listerecti[nbrectiact+1]].ax, ttpoly[listerecti[nbrectiact+1]].ay, 3,1,clblue,pmcopy,true); BIBI.cercle(ttpoly[listerecti[nbrectiact+1]+1].ax, ttpoly[listerecti[nbrectiact+1]+1].ay, 3,1,clblue,pmcopy,true); if listerecti[nbrectiact+1]+1<=nbpoly then form1.StatusBar1.Panels[2].text:=Format(rsPositionnezL27, [inttostr( listerecti[nbrectiact+1]), inttostr(listerecti[nbrectiact+1]+1)]) else form1.StatusBar1.Panels[2].text:=Format(rsPositionnezL28, [inttostr( listerecti[nbrectiact+1])]); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutlec and point1fait and not(point2fait)) then begin BIBI.cercle(point1x,point1y,2,1,clblack,pmcopy,true); bibi.trait(point1x,point1y,pointrx,pointry,1,clblack,psdot,pmxor,true); bibi.trait(point1x,point1y,x1,y1,1,clblack,psdot,pmxor,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutlec and point2fait and not(point3fait)) then begin BIBI.cercle(point1x,point1y,2,1,clblack,pmcopy,true); BIBI.cercle(point2x,point2y,2,1,clblack,pmcopy,true); bibi.trait(point1x,point1y,point2x,point2y,1,clblack,psdot,pmcopy,true); if not(toutjustefait) then BIBI.arcdecercle(point3x,point3y,sqrt(sqr(point3x-point1x)+sqr(point3y-point1y)), epaisseurmiroirplan,0,2*pi-0.01,couleurmiroirplan,pmnotxor,psdot,true) else toutjustefait:=false; point3x:=point1x+((x1-point1x)*(point2x-point1x)+(y1-point1y)*(point2y-point1y))* (point2x-point1x)/(sqr(point2x-point1x)+sqr(point2y-point1y)); point3y:=point1y+((x1-point1x)*(point2x-point1x)+(y1-point1y)*(point2y-point1y))* (point2y-point1y)/(sqr(point2x-point1x)+sqr(point2y-point1y)); BIBI.arcdecercle(point3x,point3y,sqrt(sqr(point3x-point1x)+sqr(point3y-point1y)), epaisseurmiroirplan,0,2*pi-0.01,couleurmiroirplan,pmnotxor,psdot,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutlec and point3fait) then begin BIBI.cercle(point1x,point1y,2,1,clblack,pmcopy,true); BIBI.cercle(point2x,point2y,2,1,clblack,pmcopy,true); bibi.trait(point1x,point1y,point2x,point2y,1,clblack,psdot,pmcopy,true); BIBI.arcdecercle(point3x,point3y,sqrt(sqr(point3x-point1x)+sqr(point3y-point1y)),1,0, 2*pi-0.001,clblack,pmcopy,psdot,true); if not(toutjustefait) then BIBI.arcdecercle(point4x,point4y,sqrt(sqr(point4x-point2x)+sqr(point4y-point2y)), epaisseurmiroirplan,0,2*pi-0.001,couleurmiroirplan,pmnotxor,psdot,true) else toutjustefait:=false; point4x:=point1x+((x1-point1x)*(point2x-point1x)+(y1-point1y)*(point2y-point1y))* (point2x-point1x)/(sqr(point2x-point1x)+sqr(point2y-point1y)); point4y:=point1y+((x1-point1x)*(point2x-point1x)+(y1-point1y)*(point2y-point1y))* (point2y-point1y)/(sqr(point2x-point1x)+sqr(point2y-point1y)); BIBI.arcdecercle(point4x,point4y,sqrt(sqr(point4x-point2x)+sqr(point4y-point2y)), epaisseurmiroirplan,0,2*pi-0.001,couleurmiroirplan,pmnotxor,psdot,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutlec and point4fait) then begin BIBI.cercle(point1x,point1y,2,1,clblack,pmcopy,true); BIBI.cercle(point2x,point2y,2,1,clblack,pmcopy,true); BIBI.arcdecercle(point3x,point3y,sqrt(sqr(point3x-point1x)+sqr(point3y-point1y)),1,0, 2*pi-0.001,clblack,pmxor,psdot,true); BIBI.arcdecercle(point4x,point4y,sqrt(sqr(point4x-point2x)+sqr(point4y-point2y)),1,0, 2*pi-0.001,clblack,pmxor,psdot,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutmiroirplan or ajoutreseau or ajoutecran or ajoutlsr or ajoutfleche or ajoutoeil) and point1fait) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurmiroirplan,psdot,pmxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurmiroirplan,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2*epaisseurmiroirplan,epaisseurmiroirplan, couleurmiroirplan,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutconiqueconcave or ajoutconiqueconvexe) and (point1fait)) then begin BIBI.cercle(point1x,point1y,2,1, clblue,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutconiqueconcave or ajoutconiqueconvexe) and (foyerfait)) then begin BIBI.cercle(foyerx,foyery,2,1, clblue,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutconiqueconcave or ajoutconiqueconvexe) and (sommetfait)) then begin BIBI.cercle(sommetx,sommety,2,1, clblue,pmcopy,true); bibi.traceconique(co_theta0,-pi,pi,foyerx,foyery,co_e,co_p,clblack,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutsphere) and point1fait) then begin BIBI.arcdecercle(point1x,point1y,sqrt(sqr(pointrx-point1x)+sqr(pointry-point1y)),1,0,2*Pi-0.001, clblack,pmnotxor,psdot,true); BIBI.arcdecercle(point1x,point1y,sqrt(sqr(x1-point1x)+sqr(y1-point1y)),1,0,2*Pi-0.001, clblack,pmnotxor,psdot,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutsourceponctuelle and point1fait and not(point2fait)) then begin BIBI.trait(sourcex,sourcey,pointrx,pointry,1,couleursourceponctuelle,psdot,pmnotxor,true); BIBI.trait(sourcex,sourcey,x1,y1,1,couleursourceponctuelle,psdot,pmnotxor,true); BIBI.cercle(sourcex,sourcey,2*epaisseursourceponctuelle,epaisseursourceponctuelle, couleursourceponctuelle,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutondeplane and point1fait and not(point2fait)) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurondeplane,psdot,pmnotxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurondeplane,psdot,pmnotxor,true); BIBI.cercle(point1x,point1y,2*epaisseurondeplane,epaisseurondeplane, couleurondeplane,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutondeplane and point1fait and point2fait) then begin BIBI.trait(point1x,point1y,directionx,directiony,1,couleurondeplane,pssolid,pmcopy,true); BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurondeplane,psdot,pmnotxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurondeplane,psdot,pmnotxor,true); BIBI.cercle(point1x,point1y,2*epaisseurondeplane,epaisseurondeplane, couleurondeplane,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutsourceponctuelle and point1fait and point2fait) then begin BIBI.trait(sourcex,sourcey,point1x,point1y,1,couleursourceponctuelle,pssolid,pmcopy,true); BIBI.trait(sourcex,sourcey,pointrx,pointry,1,couleursourceponctuelle,psdot,pmnotxor,true); BIBI.trait(sourcex,sourcey,x1,y1,1,couleursourceponctuelle,psdot,pmnotxor,true); BIBI.cercle(sourcex,sourcey,2*epaisseursourceponctuelle,epaisseursourceponctuelle, couleursourceponctuelle,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutmscopa or ajoutmscepa) and point1fait and not(point2fait)) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurmscopa,psdot,pmxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurmscopa,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2*epaisseurmscopa,epaisseurmscopa, couleurmscopa,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutdiaphragme and point1fait and not(point2fait)) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,clblack,psdot,pmxor,true); BIBI.trait(point1x,point1y,x1,y1,1,clblack,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2,1, clblack,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutmscore or ajoutmscere) and point1fait and not(point2fait)) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurmscore,psdot,pmxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurmscore,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2*epaisseurmscore,epaisseurmscore, couleurmscore,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutlmc) and point1fait and not(point2fait)) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurlmc,psdot,pmxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurlmc,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2*epaisseurlmc,epaisseurlmc, couleurlmc,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutprisme) and point1fait and not(point2fait)) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,clblack,psdot,pmxor,true); BIBI.trait(point1x,point1y,x1,y1,1,clblack,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2*epaisseurprisme,epaisseurprisme, clred,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if ((ajoutlmd) and point1fait and not(point2fait)) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurlmd,psdot,pmxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurlmd,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2*epaisseurlmd,epaisseurlmd,couleurlmd,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutrayon and point1fait) then begin BIBI.trait(point1x,point1y,pointrx,pointry,1,couleurrayon,psdot,pmnotxor,true); BIBI.trait(point1x,point1y,x1,y1,1,couleurrayon,psdot,pmnotxor,true); BIBI.cercle(point1x,point1y,2*epaisseurrayon,epaisseurrayon, couleurrayon,pmcopy,true); pointrxi:=x; pointryi:=y; pointrx:=x1; pointry:=y1; end; if (ajoutmscopa and point1fait and point2fait) then begin BIBI.trait(point1x,point1y,point2x,point2y,epaisseurmscopa,couleurmscopa,pssolid,pmcopy,true); BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurmscopa, couleuraxemscopa,psdashdot,pmcopy,true); BIBI.cercle(pointrx,pointry,2*epaisseurmscopa, epaisseurmscopa,couleurmscopa,pmnotxor,true); lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); if lambda<0 then lambda:=0; pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); BIBI.cercle(pointrx,pointry,2*epaisseurmscopa, epaisseurmscopa,couleurmscopa,pmnotxor,true); end; if (ajoutdiaphragme and point1fait and point2fait) then begin BIBI.trait(point1x,point1y,point2x,point2y,1,clblack,psdot,pmcopy,true); BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,1, clblack,psdashdot,pmcopy,true); BIBI.cercle(pointrx,pointry,2, 1,clblack,pmnotxor,true); BIBI.cercle(2*point1x-pointrx,2*point1y-pointry,2, 1,clblack,pmnotxor,true); lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); if lambda<0 then lambda:=0; pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); BIBI.cercle(pointrx,pointry,2, 1,clblack,pmnotxor,true); BIBI.cercle(2*point1x-pointrx,2*point1y-pointry,2, 1,clblack,pmnotxor,true); end; if (ajoutmscore and point1fait and point2fait) then begin BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurmscore, couleuraxemscore,psdashdot,pmcopy,true); BIBI.cercle(pointrx,pointry,2*epaisseurmscore, epaisseurmscore,couleurmscore,pmnotxor,true); if (point2x=pointrx) then if (point2y>pointry) then tata2:=Pi/2 else tata2:=-Pi/2 else begin tata2:=arctan((point2y-pointry)/(point2x-pointrx)); if (point2xpointry) then tata1:=Pi/2 else tata1:=-Pi/2 else begin tata1:=arctan((point1y-pointry)/(point1x-pointrx)); if (point1x2*Pi then tata1:=tata1-Pi*2; if tata1>tata2 then tata2:=tata2+2*Pi; if tata1>tata2 then tata2:=tata2+2*Pi; if not(toutjustefait) then BIBI.arcdecercle(pointrx,pointry,sqrt(sqr(point1x-pointrx)+sqr(point1y-pointry)), epaisseurmscore,tata1,tata2,couleurmscore,pmnotxor,psdot,true) else toutjustefait:=false; lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); if (point2x=pointrx) then if (point2y>pointry) then tata2:=Pi/2 else tata2:=-Pi/2 else begin tata2:=arctan((point2y-pointry)/(point2x-pointrx)); if (point2xpointry) then tata1:=Pi/2 else tata1:=-Pi/2 else begin tata1:=arctan((point1y-pointry)/(point1x-pointrx)); if (point1x2*Pi then tata1:=tata1-Pi*2; if tata1>tata2 then tata2:=tata2+2*Pi; if tata1>tata2 then tata2:=tata2+2*Pi; BIBI.arcdecercle(pointrx,pointry,sqrt(sqr(point1x-pointrx)+sqr(point1y-pointry)), epaisseurmscore,tata1,tata2,couleurmscore,pmnotxor,psdot,true); BIBI.cercle(pointrx,pointry,2*epaisseurmscore, epaisseurmscore,couleurmscore,pmnotxor,true); end; if (ajoutmscere and point1fait and point2fait) then begin BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurmscere, couleuraxemscere,psdashdot,pmcopy,true); BIBI.cercle(pointrx,pointry,2*epaisseurmscere, epaisseurmscere,couleurmscere,pmnotxor,true); if (point2x=pointrx) then if (point2y>pointry) then tata2:=Pi/2 else tata2:=-Pi/2 else begin tata2:=arctan((point2y-pointry)/(point2x-pointrx)); if (point2xpointry) then tata1:=Pi/2 else tata1:=-Pi/2 else begin tata1:=arctan((point1y-pointry)/(point1x-pointrx)); if (point1x2*Pi then tata1:=tata1-Pi*2; if tata1>tata2 then tata2:=tata2+2*Pi; if tata1>tata2 then tata2:=tata2+2*Pi; if not(toutjustefait) then BIBI.arcdecercle(pointrx,pointry,sqrt(sqr(point1x-pointrx)+sqr(point1y-pointry)), epaisseurmscere,tata1,tata2,couleurmscere,pmnotxor,psdot,true) else toutjustefait:=false; lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); if (point2x=pointrx) then if (point2y>pointry) then tata2:=Pi/2 else tata2:=-Pi/2 else begin tata2:=arctan((point2y-pointry)/(point2x-pointrx)); if (point2xpointry) then tata1:=Pi/2 else tata1:=-Pi/2 else begin tata1:=arctan((point1y-pointry)/(point1x-pointrx)); if (point1x2*Pi then tata1:=tata1-Pi*2; if tata1>tata2 then tata2:=tata2+2*Pi; if tata1>tata2 then tata2:=tata2+2*Pi; BIBI.arcdecercle(pointrx,pointry,sqrt(sqr(point1x-pointrx)+sqr(point1y-pointry)), epaisseurmscere,tata1,tata2,couleurmscere,pmnotxor,psdot,true); BIBI.cercle(pointrx,pointry,2*epaisseurmscere, epaisseurmscere,couleurmscere,pmnotxor,true); end; if (ajoutlmc and point1fait and point2fait) then begin BIBI.trait(point1x,point1y,point2x,point2y,epaisseurlmc,couleurlmc,pssolid,pmcopy,true); BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurlmc, couleuraxelmc,psdashdot,pmcopy,true); BIBI.cercle(pointrx,pointry,2*epaisseurlmc, epaisseurlmc,couleurlmc,pmnotxor,true); lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); BIBI.cercle(pointrx,pointry,2*epaisseurlmc, epaisseurlmc,couleurlmc,pmnotxor,true); end; if (ajoutprisme and point1fait and point2fait) then begin BIBI.trait(point2x,point2y,point3x,point3y,epaisseurprisme, clblack,psdot,pmxor,true); BIBI.trait(point2x,point2y,point4x,point4y,epaisseurprisme, clblack,psdot,pmxor,true); BIBI.trait(point4x,point4y,point3x,point3y,epaisseurprisme, clblack,psdot,pmxor,true); ux:=(point2x-point1x)/sqrt(sqr(point2x-point1x)+sqr(point2y-point1y)); uy:=(point2y-point1y)/sqrt(sqr(point2x-point1x)+sqr(point2y-point1y)); hx:=point1x-(point2x-point1x)/2; hy:=point1y-(point2y-point1y)/2; lambda:=(x1-hx)*ux+(y1-hy)*uy; point3x:=x1-lambda*ux; point3y:=y1-lambda*uy; point4x:=-point3x+2*hx; point4y:=-point3y+2*hy; BIBI.trait(point2x,point2y,point3x,point3y,epaisseurprisme, clblack,psdot,pmxor,true); BIBI.trait(point2x,point2y,point4x,point4y,epaisseurprisme, clblack,psdot,pmxor,true); BIBI.trait(point4x,point4y,point3x,point3y,epaisseurprisme, clblack,psdot,pmxor,true); BIBI.cercle(point1x,point1y,2*epaisseurprisme, epaisseurlmd,clred,pmcopy,true); BIBI.cercle(point2x,point2y,2*epaisseurprisme, epaisseurlmd,clred,pmcopy,true); BIBI.cercle(hx,hy,2*epaisseurprisme, epaisseurlmd,clred,pmcopy,true); {BIBI.trait(hx,hy,point2x,point2y,epaisseurprisme, clblack,psdot,pmcopy,true);} end; if (ajoutlmd and point1fait and point2fait) then begin BIBI.trait(point1x,point1y,point2x,point2y,epaisseurlmd,couleurlmd,pssolid,pmcopy,true); BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurlmd, couleuraxelmd,psdashdot,pmcopy,true); BIBI.cercle(pointrx,pointry,2*epaisseurlmd, epaisseurlmd,couleurlmd,pmnotxor,true); lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); BIBI.cercle(pointrx,pointry,2*epaisseurlmd, epaisseurlmd,couleurlmd,pmnotxor,true); end; if (ajoutmscepa and point1fait and point2fait) then begin BIBI.trait(point1x,point1y,point2x,point2y,epaisseurmscepa,couleurmscepa,pssolid,pmcopy,true); BIBI.trait(axefocal_x1,axefocal_y1,axefocal_x2,axefocal_y2,epaisseurmscepa, couleuraxemscepa,psdashdot,pmcopy,true); BIBI.cercle(pointrx,pointry,2*epaisseurmscepa, epaisseurmscepa,couleurmscepa,pmnotxor,true); lambda:=((x1-axefocal_x1)*(axefocal_x2-axefocal_x1)+(y1-axefocal_y1)* (axefocal_y2-axefocal_y1))/((axefocal_x2-axefocal_x1)*(axefocal_x2-axefocal_x1)+ (axefocal_y2-axefocal_y1)*(axefocal_y2-axefocal_y1)); if lambda<0 then lambda:=0; pointrx:=axefocal_x1+lambda*(axefocal_x2-axefocal_x1); pointry:=axefocal_y1+lambda*(axefocal_y2-axefocal_y1); BIBI.cercle(pointrx,pointry,2*epaisseurmscepa, epaisseurmscepa,couleurmscepa,pmnotxor,true); end; 666: if (modemodif or modeduplication) then begin if nombregroupe>0 then for i:=1 to nombregroupe do listegroupe[-1+i].recalculeiso; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do listepolycercle[-1+i].dessine(bibi); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do listepolyhedre[-1+i].dessine(bibi); if nombresphere>0 then for i:=1 to nombresphere do listesphere[-1+i].dessine(bibi); if nombrelec>0 then for i:=1 to nombrelec do listelec[-1+i].dessine(bibi); if nombremiroirplan>0 then for i:=1 to nombremiroirplan do ListeMiroirPlan[-1+i].dessine(bibi); if nombreReseau>0 then for i:=1 to nombreReseau do ListeReseau[-1+i].dessine(bibi); if nombrefleche>0 then for i:=1 to nombrefleche do ListeFleche[-1+i].dessine(bibi); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do ListeMiroirconique[-1+i].dessine(bibi); if nombrerayon>0 then for i:=1 to nombrerayon do listerayon[-1+i].dessine(bibi); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listesourceponctuelle[-1+i].dessine(bibi); if nombreondeplane>0 then for i:=1 to nombreondeplane do listeondeplane[-1+i].dessine(bibi); if nombremscopa>0 then for i:=1 to nombremscopa do listemscopa[-1+i].dessine(bibi); if nombremscore>0 then for i:=1 to nombremscore do listemscore[-1+i].dessine(bibi); if nombremscere>0 then for i:=1 to nombremscere do listemscere[-1+i].dessine(bibi); if nombremscepa>0 then for i:=1 to nombremscepa do listemscepa[-1+i].dessine(bibi); if nombrelmc>0 then for i:=1 to nombrelmc do listelmc[-1+i].dessine(bibi); if nombrelmd>0 then for i:=1 to nombrelmd do listelmd[-1+i].dessine(bibi); if nombreecran>0 then for i:=1 to nombreecran do listeecran[-1+i].dessine(bibi); if nombreoeil>0 then for i:=1 to nombreoeil do listeoeil[-1+i].dessine(bibi); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do listediaphragme[-1+i].dessine(bibi); if nombrelsr>0 then for i:=1 to nombrelsr do listelsr[-1+i].dessine(bibi); if nombremetre>0 then for i:=1 to nombremetre do listemetre[-1+i].dessine(bibi); if nombreangle>0 then for i:=1 to nombreangle do listeangle[-1+i].dessine(bibi); if nombretexte>0 then for i:=1 to nombretexte do listetexteaffiche[-1+i].dessine(bibi); if nombreanglesatracer>0 then for i:=1 to nombreanglesatracer do listeanglesatracer[-1+i].dessinebis(bibi); if nombregroupe>0 then for i:=1 to nombregroupe do listegroupe[-1+i].dessine(bibi); if nombreprisme>0 then for i:=1 to nombreprisme do listeprisme[-1+i].dessine(bibi); DessineTousLesSegments(bibi); // form1.image1.Picture.Assign(bibi); end; // if Form1.ajoutencours then form1.image1.Picture.Assign(bibi); affichecoordonnees(pointrx,pointry); //form1.statusbar1.Panels[0].Text:=floattostr(pointrx); //form1.statusbar1.Panels[1].Text:=floattostr(pointry); //exit; end; function TForm1.ajoutencours:boolean; begin ajoutencours:=(ajoutrayon or ajoutmiroirplan or ajoutreseau or ajoutmscopa or ajoutmscepa or ajoutlmc or ajoutlmd or ajoutmscore or ajoutmscere or ajoutsourceponctuelle or ajoutondeplane or ajoutecran or ajoutlsr or ajoutpoly or ajoutsphere or ajoutconiqueconcave or ajoutconiqueconvexe or ajouttexte or ajoutprisme or ajoutdiaphragme or ajoutlec or ajoutpolycercle or ajoutfleche or ajoutoeil); end; procedure TForm1.FormActivate(Sender: TObject); begin end; procedure TForm1.FormCreate(Sender: TObject); var f1:textfile; s1:string; i,il:integer; f:textfile; newmenuitem:tmenuitem; begin encreation:=true; //application.MessageBox('kjbkjbkjb','kjkjbkjbkjb',mb_ok); if liste_langues.Count>0 then for il:=1 to liste_langues.Count do begin newmenuitem:=tmenuitem.Create(mainmenu1); newmenuitem.Caption:=liste_langues[il-1]; newmenuitem.Tag:=1000+il; newmenuitem.OnClick:=@menuitem6click; if liste_langues[il-1]=fallbacklang then newmenuitem.Checked:=true; menuitem6.add(newmenuitem); end; DoubleBuffered:=true; scrollbox1.DoubleBuffered:=true; AFFICHERLAGRILLE1.CAPTION:=rsAfficherLaGr; AFFICHERLESANGLES1.CAPTION:=rsAfficherLesA; AIDE1.CAPTION:=rsAide; AIDESUROPTGEO1.CAPTION:=rsAideSurOptGe; AJOUTER1.CAPTION:=rsAjouter; AJUSTERAUTOMATIQUEMENT1.CAPTION:=rsAjusterAutom; APROPOS2.CAPTION:=rsAPropos; ASSOCIERLESFICHIERSOPTAVECOPTGEO1.CAPTION:=rsAssocierLesF; ATTRACTIONDELAGRILLE1.caption:= rsAttractionDe; BASEDEREGISTRE1.caption:= rsBaseDeRegist; BOUTONANGLE.HINT:= rsMesurerUnAng; BOUTONCONIQUECONCAVE.HINT:= rsAjouterUnMir; BOUTONCONIQUECONVEXE.HINT:= rsAjouterUnMir2; BOUTONDIA.HINT:= rsAjouterUnDia; BOUTONDISTANCE.HINT:= rsMesurerLaDis; BOUTONECRAN.HINT:= rsAjouterUnCra; BOUTONFANTOME.HINT:= rsCacherDesSeg; BOUTONFLECHE.HINT:= rsAjouterUnTra; BOUTONLEC.HINT:= rsAjouterUneLe; BOUTONLMC.HINT:= rsAjouterUneLe2; BOUTONLMD.HINT:= rsAjouterUneLe3; BOUTONLSR.HINT:= rsAjouterUneLa; BOUTONMIROIRPLAN.HINT:= rsAjouterUnMir3; BOUTONMSCEPA.HINT:= rsAjouterUnMir4; BOUTONMSCERE.HINT:= rsAjouterUnMir5; BOUTONMSCOPA.HINT:= rsAjouterUnMir6; BOUTONMSCORE.HINT:= rsAjouterUnMir7; BOUTONOEIL.HINT:= rsAjouterUnOei; BOUTONONDEPLANE.HINT:= rsAjouterUneOn; BOUTONPOLY.HINT:= rsAjouterUnPol; BOUTONPOLYCERCLE.HINT:= rsAjouterUnePo; boutonreseau.Hint:=rsAjouterUnRSe; BOUTONPRISME.HINT:= rsAjouterUnPri; MenuItemreseau.Caption:=rsRSeauDiffrac; BOUTONRAYON.HINT:= rsAjouterUnRay; BOUTONSOURCEPONCTUELLE.HINT:= rsAjouterUnObj; BOUTONSPHERE.HINT:= rsAjouterUneSp; BOUTONSPV.HINT:= rsAjouterUnObj2; BOUTONTEXTE.caption:= rsA; BOUTONTEXTE.HINT:= rsAjouterUnTex; CAPTION:= rsOptGeo; COCHEANGLES.caption:= rsAnglesDIncid; COCHEATTRACTION.caption:= rsAttraction; COCHEGRILLE.caption:= rsGrille; COCHENORMALE.caption:= rsNormales; COMBOZOOM.HINT:= rsFacteurDeZoo; COMMENATIRESURLASIMULATION1.caption:= rsCommentaireS2; CONTACTERLAUTEUR1.caption:= rsContacterLAu; COPIER1.caption:= rsCopierSimula2; COULEURDEFOND1.caption:= rsCouleurDeFon; DFINIRLERPERTOIREPERSONNEL1.caption:= rsDFinirLeRPer; DIAPHRAGME1.caption:= rsDiaphragme; DIVERS1.caption:= rsDivers; DPLACERUNLMENT1.caption:= rsDPlacerUnLMe2; DSASSOCIER1.caption:= rsDSassocier; DUDERNIERRPERTOIREUTILIS1.caption:= rsDuDernierRPe; DUPLIQUERUNLMENT1.caption:= rsDupliquerUnL2; DURPERTOIREEXEMPLES1.caption:= rsDeMonRPertoi; DURPERTOIREEXEMPLES2.caption:= Format(rsDuRPertoireE, ['"', '"']); ECRAN1.caption:= rsEcran; EDITERLECOMMENTAIREDELASIMULATION1.caption:= rsEditerLeComm; EDITION1.caption:= rsEdition; ELEMENTSCHOISIR2.caption:= rsElMentsChois; EMPENNAGEDESRAYONS1.caption:= rsEmpennageDes; ENREGISTRERSIMULATION1.caption:= rsEnregistrerS; ENREGISTRERSIMULATION2.caption:= rsEnregistrerS2; FICHIER1.caption:= rsFichier; GRILLE1.caption:= rsOptions; GROUPERDESLMENTS1.caption:= rsGrouperDesLM; IMPRIMER1.caption:= rsImprimer; JOINDREPARUNARCDECERCLE1.caption:= rsJoindreParUn; JOINDREPARUNSEGMENT1.caption:= rsJoindreParUn2; LAMESEMIRFLCHISSANTE1.caption:= rsLameSemiRFlC; LENTILLE1.caption:= rsLentille; LENTILLEMINCECONVERGENTE1.caption:= rsLentilleMinc; LENTILLEMINCEDIVERGENTE1.caption:= rsLentilleMinc2; LICENSEGPL1.caption:= rsLicenseGPL; MANUELLEMENT1.caption:= rsManuellement; MENUITEM1.caption:= rsExporterGrap; menuitem7.Caption:=rsIndicesDuMil3; MENUITEM3.caption:= rsPNG; MENUITEM4.caption:= rsJPG; MENUITEM6.caption:= rsLangue; MENUPRISME.caption:= rsPrisme; MESUREDANGLE1.caption:= rsMesureDAngle; MESUREDEDISTANCE1.caption:= rsMesureDeDist; MIROIRCNIQUE1.caption:= rsMiroirCNique; MIROIRPLAN2.caption:= rsMiroirPlan; MIROIRSPHRIQUECONCAVE1.caption:= rsMiroirSphRiq; MIROIRSPHRIQUECONVERGENT1.caption:= rsMiroirSphRiq; MIROIRSPHRIQUECONVEXE1.caption:= rsMiroirSphRiq2; MIROIRSPHRIQUECONVEXE2.caption:= rsMiroirSphRiq2; MODIFIERDIMENSIONSESPACEDETRAVAIL1.caption:= rsModifierLesD; N7.caption:= rsAfficherLesN; NOUVEAU1.caption:= rsNouvelleSimu; menuitem10.Caption:=rsDeMonRPertoi; menuitem11.Caption:=Format(rsDuRPertoireE, ['"', '"']); menuitem12.Caption:=rsDuDernierRPe2; menuitem9.Caption:=rsSuperposerSi; OEILSTYLIS1.caption:= rsOeilStylis; ONDEPLANE1.caption:= rsOndePlane; OPTIONSDELAGRILLE1.caption:= rsOptionsDeLaG; OPTIONSDESNORMALES1.caption:= rsOptionsDesNo; OUVRIRSIMULATION1.caption:= rsOuvrirSimula; POLYHDRERFRACTANT1.caption:= rsPolyhDreRFra; POLYSPHRERFRACTANTE1.caption:= rsPolysphReRFr; PRFRENCES1.caption:= rsPrFRences; PROPRITSDUNLMENT1.caption:= rsPropriTSDUnL2; QUITTER1.caption:= rsQuitter; RAYONSFANTOMES1.caption:= rsRayonsFantom; RAYONUNIQUE1.caption:= rsRayonUnique; REFAIRE1.caption:= rsRefaire; RTABLIR1.caption:= rsdefaire; SITEWEB1.caption:= rsSiteWeb; SOURCE2.caption:= rsSource; SOURCEPONCTUELLE1.caption:= rsObjetPonctue; SPEEDBUTTON1.HINT:= rsAjouterOuDit; SPEEDBUTTON2.caption:= rsCoord; SPEEDBUTTON2.HINT:= rsAfficherLesC; SPHRERFRACTANTE1.caption:= rsSphReRFracta; STATICTEXT1.caption:= rsZoom; STATICTEXT2.caption:= rsMiroirs; STATICTEXT3.caption:= rsSources; STATICTEXT4.caption:= rsDioptres; STATICTEXT5.caption:= rsEcrans; STATICTEXT6.caption:= rsDivers2; STATICTEXT7.caption:= rsAfficher; SUPPRIMERUNLMENT1.caption:= rsSupprimerUnL2; SURFACESDONDE1.caption:= rsSurfacesDOnd; SYSTMEOPTIQUE1.caption:= rsSystMeOptiqu; SYSTMEOPTIQUEREL1.caption:= rsSystMeOptiqu2; TEXTESURLEDESSIN1.caption:= rsTexteSurLeDe; TOUSLESLMENTS1.caption:= rsTousLesLMent; TRAITFLCHE1.caption:= rsTraitFlChe; // BIBI:=tmonbitmap.Create; screen.Cursors[crDepla]:= LoadCursorFromLazarusResource('DEPLA'); screen.Cursors[crFin]:= LoadCursorFromLazarusResource('FIN'); screen.Cursors[crDeplacement]:= LoadCursorFromLazarusResource('DEPLACEMENT'); screen.Cursors[crDebut]:= LoadCursorFromLazarusResource('DEBUT'); screen.Cursors[crancre]:= LoadCursorFromLazarusResource('ANCRE'); screen.Cursors[crPoint1]:= LoadCursorFromLazarusResource('POINT1'); screen.Cursors[crPoint2]:= LoadCursorFromLazarusResource('POINT2'); screen.Cursors[crFoyer]:= LoadCursorFromLazarusResource('FOYER'); screen.Cursors[crDepFoyer]:= LoadCursorFromLazarusResource('DEPFOYER'); screen.Cursors[crCentre]:= LoadCursorFromLazarusResource('CENTRE'); screen.Cursors[crmarteau]:= LoadCursorFromLazarusResource('MARTEAU'); screen.Cursors[crCentre1]:= LoadCursorFromLazarusResource('CENTRE1'); screen.Cursors[crCentre2]:= LoadCursorFromLazarusResource('CENTRE2'); screen.Cursors[crDepCentre]:= LoadCursorFromLazarusResource('DEPCENTRE'); screen.Cursors[crSource]:= LoadCursorFromLazarusResource('SOURCE'); screen.Cursors[crDirection]:= LoadCursorFromLazarusResource('DIRECTION'); screen.Cursors[crViseur]:= LoadCursorFromLazarusResource('VISEUR'); screen.Cursors[crtranslation]:= LoadCursorFromLazarusResource('TRANSLATION'); screen.Cursors[crrotation]:= LoadCursorFromLazarusResource('ROTATION'); screen.Cursors[crinfo]:= LoadCursorFromLazarusResource('INFO'); screen.Cursors[crprop]:= LoadCursorFromLazarusResource('PROP'); screen.Cursors[crsuivant]:= LoadCursorFromLazarusResource('SUIVANT'); screen.Cursors[crdupliquer]:= LoadCursorFromLazarusResource('DUPLIQUER'); screen.Cursors[crsommet]:= LoadCursorFromLazarusResource('SOMMET'); screen.Cursors[crsommet1]:= LoadCursorFromLazarusResource('SOMMET1'); screen.Cursors[crsommet2]:= LoadCursorFromLazarusResource('SOMMET2'); screen.Cursors[crtexte]:= LoadCursorFromLazarusResource('TEXTE'); screen.Cursors[crtaille]:= LoadCursorFromLazarusResource('TAILLE'); screen.Cursors[crdepsommet]:= LoadCursorFromLazarusResource('DEPSOMMET'); screen.Cursors[crgroupe]:= LoadCursorFromLazarusResource('GROUPE'); screen.Cursors[crcentreg]:= LoadCursorFromLazarusResource('CENTREG'); creation:=true; Combozoom.itemindex:=0; toolbar1.ButtonHeight:=25; toolbar2.ButtonHeight:=25; for i:=1 to maxannulation do etatactuel[i]:=tstringlist.Create; policedefaut:=tfont.Create; policedefaut.Assign(form1.font); end; procedure tform1.desactiveboutons; var i:integer; begin for i:=0 to 4 do mainmenu1.Items.items[i].enabled:=false; cochegrille.Enabled:=false; cocheattraction .enabled:=false; cochenormale.Enabled:=false; cocheangles.enabled:=false; combozoom.Enabled:=false; boutontexte.enabled:=false; form_palette.boutongroupe.Enabled:=false; boutonangle.Enabled:=false; boutonconiqueconcave.enabled:=false; boutonconiqueconvexe.enabled:=false; boutonmiroirplan.enabled:=false; boutonreseau.enabled:=false; boutonfleche.enabled:=false; form_palette.boutondupliquer.enabled:=false; boutonpoly.enabled:=false; boutonprisme.Enabled:=false; boutonpolycercle.enabled:=false; boutonecran.enabled:=false; boutondia.Enabled:=false; boutonlsr.enabled:=false; boutonoeil.enabled:=false; boutonrayon.enabled:=false; boutonmscopa.enabled:=false; boutonmscepa.enabled:=false; boutonmscere.enabled:=false; boutonmscore.enabled:=false; boutonlmc.enabled:=false; boutonlmd.enabled:=false; boutonlec.enabled:=false; form_palette.speedbutton3.Enabled:=false; form_palette.speedbutton4.Enabled:=false; form_palette.speedbutton5.Enabled:=false; form_palette.speedbutton2.Enabled:=false; form_palette.speedbutton6.Enabled:=false; form_palette.speedbutton7.Enabled:=false; boutonsourceponctuelle.enabled:=false; boutonspv.enabled:=false; boutonondeplane.enabled:=false; form_palette.boutondeplacement.enabled:=false; form_palette.boutonsuppression.enabled:=false; form_palette.boutonprop.enabled:=false; boutonsphere.enabled:=false; boutondistance.enabled:=false; point1fait:=false; point2fait:=false; point3fait:=false; point4fait:=false; foyerfait:=false; sommetfait:=false; if ajoutrayon then StatusBar1.Panels[3].text:=rsModeAjoutDUn; if ajoutmiroirplan then StatusBar1.Panels[3].text:=rsModeAjoutDUn2; if ajoutreseau then StatusBar1.Panels[3].text:=rsModeAjoutDUn25; ; if ajoutfleche then StatusBar1.Panels[3].text:=rsModeAjoutDUn3; if ajoutconiqueconcave then StatusBar1.Panels[3].text:=rsModeAjoutDUn4; if ajoutconiqueconvexe then StatusBar1.Panels[3].text:=rsModeAjoutDUn5; if ajoutpoly then StatusBar1.Panels[3].text:=rsModeAjoutDUn6; if ajoutprisme then StatusBar1.Panels[3].text:=rsModeAjoutDUn7; if ajoutpolycercle then StatusBar1.Panels[3].text:=rsModeAjoutDUn8; if ajoutecran then StatusBar1.Panels[3].text:=rsModeAjoutDUn9; if ajoutoeil then StatusBar1.Panels[3].text:=rsModeAjoutDUn10; if ajoutlsr then StatusBar1.Panels[3].text:=rsModeAjoutDUn11; if ajoutmscopa then StatusBar1.Panels[3].text:=rsModeAjoutDUn12; if ajoutmscepa then StatusBar1.Panels[3].text:=rsModeAjoutDUn13; if ajoutlmc then StatusBar1.Panels[3].text:=rsModeAjoutDUn14; if ajoutlec then StatusBar1.Panels[3].text:=rsModeAjoutDUn15; if ajoutsphere then StatusBar1.Panels[3].text:=rsModeAjoutDUn16; if ajoutlmd then StatusBar1.Panels[3].text:=rsModeAjoutDUn17; if ajoutmscore then StatusBar1.Panels[3].text:=rsModeAjoutDUn18; if ajoutmscere then StatusBar1.Panels[3].text:=rsModeAjoutDUn19; if ajoutsourceponctuelle then StatusBar1.Panels[3].text:=rsModeAjoutDUn20; if ajoutondeplane then StatusBar1.Panels[3].text:=rsModeAjoutDUn21; if modemodif then StatusBar1.Panels[3].text:=rsModeDPlaceme; if modeinfo then StatusBar1.Panels[3].text:=rsModePropriTS; if modeduplication then StatusBar1.Panels[3].text:=rsModeDuplicat; if modesuppression then StatusBar1.Panels[3].text:=rsModeSuppress; if modedistance then StatusBar1.Panels[3].text:=rsModeMesureDe; if modeangle then StatusBar1.Panels[3].text:=rsModeMesureDA; if ajouttexte then StatusBar1.Panels[3].text:=rsModeAjoutDUn22; if ajoutdiaphragme then StatusBar1.Panels[3].text:=rsModeAjoutDUn23; if modegroupement then StatusBar1.Panels[3].text:=Format(rsModeAjoutDUn24, [ '"', '"']); end; procedure tform1.activeboutons; var i:integer; toto:string; begin for i:=0 to 4 do mainmenu1.Items.items[i].enabled:=true; cochegrille.Enabled:=true; cocheattraction.Enabled:=true; cochenormale.Enabled:=true; cocheangles.enabled:=true; combozoom.Enabled:=true; StatusBar1.Panels[3].text:=''; boutonconiqueconcave.enabled:=true; boutontexte.Enabled:=true; form_palette.boutongroupe.Enabled:=true; boutonangle.Enabled:=true; boutonconiqueconvexe.enabled:=true; boutonmiroirplan.enabled:=true; boutonreseau.enabled:=true; boutonfleche.enabled:=true; form_palette.boutondupliquer.enabled:=true; form_palette.boutondupliquer.caption:=rsDupliquer; boutonecran.enabled:=true; boutondia.Enabled:=true; boutonlsr.enabled:=true; boutonoeil.Enabled:=true; boutonpoly.enabled:=true; boutonprisme.Enabled:=true; boutonpolycercle.enabled:=true; boutonrayon.enabled:=true; boutonmscopa.enabled:=true; boutonmscore.enabled:=true; boutonmscere.enabled:=true; boutonmscepa.enabled:=true; boutonlmc.enabled:=true; boutonlec.enabled:=true; boutonlmd.enabled:=true; boutonsourceponctuelle.enabled:=true; boutonspv.enabled:=true; boutonondeplane.enabled:=true; form_palette.boutondeplacement.enabled:=true; form_palette.boutonprop.enabled:=true; boutonsphere.enabled:=true; boutondistance.enabled:=true; form_palette.speedbutton3.Enabled:=true; form_palette.speedbutton4.Enabled:=true; form_palette.speedbutton5.Enabled:=true; form_palette.speedbutton2.Enabled:=true; form_palette.speedbutton6.Enabled:=true; form_palette.speedbutton7.Enabled:=true; form_palette.boutonsuppression.enabled:=true; form_palette.boutondeplacement.caption:=rsDPlacer; toto:=form_palette.boutondeplacement.caption; form_palette.boutonsuppression.caption:=rsSupprimer; form_palette.boutonprop.caption:=rsPropriTS; ajoutmiroirplan:=false; ajoutreseau:=false; ajoutfleche:=false; ajoutpoly:=false; ajoutpolycercle:=false; ajoutprisme:=false; ajoutecran:=false; ajoutdiaphragme:=false; ajoutlsr:=false; ajoutoeil:=false; ajoutrayon:=false; ajoutmscopa:=false; ajoutmscore:=false; ajoutmscere:=false; ajoutmscepa:=false; ajoutlmc:=false; ajoutsphere:=false; ajoutlec:=false; ajoutlmd:=false; ajouttexte:=false; ajoutsourceponctuelle:=false; ajoutondeplane:=false; ajoutconiqueconcave:=false; ajoutconiqueconvexe:=false; modifencours:=false; modemodif:=false; modegroupement:=false; modeinfo:=false; modeduplication:=false; modedistance:=false; modeangle:=false; modesuppression:=false; end; procedure tform1.retaille_image1; begin if not(respectrapport) then begin form1.image1.width:=largeurinitialeimage1*zoomfactor; form1.image1.height:=hauteurinitialeimage1*zoomfactor; end; if respectrapport then if ((yymax-yymin)/(xxmax-xxmin)>rapportideal) then begin form1.image1.height:=hauteurinitialeimage1*zoomfactor; form1.image1.width:=trunc(hauteurinitialeimage1/rapportactuel)*zoomfactor; end else begin form1.image1.width:=largeurinitialeimage1*zoomfactor; form1.image1.height:=trunc(largeurinitialeimage1*rapportactuel)*zoomfactor; end; form1.Image1.Picture.Bitmap.Width:=form1.Image1.Width; form1.Image1.Picture.Bitmap.height:=form1.Image1.height; //form1.Image1.Refresh; form1.ScrollBox1.HorzScrollBar.Visible:=false; form1.ScrollBox1.VertScrollBar.Visible:=false; form1.ScrollBox1.Refresh; form1.ScrollBox1.HorzScrollBar.Visible:=(form1.image1.width>form1.ScrollBox1.ClientWidth); form1.ScrollBox1.VertScrollBar.Visible:=(form1.image1.height>form1.ScrollBox1.ClientHeight); if form1.ScrollBox1.HorzScrollBar.Visible then form1.ScrollBox1.HorzScrollBar.Range:=form1.image1.width; if form1.ScrollBox1.VertScrollBar.Visible then form1.ScrollBox1.VertScrollBar.Range:=form1.image1.height; end; procedure TForm1.MenuItem3Click(Sender: TObject); var png : TPortableNetworkGraphic; PngFileName:string; begin savedialog2.FileName:=''; savedialog2.InitialDir:=repertoire_simul_perso; if savedialog2.Execute then PngFileName:=savedialog2.FileName; if pngfilename='' then exit; if fileexistsutf8(PngFileName) then if application.MessageBox(pchar(rsVoulezVousLC), pchar(rsCeFichierExi), mb_yesno )=idno then exit; png := TPortableNetworkGraphic.Create; try png.Assign(form1.image1.Picture.bitmap); png.SaveToFile(utf8tosys(PngFileName)); finally png.Free; end; end; procedure TForm1.MenuItem4Click(Sender: TObject); var jpg : TJPEGImage; JpgFileName:string; begin savedialog3.FileName:=''; savedialog3.InitialDir:=repertoire_simul_perso; if savedialog3.Execute then JpgFileName:=savedialog3.FileName; if jpgfilename='' then exit; if fileexistsutf8(JpgFileName) then if application.MessageBox(pchar(rsVoulezVousLC2), pchar(rsCeFichierExi), mb_yesno)=idno then exit; jpg := TJPEGImage.Create; try jpg.Assign(form1.Image1.Picture.bitmap); jpg.SaveToFile(utf8tosys(JpgFileName)); finally jpg.Free; end; end; procedure TForm1.MenuItem6Click(Sender: TObject); var n:integer; nom_ini_file:string; f:textfile; begin n:=(Sender as TComponent).Tag; if n<=1000 then exit; if liste_langues[n-1000-1]=fallbacklang then exit; application.MessageBox(pchar(rsPourPrendreE), pchar(rsChangementDe), mb_ok); nom_ini_file:=repertoire_config_perso+'optgeo.ini'; assignfile(f,UTF8ToSys(nom_ini_file)); rewrite(f); writeln(f,liste_langues[n-1000-1]+'_'+uppercase(liste_langues[n-1000-1])); writeln(f,liste_langues[n-1000-1]); closefile(f); application.Terminate; end; procedure TForm1.MenuItem7Click(Sender: TObject); begin with saisie_indices_milieu_ambiant do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; Edit_indice_bleu_par_defaut.text:=floattostr(indice_bleu_par_defaut); Edit_indice_vert_par_defaut.text:=floattostr(indice_vert_par_defaut); Edit_indice_rouge_par_defaut.text:=floattostr(indice_rouge_par_defaut); FloatSpinEditrouge.value:=longueur_donde_red*1e9; FloatSpinEditbleu.value:=longueur_donde_blue*1e9; FloatSpinEditvert.value:=longueur_donde_green*1e9; end; saisie_indices_milieu_ambiant.ShowModal; Rafraichit; end; procedure TForm1.MenuItem8Click(Sender: TObject); var PSFileName:string; mps:TMonPostScript; label 3012,628; var iiii:integer; i,j,iii,nn1,nn2:integer; tt1,tt2,rra:extended; bord_b,bord_h,bord_g,bord_d:integer; rap:extended; dede:string; hhhh,llll:integer; begin if not(graphepresent) then exit; savedialog4.FileName:=''; savedialog4.InitialDir:=repertoire_simul_perso; if savedialog4.Execute then PSFileName:=savedialog4.FileName; if psfilename='' then exit; if fileexistsutf8(PsFileName) then if application.MessageBox(pchar(rsVoulezVousLC), pchar(rsCeFichierExi), mb_yesno )=idno then exit; case graphehorizontal of tgauche: FormConfigPostScript.radiogroupehorizontal.itemindex:=1; tdroite: FormConfigPostScript.radiogroupehorizontal.itemindex:=0; tcentreh: FormConfigPostScript.radiogroupehorizontal.itemindex:=2; end; case graphevertical of thaut: FormConfigPostScript.radiogroupevertical.itemindex:=0; tbas: FormConfigPostScript.radiogroupevertical.itemindex:=1; tcentrev: FormConfigPostScript.radiogroupevertical.itemindex:=2; end; FormConfigPostScript.spinpourcentagehorizontal.value:=taillegraphehorizontal; FormConfigPostScript.spinpourcentagevertical.value:=taillegraphevertical; with FormConfigPostScript do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; showmodal; end; Donne_Hauteur_Largeur(p_ps,or_ps,res_ps_x,res_ps_y,hhhh,llll); if not(respect_ps) then begin case graphehorizontal of tgauche: begin bord_g:=0; bord_d:=trunc(llll-llll/100*taillegraphehorizontal); end; tdroite: begin bord_d:=0; bord_g:=trunc(llll-llll/100*taillegraphehorizontal); end; tcentreh: begin bord_g:=trunc((llll-llll/100*taillegraphehorizontal)/2); bord_d:=bord_g; end; end; case graphevertical of thaut: begin bord_h:=0; bord_b:=trunc(hhhh-hhhh/100*taillegraphevertical); end; tbas: begin bord_b:=0; bord_h:=trunc(hhhh-hhhh/100*taillegraphevertical); end; tcentrev: begin bord_b:=trunc((hhhh-hhhh/100*taillegraphevertical)/2); bord_h:=bord_b; end; end; end else begin rap:=(yymax-yymin)/(xxmax-xxmin); if rap0 then begin retaillepangle(listeanglesatracer,nombreanglesatracer,0); nombreanglesatracer:=0; end; nombretotalsegment:=0; nombreenfant:=0; nombrenormale:=0; creeprayon(listerayonenfant,0); if nombrerayon>0 then for i:=1 to nombrerayon do if not( (listerayon[-1+i].couleur=clblack) and (unit222.unmilieudispersif or (nombrereseau>0))) then calculesegment0(listerayon[-1+i].ax, listerayon[-1+i].ay,listerayon[-1+i].kx,listerayon[-1+i].ky,listerayon[-1+i].anglepolaire,listerayon[-1+i].epaisseur, listerayon[-1+i].couleur,listerayon[-1+i].vav, listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment) else begin retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clred,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clgreen,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clblue,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listesourceponctuelle[-1+i].calculesegment; if nombreondeplane>0 then for i:=1 to nombreondeplane do listeondeplane[-1+i].calculesegment; if nombreenfant=0 then goto 3012; i:=0; 628: inc(i); calculesegment0(listerayonenfant[-1+i].ax, listerayonenfant[-1+i].ay,listerayonenfant[-1+i].kx,listerayonenfant[-1+i].ky,listerayonenfant[-1+i].anglepolaire, listerayonenfant[-1+i].epaisseur, listerayonenfant[-1+i].couleur,listerayonenfant[-1+i].vav, listerayonenfant[-1+i].vaa,listerayonenfant[-1+i].nombremaxenfant,listerayonenfant[-1+i].maxsegment); if i0 then for i:=1 to nombregroupe do listegroupe[-1+i].recalculeiso; if nombreprisme>0 then for i:=1 to nombreprisme do listeprisme[-1+i].dessinePS(mps); if nombrepolycercle>0 then for i:=1 to nombrepolycercle do listepolycercle[-1+i].dessinePS(mps); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do listepolyhedre[-1+i].dessinePS(mps); if nombresphere>0 then for i:=1 to nombresphere do listesphere[-1+i].dessinePS(mps); if nombrelec>0 then for i:=1 to nombrelec do listelec[-1+i].dessinePS(mps); if nombremiroirplan>0 then for i:=1 to nombremiroirplan do ListeMiroirPlan[-1+i].dessinePS(mps); if nombreReseau>0 then for i:=1 to nombreReseau do ListeReseau[-1+i].dessinePS(mps); if nombrefleche>0 then for i:=1 to nombrefleche do ListeFleche[-1+i].dessinePS(mps); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do ListeMiroirconique[-1+i].dessinePS(mps); if nombrerayon>0 then for i:=1 to nombrerayon do listerayon[-1+i].dessinePS(mps); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listesourceponctuelle[-1+i].dessinePS(mps); if nombreondeplane>0 then for i:=1 to nombreondeplane do listeondeplane[-1+i].dessinePS(mps); if nombremscopa>0 then for i:=1 to nombremscopa do listemscopa[-1+i].dessinePS(mps); if nombremscore>0 then for i:=1 to nombremscore do listemscore[-1+i].dessinePS(mps); if nombremscere>0 then for i:=1 to nombremscere do listemscere[-1+i].dessinePS(mps); if nombremscepa>0 then for i:=1 to nombremscepa do listemscepa[-1+i].dessinePS(mps); if nombrelmc>0 then for i:=1 to nombrelmc do listelmc[-1+i].dessinePS(mps); if nombrelmd>0 then for i:=1 to nombrelmd do listelmd[-1+i].dessinePS(mps); if nombreecran>0 then for i:=1 to nombreecran do listeecran[-1+i].dessinePS(mps); if nombreoeil>0 then for i:=1 to nombreoeil do listeoeil[-1+i].dessinePS(mps); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do listediaphragme[-1+i].dessinePS(mps); if nombrelsr>0 then for i:=1 to nombrelsr do listelsr[-1+i].dessinePS(mps); if nombremetre>0 then for i:=1 to nombremetre do listemetre[-1+i].dessinePS(mps); if nombreangle>0 then for i:=1 to nombreangle do listeangle[-1+i].dessinePS(mps); if nombretexte>0 then for i:=1 to nombretexte do listetexteaffiche[-1+i].dessinePS(mps); if nombreanglesatracer>0 then for i:=1 to nombreanglesatracer do listeanglesatracer[-1+i].dessinebisPS(mps); if nombregroupe>0 then for i:=1 to nombregroupe do listegroupe[-1+i].dessinePS(mps); if (nombrelmc+nombrelmd+nombremscopa+nombremscepa=0) then for i:=1 to nombresourceponctuelle do if listesourceponctuelle[-1+i].tracersurfacesonde then if not(listesourceponctuelle[-1+i].sourcevirtuelle) then if listesourceponctuelle[-1+i].nombrecheminsoptiques>0 then begin tt1:=listesourceponctuelle[-1+i].ray[1].anglepolaire; tt2:=listesourceponctuelle[-1+i].ray[listesourceponctuelle[-1+i].nombrederayon].anglepolaire; if tt20 then begin for j:=1 to listeondeplane[-1+i].nombrecheminsoptiques do begin optionsurfacesonde:=true; premierpointsurfacesonde:=true; cheminactuelaobtenir:=listeondeplane[-1+i].listecheminsoptiques[j]; for iii:=1 to maxrayonsrecherchesurfacesonde do begin calculesegment0(listeondeplane[-1+i].a1x+ (iii-1)*(listeondeplane[-1+i].a2x-listeondeplane[-1+i].a1x)/ (maxrayonsrecherchesurfacesonde-1), listeondeplane[-1+i].a1y+ (iii-1)*(listeondeplane[-1+i].a2y-listeondeplane[-1+i].a1y)/ (maxrayonsrecherchesurfacesonde-1), listeondeplane[-1+i].ray[1].kx, listeondeplane[-1+i].ray[1].ky, listeondeplane[-1+i].ray[1].anglepolaire ,1,listeondeplane[-1+i].couleur,'','',0,listeondeplane[-1+i].maxsegment); mps.trait(listesegment[-1+nombretotalsegment].a1x, listesegment[-1+nombretotalsegment].a1y, listesegment[-1+nombretotalsegment].a2x, listesegment[-1+nombretotalsegment].a2y,1, listesegment[-1+nombretotalsegment].couleur,psdot,pmcopy,true); end; end; end; nn2:=nombretotalsegment; nombretotalsegment:=nn1; DessineTousLesSegmentsPS(mps); ps.SaveToFile(utf8tosys(PsFileName)); finally ps.Free; end; end; procedure TForm1.MenuItemreseauClick(Sender: TObject); begin if modequelquechose then exit; if NombreReseau=maxReseau then begin application.MessageBox(pchar(rsNombreMaxima37), pchar(rsAttention3), mb_ok ); exit; end; with Fsaisiereseau do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; fsaisiereseau.boutonsup.enabled:=false; fsaisiereseau.editx1.text:=''; fsaisiereseau.editx2.text:=''; fsaisiereseau.edity1.text:=''; fsaisiereseau.edity2.text:=''; fsaisiereseau.cochehachures.checked:=false; fsaisiereseau.editepaisseur.Value:=epaisseurReseau; fsaisiereseau.radiogroup1.itemindex:=0; fsaisiereseau.floatspinedit1.value:=500; fsaisiereseau.spinedit_ordre_min.value:=-1; fsaisiereseau.spinedit_ordre_max.value:=1; fsaisiereseau.colorgrid1.Selected :=(couleurReseau); fsaisiereseau.caption:= rsAjoutDUnMiro; fsaisiereseau.log1.Caption:=unitelongueur; fsaisiereseau.log2.Caption:=unitelongueur; fsaisiereseau.log3.Caption:=unitelongueur; fsaisiereseau.log4.Caption:=unitelongueur; if fsaisiereseau.showmodal=mrok then sauvevirtuel; end; procedure TForm1.MenuPrismeClick(Sender: TObject); begin if modequelquechose then exit; if NombrePrisme=maxPrisme then begin application.MessageBox(pchar(rsNombreMaxima2), pchar(rsAttention3), mb_ok); exit; end; saisiePrisme.combomateriaux.items:=listemateriaux; saisiePrisme.combomateriaux.itemindex:=0; saisiePrisme.editnrouge.text:=listenrouge.strings[0]; saisiePrisme.editnbleu.text:=listenbleu.strings[0]; saisiePrisme.editnvert.text:=listenvert.strings[0]; with saisiePrisme do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiePrisme.editnrouge.text:=floattostr(1.5); saisiePrisme.editnvert.text:=floattostr(1.6); saisiePrisme.editnbleu.text:=floattostr(1.7); saisiePrisme.log1.Caption:=unitelongueur; saisiePrisme.log2.Caption:=unitelongueur; saisiePrisme.log3.Caption:=unitelongueur; saisiePrisme.colorgrid1.selected:= (couleurPrisme); saisiePrisme.radiosortant.ItemIndex:=1; saisiePrisme.radioentrant.ItemIndex:=1; saisiePrisme.boutonsup.enabled:=false; if saisiePrisme.showmodal=mrok then sauvevirtuel; end; procedure TForm1.FormShow(Sender: TObject); var f1:textfile; s1:string; _n1:extended; label 3204,3555,159; begin if encreation then begin scalefont(self); encreation:=false; form1.WindowState:=wsmaximized; form1.Refresh; {$ifdef linux} form1.Top:=0; form1.Left:=0; form1.Width:=screen.Width; form1.Height:=screen.Height; form1.Refresh; {$endif} application.ProcessMessages; form1.ScrollBox1.Refresh; application.ProcessMessages; form1.Image1.Width:=form1.ScrollBox1.ClientWidth; form1.Image1.Height:=form1.ScrollBox1.ClientHeight; form1.Image1.Refresh; creation:=false; ConfigurationInitiale; { application.MessageBox('','',mb_ok); application.ProcessMessages; form1.StatusBar1.Update; form1.Refresh; application.ProcessMessages;} largeurinitialeimage1:=form1.scrollbox1.clientwidth; hauteurinitialeimage1:=form1.scrollbox1.clientheight; rapportideal:=hauteurinitialeimage1/largeurinitialeimage1; if parametrelignecommande then begin // decimalseparator:=','; goto 159; end; with saisiechoix do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; edit_indice_vert_par_defaut.text:='1'; edit_indice_bleu_par_defaut.text:='1'; edit_indice_rouge_par_defaut.text:='1'; end; saisiechoix.showmodal; form_palette.show; try indice_vert_par_defaut:=abs(strtofloat(saisiechoix.Edit_indice_vert_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal), mb_ok); indice_vert_par_defaut:=1; end; try indice_bleu_par_defaut:=abs(strtofloat(saisiechoix.Edit_indice_bleu_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal2), mb_ok); indice_bleu_par_defaut:=1; end; try indice_rouge_par_defaut:=abs(strtofloat(saisiechoix.Edit_indice_rouge_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal3), mb_ok); indice_rouge_par_defaut:=1; end; 159:xxmin:=0;xxmax:=largeurinitialeimage1; yymin:=0;yymax:=hauteurinitialeimage1; BIBI.LimitesEtAxes(xxmin,xxmax,yymin,yymax,yymin,yymax,form1.image1.width, form1.image1.height,'',policedefaut,true,clwhite,false,0,clblack,false,0,0,clblack, policedefaut,false,false,{grillex,grilley,}1,clblack,clblack,'','','','','','',false,false,false); BIBI.background(couleurfondsimulation); if tracergrille then BIBI.dessinergrille(grillex,grilley); listemateriaux:=tstringlist.Create; listenrouge:=tstringlist.create; listenbleu:=tstringlist.create; listenvert:=tstringlist.create; listemateriaux.add('...'); listenrouge.add(floattostr(1.5)); listenvert.add(floattostr(1.6)); listenbleu.add(floattostr(1.7)); if not fileexistsutf8(repertoireexecutable+'listen.lst') then begin application.messagebox(pchar(rsFichierDesIn), pchar(rsAttention3), mb_ok); goto 3555; end; assignfile(f1,UTF8ToSys(repertoireexecutable+'listen.lst')); reset(f1); while not(eof(f1)) do begin readln(f1,s1); listemateriaux.add(s1); readln(f1,_n1); listenbleu.add(floattostr(_n1)); readln(f1,_n1); listenvert.add(floattostr(_n1)); readln(f1,_n1); listenrouge.add(floattostr(_n1)); end; closefile(f1); 3555: if parametrelignecommande then begin sa_hauteur:=hauteurinitialeimage1; sa_largeur:=largeurinitialeimage1; sa_xxmin:=0; sa_yymin:=0; sa_yymax:=sa_hauteur; sa_xxmax:=sa_largeur; sa_respect:=true; goto 3204; end; case saisiechoix.radiochoix.itemindex of 0: begin sa_hauteur:=hauteurinitialeimage1; sa_largeur:=largeurinitialeimage1; sa_xxmin:=0; sa_yymin:=0; sa_yymax:=sa_hauteur; sa_xxmax:=sa_largeur; sa_respect:=true; goto 3204; end; 1: begin end; 2: begin fichierouvert:=false; Form1.Ouvrirsimulation(Sender,repertoire_exemples); if fichierouvert then begin exit; end else begin sa_hauteur:=hauteurinitialeimage1; sa_largeur:=largeurinitialeimage1; sa_xxmin:=0; sa_yymin:=0; sa_yymax:=sa_hauteur; sa_xxmax:=sa_largeur; sa_respect:=true; goto 3204; end; end; end; with saisieespacetravail do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieespacetravail.editxxmax.Text:=floattostr(largeurinitialeimage1); saisieespacetravail.edityymax.Text:=floattostr(hauteurinitialeimage1); saisieespacetravail.statrapportideal.caption:=floattostr(rapportideal); sa_hauteur:=hauteurinitialeimage1; sa_xxmin:=0; sa_yymin:=0; sa_largeur:=largeurinitialeimage1; sa_xxmax:= largeurinitialeimage1; sa_yymax:= hauteurinitialeimage1; saisieespacetravail.statrapportactuel.caption:=floattostr(rapportideal); saisieespacetravail.showmodal; 3204: xxmin:=sa_xxmin; xxmax:=sa_xxmax; yymin:=sa_yymin; yymax:=sa_yymax; rapportactuel:=(yymax-yymin)/(xxmax-xxmin); grillex:=(xxmax-xxmin)/20; grilley:=(yymax-yymin)/20; grillex:=int(grillex*1.001/puissance(10,partieentiere(log10(grillex))))* puissance(10,partieentiere(log10(grillex))); grilley:=int(grilley*1.001/puissance(10,partieentiere(log10(grilley))))* puissance(10,partieentiere(log10(grilley))); respectrapport:=sa_respect; form1.retaille_image1; form1.Caption:=Format(rsEspaceDeTrav, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax)]); application.ProcessMessages; Rafraichit; if parametrelignecommande then Form1.Ouvrirsimulation(Sender,repertoire_exemples); nombre_etats_sauvegardes:=0; niveau_max_sauvegarde:=0; sauvevirtuel; end; end; function tform1.taillemini:extended; var taille1,taille2:extended; begin if ((form1.scrollbox1.ClientWidth=0) or (form1.scrollbox1.ClientHeight=0)) then begin taillemini:=1; exit; end; taille1:=2/form1.scrollbox1.clientwidth*(xxmax-xxmin); taille2:=2/form1.scrollbox1.clientheight*(yymax-yymin); if taille10) and (modifie or commentaire_change)) then if application.MessageBox( pchar(rsLaSimulation), pchar(rsAttention4), MB_YESNO)=IDNO then begin canclose:=false; exit; end; canclose:=true; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: char); begin if key=chr(27) then begin form1.activeboutons; form_palette.boutongroupe.caption:=rsGrouper; form_palette.boutongroupe.Hint:=rsGrouperDesLM; Rafraichit; form1.StatusBar1.Panels[1].text:=''; form1.StatusBar1.Panels[2].text:=''; form1.image1.Cursor:=crdefault; end; end; procedure TForm1.FormResize(Sender: TObject); begin //if not(creation) then form1.retaille_image1; //if (not(fermeture) and not(creation)) then Rafraichit; end; procedure TForm1.boutonmiroirplanClick(Sender: TObject); begin if NombreMiroirPlan=maxmiroirplan then begin application.MessageBox(pchar(rsNombreMaxima3), pchar(rsAttention3), mb_ok); exit; end; boutonmiroirplan.Enabled:=false; boutonmiroirplan.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL29; ajoutmiroirplan:=true; application.ProcessMessages; boutonmiroirplan.OnClick:=@boutonmiroirplanclick; desactiveboutons; end; procedure TForm1.boutonflecheClick(Sender: TObject); begin if Nombrefleche=maxfleche then begin application.MessageBox(pchar(rsNombreMaxima4), pchar(rsAttention3), mb_ok); exit; end; boutonfleche.Enabled:=false; boutonfleche.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL30; ajoutfleche:=true; application.ProcessMessages; boutonfleche.OnClick:=@boutonflecheclick; desactiveboutons; end; procedure TForm1.boutonlsrClick(Sender: TObject); begin if Nombrelsr=maxlsr then begin application.MessageBox(pchar(rsNombreMaxima5), pchar(rsAttention3), mb_ok); exit; end; boutonlsr.Enabled:=false; boutonlsr.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL31; ajoutlsr:=true; application.ProcessMessages; boutonlsr.OnClick:=@boutonlsrclick; desactiveboutons; end; procedure TForm1.boutondiaClick(Sender: TObject); begin if Nombrediaphragme=maxdiaphragme then begin application.MessageBox(pchar(rsNombreMaxima6), pchar(rsAttention3), mb_ok); exit; end; boutondia.Enabled:=false; boutondia.OnClick:=nil; form1.image1.Cursor:=crcentre; form1.StatusBar1.Panels[2].text:=rsPositionnezL32; ajoutdiaphragme:=true; application.ProcessMessages; boutondia.OnClick:=@boutondiaclick; desactiveboutons; end; procedure TForm1.boutonecranClick(Sender: TObject); begin if Nombreecran=maxecran then begin application.MessageBox(pchar(rsNombreMaxima7), pchar(rsAttention3), mb_ok); exit; end; boutonecran.Enabled:=false; boutonecran.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL33; ajoutecran:=true; application.ProcessMessages; boutonecran.OnClick:=@boutonecranclick; desactiveboutons; end; procedure TForm1.ComboZoomChange(Sender: TObject); begin if modequelquechose then begin case zoomfactor of 1: combozoom.itemindex:=0; 2: combozoom.itemindex:=1; 5: combozoom.itemindex:=2; 10: combozoom.itemindex:=3; 20: combozoom.itemindex:=4; 50: combozoom.itemindex:=5; 100: combozoom.itemindex:=6; end; exit; end; if combozoom.items[combozoom.itemindex]=rsX1 then begin zoomfactor:=1; end; if combozoom.items[combozoom.itemindex]=rsX2 then begin zoomfactor:=2; end; if combozoom.items[combozoom.itemindex]=rsX5 then begin zoomfactor:=5; end; if combozoom.items[combozoom.itemindex]=rsX10 then begin zoomfactor:=10; end; if combozoom.items[combozoom.itemindex]=rsX20 then begin zoomfactor:=20; end; if combozoom.items[combozoom.itemindex]=rsX50 then begin zoomfactor:=50; end; if combozoom.items[combozoom.itemindex]=rsX100 then begin zoomfactor:=100; end; form1.ScrollBox1.VertScrollBar.Position:=0; form1.ScrollBox1.HorzScrollBar.Position:=0; { if ((zoomfactor*form1.scrollbox1.clientheight) or (zoomfactor*form1.scrollbox1.clientwidth)) >32766 then begin application.MessageBox('Zoom trop important !! !','Attention',mb_ok); zoomfactor:=1; combozoom.itemindex:=0; end;} form1.retaille_image1; Rafraichit; end; procedure TForm1.Copier1Click(Sender: TObject); begin if not(graphepresent) then exit; clipboard.assign(form1.image1.picture); end; procedure TForm1.Imprimer1Click(Sender: TObject); label 3012,628; var iiii:integer; i,j,iii,nn1,nn2:integer; tt1,tt2,rra:extended; bord_b,bord_h,bord_g,bord_d:integer; hPrinter : TMyimprimante; rap:extended; dede:string; begin if not(graphepresent) then exit; abandonimpression:=true; case graphehorizontal of tgauche: configimpression.radiogroupehorizontal.itemindex:=1; tdroite: configimpression.radiogroupehorizontal.itemindex:=0; tcentreh: configimpression.radiogroupehorizontal.itemindex:=2; end; case graphevertical of thaut: configimpression.radiogroupevertical.itemindex:=0; tbas: configimpression.radiogroupevertical.itemindex:=1; tcentrev: configimpression.radiogroupevertical.itemindex:=2; end; configimpression.spinpourcentagehorizontal.value:=taillegraphehorizontal; configimpression.spinpourcentagevertical.value:=taillegraphevertical; configimpression.spinnombrecopies.value:=1; with configimpression do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; showmodal; end; if abandonimpression then exit; printer.orientation:=orientation_impression; if not(printDialog1.Execute) then begin exit; end; imprimante:=printer; if not(respect_imprimante) then begin case graphehorizontal of tgauche: begin bord_g:=0; bord_d:=trunc(imprimante.pagewidth-imprimante.pagewidth/100*taillegraphehorizontal); end; tdroite: begin bord_d:=0; bord_g:=trunc(imprimante.pagewidth-imprimante.pagewidth/100*taillegraphehorizontal); end; tcentreh: begin bord_g:=trunc((imprimante.pagewidth-imprimante.pagewidth/100*taillegraphehorizontal)/2); bord_d:=bord_g; end; end; case graphevertical of thaut: begin bord_h:=0; bord_b:=trunc(imprimante.pageheight-imprimante.pageheight/100*taillegraphevertical); end; tbas: begin bord_b:=0; bord_h:=trunc(imprimante.pageheight-imprimante.pageheight/100*taillegraphevertical); end; tcentrev: begin bord_b:=trunc((imprimante.pageheight-imprimante.pageheight/100*taillegraphevertical)/2); bord_h:=bord_b; end; end; end else begin rap:=(yymax-yymin)/(xxmax-xxmin); if rap0 then begin retaillepangle(listeanglesatracer,nombreanglesatracer,0); nombreanglesatracer:=0; end; nombretotalsegment:=0; nombreenfant:=0; nombrenormale:=0; creeprayon(listerayonenfant,0); if nombrerayon>0 then for i:=1 to nombrerayon do if not( (listerayon[-1+i].couleur=clblack) and (unit222.unmilieudispersif or (nombrereseau>0))) then calculesegment0(listerayon[-1+i].ax, listerayon[-1+i].ay,listerayon[-1+i].kx,listerayon[-1+i].ky,listerayon[-1+i].anglepolaire,listerayon[-1+i].epaisseur, listerayon[-1+i].couleur,listerayon[-1+i].vav, listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment) else begin retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clred,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clgreen,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); retailleprayon(listerayonenfant,nombreenfant,nombreenfant+1); inc(nombreenfant); listerayonenfant[-1+nombreenfant].createenfant(listerayon[-1+i].ax,listerayon[-1+i].ay ,listerayon[-1+i].kx,listerayon[-1+i].ky,clblue,listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa,listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment,0); end; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listesourceponctuelle[-1+i].calculesegment; if nombreondeplane>0 then for i:=1 to nombreondeplane do listeondeplane[-1+i].calculesegment; if nombreenfant=0 then goto 3012; i:=0; 628: inc(i); calculesegment0(listerayonenfant[-1+i].ax, listerayonenfant[-1+i].ay,listerayonenfant[-1+i].kx,listerayonenfant[-1+i].ky,listerayonenfant[-1+i].anglepolaire, listerayonenfant[-1+i].epaisseur, listerayonenfant[-1+i].couleur,listerayonenfant[-1+i].vav, listerayonenfant[-1+i].vaa,listerayonenfant[-1+i].nombremaxenfant,listerayonenfant[-1+i].maxsegment); if i0 then for i:=1 to nombregroupe do listegroupe[-1+i].recalculeiso; if nombreprisme>0 then for i:=1 to nombreprisme do listeprisme[-1+i].imprime(hprinter); if nombrepolycercle>0 then for i:=1 to nombrepolycercle do listepolycercle[-1+i].imprime(hprinter); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do listepolyhedre[-1+i].imprime(hprinter); if nombresphere>0 then for i:=1 to nombresphere do listesphere[-1+i].imprime(hprinter); if nombrelec>0 then for i:=1 to nombrelec do listelec[-1+i].imprime(hprinter); if nombremiroirplan>0 then for i:=1 to nombremiroirplan do ListeMiroirPlan[-1+i].imprime(hprinter); if nombreReseau>0 then for i:=1 to nombreReseau do ListeReseau[-1+i].imprime(hprinter); if nombrefleche>0 then for i:=1 to nombrefleche do ListeFleche[-1+i].imprime(hprinter); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do ListeMiroirconique[-1+i].imprime(hprinter); if nombrerayon>0 then for i:=1 to nombrerayon do listerayon[-1+i].imprime(hprinter); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listesourceponctuelle[-1+i].imprime(hprinter); if nombreondeplane>0 then for i:=1 to nombreondeplane do listeondeplane[-1+i].imprime(hprinter); if nombremscopa>0 then for i:=1 to nombremscopa do listemscopa[-1+i].imprime(hprinter); if nombremscore>0 then for i:=1 to nombremscore do listemscore[-1+i].imprime(hprinter); if nombremscere>0 then for i:=1 to nombremscere do listemscere[-1+i].imprime(hprinter); if nombremscepa>0 then for i:=1 to nombremscepa do listemscepa[-1+i].imprime(hprinter); if nombrelmc>0 then for i:=1 to nombrelmc do listelmc[-1+i].imprime(hprinter); if nombrelmd>0 then for i:=1 to nombrelmd do listelmd[-1+i].imprime(hprinter); if nombreecran>0 then for i:=1 to nombreecran do listeecran[-1+i].imprime(hprinter); if nombreoeil>0 then for i:=1 to nombreoeil do listeoeil[-1+i].imprime(hprinter); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do listediaphragme[-1+i].imprime(hprinter); if nombrelsr>0 then for i:=1 to nombrelsr do listelsr[-1+i].imprime(hprinter); if nombremetre>0 then for i:=1 to nombremetre do listemetre[-1+i].imprime(hprinter); if nombreangle>0 then for i:=1 to nombreangle do listeangle[-1+i].imprime(hprinter); if nombretexte>0 then for i:=1 to nombretexte do listetexteaffiche[-1+i].imprime(hprinter); if nombreanglesatracer>0 then for i:=1 to nombreanglesatracer do listeanglesatracer[-1+i].imprimebis(hprinter); if nombregroupe>0 then for i:=1 to nombregroupe do listegroupe[-1+i].imprime(hprinter); if (nombrelmc+nombrelmd+nombremscopa+nombremscepa=0) then for i:=1 to nombresourceponctuelle do if listesourceponctuelle[-1+i].tracersurfacesonde then if not(listesourceponctuelle[-1+i].sourcevirtuelle) then if listesourceponctuelle[-1+i].nombrecheminsoptiques>0 then begin tt1:=listesourceponctuelle[-1+i].ray[1].anglepolaire; tt2:=listesourceponctuelle[-1+i].ray[listesourceponctuelle[-1+i].nombrederayon].anglepolaire; if tt20 then begin for j:=1 to listeondeplane[-1+i].nombrecheminsoptiques do begin optionsurfacesonde:=true; premierpointsurfacesonde:=true; cheminactuelaobtenir:=listeondeplane[-1+i].listecheminsoptiques[j]; for iii:=1 to maxrayonsrecherchesurfacesonde do begin calculesegment0(listeondeplane[-1+i].a1x+ (iii-1)*(listeondeplane[-1+i].a2x-listeondeplane[-1+i].a1x)/ (maxrayonsrecherchesurfacesonde-1), listeondeplane[-1+i].a1y+ (iii-1)*(listeondeplane[-1+i].a2y-listeondeplane[-1+i].a1y)/ (maxrayonsrecherchesurfacesonde-1), listeondeplane[-1+i].ray[1].kx, listeondeplane[-1+i].ray[1].ky, listeondeplane[-1+i].ray[1].anglepolaire ,1,listeondeplane[-1+i].couleur,'','',0,listeondeplane[-1+i].maxsegment); hprinter.trait(listesegment[-1+nombretotalsegment].a1x, listesegment[-1+nombretotalsegment].a1y, listesegment[-1+nombretotalsegment].a2x, listesegment[-1+nombretotalsegment].a2y,1, listesegment[-1+nombretotalsegment].couleur,psdot,pmcopy,true); end; end; end; nn2:=nombretotalsegment; nombretotalsegment:=nn1; ImprimeTousLesSegments(hprinter); printer.EndDoc; end; end; procedure TForm1.Miroirplan2Click(Sender: TObject); begin if modequelquechose then exit; if NombreMiroirPlan=maxmiroirplan then begin application.MessageBox(pchar(rsNombreMaxima3), pchar(rsAttention3), mb_ok); exit; end; with saisiemiroirplan do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirplan.boutonsup.enabled:=false; saisiemiroirplan.editx1.text:=''; saisiemiroirplan.editx2.text:=''; saisiemiroirplan.edity1.text:=''; saisiemiroirplan.edity2.text:=''; saisiemiroirplan.cochehachures.checked:=true; saisiemiroirplan.editepaisseur.Value:=epaisseurmiroirplan; saisiemiroirplan.colorgrid1.Selected :=(couleurmiroirplan); saisiemiroirplan.caption:= rsAjoutDUnMiro; saisiemiroirplan.log1.Caption:=unitelongueur; saisiemiroirplan.log2.Caption:=unitelongueur; saisiemiroirplan.log3.Caption:=unitelongueur; saisiemiroirplan.log4.Caption:=unitelongueur; if saisiemiroirplan.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Dupliquerunlment1Click(Sender: TObject); begin form_palette.boutondupliquerClick(Sender); end; procedure TForm1.boutondistanceClick(Sender: TObject); begin boutondistance.OnClick:=nil; form1.image1.Cursor:=crdefault; modedistance:=true; point1fait:=false; application.ProcessMessages; boutondistance.OnClick:=@boutondistanceclick; form1.image1.Cursor:=crpoint1; StatusBar1.Panels[2].text:=rsCliquerSurLO; desactiveboutons; Rafraichit; end; procedure TForm1.boutonangleClick(Sender: TObject); begin boutonangle.OnClick:=nil; form1.image1.Cursor:=crdefault; modeangle:=true; point1fait:=false; application.ProcessMessages; boutonangle.OnClick:=@boutonangleclick; form1.image1.Cursor:=crcentre; StatusBar1.Panels[2].text:=rsCliquerSurLe; desactiveboutons; Rafraichit; end; procedure TForm1.boutonrayonClick(Sender: TObject); begin if Nombrerayon=maxrayon then begin application.MessageBox(pchar(rsNombreMaxima8), pchar(rsAttention3), mb_ok); exit; end; boutonrayon.Enabled:=false; boutonrayon.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL34; ajoutrayon:=true; application.ProcessMessages; boutonrayon.OnClick:=@boutonrayonclick; desactiveboutons; end; procedure TForm1.boutonsphereClick(Sender: TObject); begin if Nombresphere=maxsphere then begin application.MessageBox(pchar(rsNombreMaxima9), pchar(rsAttention3), mb_ok); exit; end; boutonsphere.Enabled:=false; boutonsphere.OnClick:=nil; form1.image1.Cursor:=crcentre; form1.StatusBar1.Panels[2].text:=rsPositionnezL35; ajoutsphere:=true; application.ProcessMessages; boutonsphere.OnClick:=@boutonsphereclick; desactiveboutons; end; procedure TForm1.boutonprismeClick(Sender: TObject); begin if Nombreprisme=maxprisme then begin application.MessageBox(pchar(rsNombreMaxima2), pchar(rsAttention3), mb_ok); exit; end; boutonprisme.Enabled:=false; boutonprisme.OnClick:=nil; form1.image1.Cursor:=crcentreG; form1.StatusBar1.Panels[2].text:=rsPositionnezL36; ajoutprisme:=true; application.ProcessMessages; boutonprisme.OnClick:=@boutonprismeclick; desactiveboutons; end; procedure TForm1.cocheanglesChange(Sender: TObject); begin end; procedure TForm1.FormDeactivate(Sender: TObject); begin end; procedure TForm1.MenuItem10Click(Sender: TObject); begin form1.superposesimulation(sender,repertoire_simul_perso); end; procedure TForm1.MenuItem11Click(Sender: TObject); begin form1.superposesimulation(sender,repertoire_exemples); end; procedure TForm1.MenuItem12Click(Sender: TObject); begin form1.superposesimulation(sender,repertoire_actuel); end; procedure TForm1.MenuItem14Click(Sender: TObject); var v: THTMLBrowserHelpViewer; BrowserPath, BrowserParams: string; p: LongInt; URL: String; BrowserProcess: TProcessUTF8; begin v:=THTMLBrowserHelpViewer.Create(nil); try v.FindDefaultBrowser(BrowserPath,BrowserParams); //debugln(['Path=',BrowserPath,' Params=',BrowserParams]); url:='file:///'+repertoireexecutable+'historique.html'; p:=System.Pos('%s', BrowserParams); System.Delete(BrowserParams,p,2); System.Insert(URL,BrowserParams,p); // start browser BrowserProcess:=TProcessUTF8.Create(nil); try BrowserProcess.CommandLine:=BrowserPath+' '+BrowserParams; BrowserProcess.Execute; finally BrowserProcess.Free; end; finally v.Free; end; end; procedure TForm1.boutonpolyClick(Sender: TObject); begin if Nombrepolyhedre=maxpolyhedre then begin application.MessageBox(pchar(rsNombreMaxima10), pchar(rsAttention3), mb_ok); exit; end; boutonpoly.Enabled:=false; boutonpoly.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL37; ajoutpoly:=true; application.ProcessMessages; boutonpoly.OnClick:=@boutonpolyclick; desactiveboutons; with saisienombresommet do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; groupbox1.Caption:=rsSommetsDeCeP; spinedit1.MinValue:=3; end; if saisienombresommet.showmodal=mrcancel then begin form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; nbactsommet:=0; end; procedure TForm1.boutonmscopaClick(Sender: TObject); begin if NombreMscopa=maxMscopa then begin application.MessageBox(pchar(rsNombreMaxima11), pchar(rsAttention3), mb_ok); exit; end; boutonMscopa.Enabled:=false; boutonMscopa.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL38; ajoutMscopa:=true; application.ProcessMessages; boutonMscopa.OnClick:=@boutonMscopaclick; desactiveboutons; end; procedure TForm1.boutonmscoreClick(Sender: TObject); begin if Nombremscore=maxmscore then begin application.MessageBox(pchar(rsNombreMaxima12), pchar(rsAttention3), mb_ok); exit; end; boutonmscore.Enabled:=false; boutonmscore.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL39; ajoutmscore:=true; application.ProcessMessages; boutonmscore.OnClick:=@boutonmscoreclick; desactiveboutons; end; procedure TForm1.boutonmscereClick(Sender: TObject); begin if Nombremscere=maxmscere then begin application.MessageBox(pchar(rsNombreMaxima13), pchar(rsAttention3), mb_ok); exit; end; boutonmscere.Enabled:=false; boutonmscere.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL40; ajoutmscere:=true; application.ProcessMessages; boutonmscere.OnClick:=@boutonmscereclick; desactiveboutons; end; procedure TForm1.boutonmscepaClick(Sender: TObject); begin if Nombremscepa=maxmscepa then begin application.MessageBox(pchar(rsNombreMaxima14), pchar(rsAttention3), mb_ok); exit; end; boutonmscepa.Enabled:=false; boutonmscepa.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL41; ajoutmscepa:=true; application.ProcessMessages; boutonmscepa.OnClick:=@boutonmscepaclick; desactiveboutons; end; procedure TForm1.boutonlmcClick(Sender: TObject); begin if Nombrelmc=maxlmc then begin application.MessageBox(pchar(rsNombreMaxima15), pchar(rsAttention3), mb_ok); exit; end; boutonlmc.Enabled:=false; boutonlmc.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL42; ajoutlmc:=true; application.ProcessMessages; boutonlmc.OnClick:=@boutonlmcclick; desactiveboutons; end; procedure TForm1.boutonlmdClick(Sender: TObject); begin if Nombrelmd=maxlmd then begin application.MessageBox(pchar(rsNombreMaxima16), pchar(rsAttention3), mb_ok); exit; end; boutonlmd.Enabled:=false; boutonlmd.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL43; ajoutlmd:=true; application.ProcessMessages; boutonlmd.OnClick:=@boutonlmdclick; desactiveboutons; end; procedure TForm1.boutonspvClick(Sender: TObject); begin if Nombresourceponctuelle=maxsourceponctuelle then begin application.MessageBox(pchar(rsNombreMaxima17), pchar(rsAttention3), mb_ok); exit; end; boutonspv.Enabled:=false; boutonspv.OnClick:=nil; form1.image1.Cursor:=crSource; form1.StatusBar1.Panels[2].text:=rsPositionnezL44; ajoutsourceponctuelle:=true; genrevirtuel:=true; application.ProcessMessages; boutonspv.OnClick:=@boutonspvclick; desactiveboutons; end; procedure TForm1.boutonsourceponctuelleClick(Sender: TObject); begin if Nombresourceponctuelle=maxsourceponctuelle then begin application.MessageBox(pchar(rsNombreMaxima17), pchar(rsAttention3), mb_ok); exit; end; boutonsourceponctuelle.Enabled:=false; boutonsourceponctuelle.OnClick:=nil; form1.image1.Cursor:=crSource; form1.StatusBar1.Panels[2].text:=rsPositionnezL45; ajoutsourceponctuelle:=true; genrevirtuel:=false; application.ProcessMessages; boutonsourceponctuelle.OnClick:=@boutonsourceponctuelleclick; desactiveboutons; end; procedure TForm1.boutonondeplaneClick(Sender: TObject); begin if Nombreondeplane=maxondeplane then begin application.MessageBox(pchar(rsNombreMaxima18), pchar(rsAttention3), mb_ok); exit; end; boutonondeplane.Enabled:=false; boutonondeplane.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL46; ajoutondeplane:=true; application.ProcessMessages; boutonondeplane.OnClick:=@boutonondeplaneclick; desactiveboutons; end; procedure TForm1.RayonUnique1Click(Sender: TObject); begin if modequelquechose then exit; if Nombrerayon=maxrayon then begin application.MessageBox(pchar(rsNombreMaxima8), pchar(rsAttention3), mb_ok); exit; end; with saisierayon do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisierayon.boutonsup.enabled:=false; saisierayon.Spinenfantmax.value:=10; saisierayon.editx1.text:=''; saisierayon.editx2.text:=''; saisierayon.edity1.text:=''; saisierayon.edity2.text:=''; saisierayon.editvav.text:=''; saisierayon.editvaa.text:=''; saisierayon.editepaisseur.Value:=epaisseurrayon; saisierayon.radiocouleur.ItemIndex:=0; saisierayon.caption:= rsAjoutDUnRayo; saisierayon.log1.Caption:=unitelongueur; saisierayon.log2.Caption:=unitelongueur; saisierayon.log3.Caption:=unitelongueur; saisierayon.log4.Caption:=unitelongueur; if saisierayon.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Miroirsphriqueconvergent1Click(Sender: TObject); begin if modequelquechose then exit; if Nombremscopa=maxmscopa then begin application.MessageBox(pchar(rsNombreMaxima19), pchar(rsAttention3), mb_ok); exit; end; with saisiemiroirscopa do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscopa.checktrou.checked:=false; saisiemiroirscopa.editdiametretrou.enabled:=false; saisiemiroirscopa.editdiametretrou.text:='0'; saisiemiroirscopa.boutonsup.enabled:=false; saisiemiroirscopa.editx1.text:=''; saisiemiroirscopa.editx2.text:=''; saisiemiroirscopa.edity1.text:=''; saisiemiroirscopa.edity2.text:=''; saisiemiroirscopa.editfocale.text:=''; saisiemiroirscopa.cochehachures.checked:=true; saisiemiroirscopa.cocheaxe.checked:=true; saisiemiroirscopa.editepaisseur.Value:=epaisseurmscopa; saisiemiroirscopa.colorgrid1.selected:=couleurmscopa ; saisiemiroirscopa.gridaxe.selected:=(couleuraxemscopa) ; saisiemiroirscopa.caption:= rsAjoutDUnMiro2; saisiemiroirscopa.log1.Caption:=unitelongueur; saisiemiroirscopa.log2.Caption:=unitelongueur; saisiemiroirscopa.log3.Caption:=unitelongueur; saisiemiroirscopa.log4.Caption:=unitelongueur; saisiemiroirscopa.log5.Caption:=unitelongueur; saisiemiroirscopa.log6.Caption:=unitelongueur; if saisiemiroirscopa.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Miroirsphriqueconvexe1Click(Sender: TObject); begin if modequelquechose then exit; if Nombremscepa=maxmscepa then begin application.MessageBox(pchar(rsNombreMaxima3), pchar(rsAttention3), mb_ok); exit; end; with saisiemiroirscepa do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscepa.checktrou.checked:=false; saisiemiroirscepa.editdiametretrou.enabled:=false; saisiemiroirscepa.editdiametretrou.text:='0'; saisiemiroirscepa.boutonsup.enabled:=false; saisiemiroirscepa.editx1.text:=''; saisiemiroirscepa.editx2.text:=''; saisiemiroirscepa.edity1.text:=''; saisiemiroirscepa.edity2.text:=''; saisiemiroirscepa.editfocale.text:=''; saisiemiroirscepa.cochehachures.checked:=true; saisiemiroirscepa.cocheaxe.checked:=true; saisiemiroirscepa.editepaisseur.Value:=epaisseurmscepa; saisiemiroirscepa.colorgrid1.selected:=(couleurmscepa) ; saisiemiroirscepa.gridaxe.selected:=(couleuraxemscepa) ; saisiemiroirscepa.caption:= rsAjoutDUnMiro3; saisiemiroirscepa.log1.Caption:=unitelongueur; saisiemiroirscepa.log2.Caption:=unitelongueur; saisiemiroirscepa.log3.Caption:=unitelongueur; saisiemiroirscepa.log4.Caption:=unitelongueur; saisiemiroirscepa.log5.Caption:=unitelongueur; saisiemiroirscepa.log6.Caption:=unitelongueur; if saisiemiroirscepa.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Lentilleminceconvergente1Click(Sender: TObject); begin if modequelquechose then exit; if Nombrelmc=maxlmc then begin application.MessageBox(pchar(rsNombreMaxima20), pchar(rsAttention3), mb_ok); exit; end; with saisielentillemc do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielentillemc.boutonsup.enabled:=false; saisielentillemc.editx1.text:=''; saisielentillemc.editx2.text:=''; saisielentillemc.edity1.text:=''; saisielentillemc.edity2.text:=''; saisielentillemc.editfocale.text:=''; saisielentillemc.cocheaxe.checked:=true; saisielentillemc.editepaisseur.Value:=epaisseurlmc; saisielentillemc.colorgrid1.selected:=(couleurlmc) ; saisielentillemc.gridaxe.selected:=(couleuraxelmc) ; saisielentillemc.caption:= rsAjoutDUneLen; saisielentillemc.log1.Caption:=unitelongueur; saisielentillemc.log2.Caption:=unitelongueur; saisielentillemc.log3.Caption:=unitelongueur; saisielentillemc.log4.Caption:=unitelongueur; saisielentillemc.log5.Caption:=unitelongueur; if saisielentillemc.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Lentillemincedivergente1Click(Sender: TObject); begin if modequelquechose then exit; if Nombrelmd=maxlmd then begin application.MessageBox(pchar(rsNombreMaxima20), pchar(rsAttention3), mb_ok); exit; end; with saisielentillemd do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielentillemd.boutonsup.enabled:=false; saisielentillemd.editx1.text:=''; saisielentillemd.editx2.text:=''; saisielentillemd.edity1.text:=''; saisielentillemd.edity2.text:=''; saisielentillemd.editfocale.text:=''; saisielentillemd.cocheaxe.checked:=true; saisielentillemd.editepaisseur.Value:=epaisseurlmc; saisielentillemd.colorgrid1.selected:=(couleurlmc ); saisielentillemd.gridaxe.selected:=(couleuraxelmc) ; saisielentillemd.caption:= rsAjoutDUneLen2; saisielentillemd.log1.Caption:=unitelongueur; saisielentillemd.log2.Caption:=unitelongueur; saisielentillemd.log3.Caption:=unitelongueur; saisielentillemd.log4.Caption:=unitelongueur; saisielentillemd.log5.Caption:=unitelongueur; if saisielentillemd.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Lamesemirflchissante1Click(Sender: TObject); begin if modequelquechose then exit; if Nombrelsr=maxlsr then begin application.MessageBox(pchar(rsNombreMaxima21), pchar(rsAttention3), mb_ok); exit; end; with saisielsr do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielsr.boutonsup.enabled:=false; saisielsr.editx1.text:=''; saisielsr.editx2.text:=''; saisielsr.edity1.text:=''; saisielsr.edity2.text:=''; saisielsr.editepaisseur.Value:=epaisseurlsr; saisielsr.colorgrid1.selected:=(couleurlsr) ; saisielsr.caption:= rsAjoutDUneLam; saisielsr.log1.Caption:=unitelongueur; saisielsr.log2.Caption:=unitelongueur; saisielsr.log3.Caption:=unitelongueur; saisielsr.log4.Caption:=unitelongueur; if saisielsr.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Miroirsphriqueconcave1Click(Sender: TObject); begin if modequelquechose then exit; if Nombremscore=maxmscore then begin application.MessageBox(pchar(rsNombreMaxima22), pchar(rsAttention3), mb_ok); exit; end; with saisiemiroirscore do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscore.boutonsup.enabled:=false; saisiemiroirscore.checkobtu.Checked:=false; saisiemiroirscore.editx1.text:=''; saisiemiroirscore.editx2.text:=''; saisiemiroirscore.edity1.text:=''; saisiemiroirscore.edity2.text:=''; saisiemiroirscore.editrayoncourbure.text:=''; saisiemiroirscore.cochehachures.checked:=true; saisiemiroirscore.cocheaxe.checked:=true; saisiemiroirscore.editepaisseur.Value:=epaisseurmscore; saisiemiroirscore.colorgrid1.selected:=(couleurmscore) ; saisiemiroirscore.gridaxe.selected:=(couleuraxemscore) ; saisiemiroirscore.caption:= rsAjoutDUnMiro4; saisiemiroirscore.log1.Caption:=unitelongueur; saisiemiroirscore.log2.Caption:=unitelongueur; saisiemiroirscore.log3.Caption:=unitelongueur; saisiemiroirscore.log4.Caption:=unitelongueur; saisiemiroirscore.log5.Caption:=unitelongueur; saisiemiroirscore.cochetrou.checked:=false; saisiemiroirscore.editdiametretrou.text:='0'; if saisiemiroirscore.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Lentille1Click(Sender: TObject); begin if modequelquechose then exit; if Nombrelec=maxlec then begin application.MessageBox(pchar(rsNombreMaxima20),pchar( rsAttention3), mb_ok); exit; end; saisielentille.combomateriaux.items:=listemateriaux; saisielentille.combomateriaux.itemindex:=0; saisielentille.editnrouge.text:=listenrouge.strings[0]; saisielentille.editnbleu.text:=listenbleu.strings[0]; saisielentille.editnvert.text:=listenvert.strings[0]; with saisielentille do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisielentille.boutonsup.enabled:=false; saisielentille.edits1x.text:=''; saisielentille.edits2x.text:=''; saisielentille.edits1y.text:=''; saisielentille.edits2y.text:=''; saisielentille.editr1.text:=''; saisielentille.editr2.text:=''; saisielentille.editdiametre.text:=''; saisielentille.caption:= rsAjoutDUneLen3; saisielentille.colorgrid1.selected:=(couleurlec); saisielentille.log1.Caption:=unitelongueur; saisielentille.log2.Caption:=unitelongueur; saisielentille.log3.Caption:=unitelongueur; saisielentille.log4.Caption:=unitelongueur; saisielentille.log5.Caption:=unitelongueur; saisielentille.log6.Caption:=unitelongueur; saisielentille.log7.Caption:=unitelongueur; if saisielentille.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Miroirsphriqueconvexe2Click(Sender: TObject); begin if modequelquechose then exit; if Nombremscere=maxmscere then begin application.MessageBox(pchar(rsNombreMaxima22), pchar(rsAttention3), mb_ok); exit; end; with saisiemiroirscere do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirscere.boutonsup.enabled:=false; saisiemiroirscere.checkobtu.Checked:=false; saisiemiroirscere.editx1.text:=''; saisiemiroirscere.editx2.text:=''; saisiemiroirscere.edity1.text:=''; saisiemiroirscere.edity2.text:=''; saisiemiroirscere.editrayoncourbure.text:=''; saisiemiroirscere.cochehachures.checked:=true; saisiemiroirscere.cocheaxe.checked:=true; saisiemiroirscere.editepaisseur.Value:=epaisseurmscere; saisiemiroirscere.colorgrid1.selected:=(couleurmscere) ; saisiemiroirscere.gridaxe.selected:=(couleuraxemscere) ; saisiemiroirscere.caption:= rsAjoutDUnMiro5; saisiemiroirscere.log1.Caption:=unitelongueur; saisiemiroirscere.log2.Caption:=unitelongueur; saisiemiroirscere.log3.Caption:=unitelongueur; saisiemiroirscere.log4.Caption:=unitelongueur; saisiemiroirscere.log5.Caption:=unitelongueur; saisiemiroirscere.cochetrou.checked:=false; saisiemiroirscere.editdiametretrou.text:='0'; if saisiemiroirscere.showmodal=mrok then sauvevirtuel; end; procedure TForm1.boutonreseauClick(Sender: TObject); begin if Nombrereseau=maxreseau then begin application.MessageBox(pchar(rsNombreMaxima36), pchar(rsAttention3), mb_ok); exit; end; boutonreseau.Enabled:=false; boutonreseau.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL53; ajoutreseau:=true; application.ProcessMessages; boutonreseau.OnClick:=@boutonreseauclick; desactiveboutons; end; procedure TForm1.Miroircnique1Click(Sender: TObject); begin if modequelquechose then exit; if Nombremiroirconique=maxmiroirconique then begin application.MessageBox(pchar(rsNombreMaxima23), pchar(rsAttention3), mb_ok); exit; end; with saisiemiroirconique do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemiroirconique.boutonsup.enabled:=false; saisiemiroirconique.editfx.text:=''; saisiemiroirconique.editfy.text:=''; saisiemiroirconique.edite.text:=''; saisiemiroirconique.editp.text:=''; saisiemiroirconique.editt0.text:=''; saisiemiroirconique.editt1.text:=''; saisiemiroirconique.editt2.text:=''; saisiemiroirconique.checkhachures.checked:=true; saisiemiroirconique.checkaxefocal.checked:=true; saisiemiroirconique.checkconcave.checked:=true; saisiemiroirconique.colorgrid1.selected:=(couleurmiroirconique); saisiemiroirconique.gridaxe.selected:=(couleuraxemiroirconique) ; saisiemiroirconique.caption:= rsAjoutDUnMiro6; saisiemiroirconique.log1.Caption:=unitelongueur; saisiemiroirconique.log2.Caption:=unitelongueur; saisiemiroirconique.log3.Caption:=unitelongueur; if saisiemiroirconique.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Ecran1Click(Sender: TObject); begin if modequelquechose then exit; if Nombreecran=maxecran then begin application.MessageBox(pchar(rsNombreMaxima24), pchar(rsAttention3), mb_ok); exit; end; with saisieecran do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieecran.boutonsup.enabled:=false; saisieecran.editx1.text:=''; saisieecran.editx2.text:=''; saisieecran.edity1.text:=''; saisieecran.edity2.text:=''; saisieecran.editepaisseur.Value:=epaisseurecran; saisieecran.colorgrid1.selected:=(couleurecran) ; saisieecran.caption:= rsAjoutDUnCran; saisieecran.log1.Caption:=unitelongueur; saisieecran.log2.Caption:=unitelongueur; saisieecran.log3.Caption:=unitelongueur; saisieecran.log4.Caption:=unitelongueur; if saisieecran.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Diaphragme1Click(Sender: TObject); begin if modequelquechose then exit; if Nombrediaphragme=maxdiaphragme then begin application.MessageBox(pchar(rsNombreMaxima25), pchar(rsAttention3), mb_ok); exit; end; with saisiediaphragme do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiediaphragme.boutonsup.enabled:=false; saisiediaphragme.editcx.text:=''; saisiediaphragme.editcy.text:=''; saisiediaphragme.editt.text:=''; saisiediaphragme.editrint.text:=''; saisiediaphragme.editrext.text:=''; saisiediaphragme.spinedit1.Value:=epaisseurdiaphragme; saisiediaphragme.colorgrid1.selected:=(couleurdiaphragme) ; saisiediaphragme.caption:= rsAjoutDUnDiap; saisiediaphragme.log1.Caption:=unitelongueur; saisiediaphragme.log2.Caption:=unitelongueur; saisiediaphragme.log3.Caption:=unitelongueur; saisiediaphragme.log4.Caption:=unitelongueur; if saisiediaphragme.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Sphrerfractante1Click(Sender: TObject); begin if modequelquechose then exit; if Nombresphere=maxsphere then begin application.MessageBox(pchar(rsNombreMaxima9), pchar(rsAttention3), mb_ok); exit; end; saisiesph.combomateriaux.items:=listemateriaux; saisiesph.combomateriaux.itemindex:=0; saisiesph.editnrouge.text:=listenrouge.strings[0]; saisiesph.editnbleu.text:=listenbleu.strings[0]; saisiesph.editnvert.text:=listenvert.strings[0]; with saisiesph do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiesph.editnrouge.text:=floattostr(1.5); saisiesph.editnvert.text:=floattostr(1.6); saisiesph.editnbleu.text:=floattostr(1.7); saisiesph.log1.Caption:=unitelongueur; saisiesph.log2.Caption:=unitelongueur; saisiesph.log3.Caption:=unitelongueur; saisiesph.colorgrid1.selected:= (couleursphere); saisiesph.radiosortant.ItemIndex:=1; saisiesph.radioentrant.ItemIndex:=1; saisiesph.boutonsup.enabled:=false; if saisiesph.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Polysphrerfractante1Click(Sender: TObject); var i:integer; begin if modequelquechose then exit; if Nombrepolycercle=maxpolycercle then begin application.MessageBox(pchar(rsNombreMaxima26), pchar(rsAttention3), mb_ok); exit; end; saisienombresommet.groupbox1.caption:=rsSommetsDeCet; with saisienombresommet do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; spinedit1.MinValue:=2; end; saisienombresommet.showmodal; for i:=1 to maxsommet do begin ttpoly[i].ax:=0; ttpoly[i].ay:=0; youri[i]:=false; helena[i]:=true; selene[i]:=0; end; saisiepolycercle.combomateriaux.items:=listemateriaux; saisiepolycercle.combomateriaux.itemindex:=0; saisiepolycercle.editnrouge.text:=listenrouge.strings[0]; saisiepolycercle.editnbleu.text:=listenbleu.strings[0]; saisiepolycercle.editnvert.text:=listenvert.strings[0]; with saisiepolycercle do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiepolycercle.log1.Caption:=unitelongueur; saisiepolycercle.log2.Caption:=unitelongueur; saisiepolycercle.log3.Caption:=unitelongueur; saisiepolycercle.editnrouge.text:=floattostr(1.5); saisiepolycercle.editnvert.text:=floattostr(1.6); saisiepolycercle.editnbleu.text:=floattostr(1.7); saisiepolycercle.ComboBox1.Items.Clear; for i:=1 to nbpoly do saisiepolycercle.ComboBox1.Items.Add(Format(rsSommet, [inttostr(i)])); saisiepolycercle.ComboBox1.Itemindex:=0; saisiepolycercle.editx.text:=floattostr(ttpoly[1].ax); saisiepolycercle.edity.text:=floattostr(ttpoly[1].ay); saisiepolycercle.editrayon.text:=floattostr(selene[1]); if youri[1] then saisiepolycercle.radiorectiligne.ItemIndex:=0 else saisiepolycercle.radiorectiligne.ItemIndex:=1; if helena[1] then saisiepolycercle.radiorentrant.ItemIndex:=0 else saisiepolycercle.radiorectiligne.ItemIndex:=1; if tavarich[1] then saisiepolycercle.radiogroupaigu.ItemIndex:=0 else saisiepolycercle.radiogroupaigu.ItemIndex:=1; saisiepolycercle.colorgrid1.selected:=(couleurpolycercle); saisiepolycercle.radiosortant.ItemIndex:=1; saisiepolycercle.radioentrant.ItemIndex:=1; saisiepolycercle.boutonsup.enabled:=false; if saisiepolycercle.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Polyhdrerfractant1Click(Sender: TObject); var i:integer; begin if modequelquechose then exit; if Nombrepolyhedre=maxpolyhedre then begin application.MessageBox(pchar(rsNombreMaxima27), pchar(rsAttention3), mb_ok); exit; end; with saisienombresommet do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; spinedit1.MinValue:=3; groupbox1.Caption:=rsSommetsDeCeP; end; saisienombresommet.showmodal; for i:=1 to maxsommet do begin ttpoly[i].ax:=0; ttpoly[i].ay:=0; end; saisiepolyhedre.combomateriaux.items:=listemateriaux; saisiepolyhedre.combomateriaux.itemindex:=0; saisiepolyhedre.editnrouge.text:=listenrouge.strings[0]; saisiepolyhedre.editnbleu.text:=listenbleu.strings[0]; saisiepolyhedre.editnvert.text:=listenvert.strings[0]; with saisiepolyhedre do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiepolyhedre.boutonsup.enabled:=false; saisiepolyhedre.ComboBox1.Items.Clear; for i:=1 to nbpoly do saisiepolyhedre.ComboBox1.Items.Add(Format(rsSommet, [inttostr(i)])); saisiepolyhedre.ComboBox1.Itemindex:=0; saisiepolyhedre.editx.text:=floattostr(ttpoly[1].ax); saisiepolyhedre.edity.text:=floattostr(ttpoly[1].ay); saisiepolyhedre.log1.Caption:=unitelongueur; saisiepolyhedre.log2.Caption:=unitelongueur; saisiepolyhedre.colorgrid1.selected:=(couleurpolyhedre); saisiepolyhedre.radiosortant.ItemIndex:=1; saisiepolyhedre.radioentrant.ItemIndex:=1; if saisiepolyhedre.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Sourceponctuelle1Click(Sender: TObject); begin if modequelquechose then exit; if Nombresourceponctuelle=maxsourceponctuelle then begin application.MessageBox(pchar(rsNombreMaxima28), pchar(rsAttention3), mb_ok); exit; end; with saisiespp do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiespp.spinmaxenfant.value:=10; saisiespp.boutonsup.enabled:=false; saisiespp.spinnombrerayons.Value:=5; saisiespp.editlistechemins.text:=''; saisiespp.cochesurfacesonde.checked:=false; saisiespp.editx1.text:=''; saisiespp.editx2.text:=''; saisiespp.edity1.text:=''; saisiespp.edity2.text:=''; saisiespp.editsx.text:=''; saisiespp.editsy.text:=''; saisiespp.editvaa.text:=''; saisiespp.editvav.text:=''; saisiespp.editepaisseur.Value:=epaisseursourceponctuelle; saisiespp.radiovirtuelle.ItemIndex:=0; saisiespp.radiocouleur.ItemIndex:=0; saisiespp.caption:= rsAjoutDUneSou; saisiespp.log1.Caption:=unitelongueur; saisiespp.log2.Caption:=unitelongueur; saisiespp.log3.Caption:=unitelongueur; saisiespp.log4.Caption:=unitelongueur; saisiespp.log5.Caption:=unitelongueur; saisiespp.log6.Caption:=unitelongueur; if saisiespp.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Ondeplane1Click(Sender: TObject); begin if modequelquechose then exit; if Nombreondeplane=maxondeplane then begin application.MessageBox(pchar(rsNombreMaxima29), pchar(rsAttention3), mb_ok); exit; end; with saisieopp do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieopp.spinmaxenfant.value:=10; saisieopp.boutonsup.enabled:=false; saisieopp.spinnombrerayons.Value:=5; saisieopp.editx1.text:=''; saisieopp.editx2.text:=''; saisieopp.edity1.text:=''; saisieopp.edity2.text:=''; saisieopp.editsx.text:=''; saisieopp.editsy.text:=''; saisieopp.editvaa.text:=''; saisieopp.editvav.text:=''; saisieopp.editepaisseur.Value:=epaisseurondeplane; saisieopp.cochesurfaces.Checked:=false; saisieopp.editlistechemins.text:=''; saisieopp.radiocouleur.ItemIndex:=0; saisieopp.caption:= rsAjoutDUneCet; saisieopp.log1.Caption:=unitelongueur; saisieopp.log2.Caption:=unitelongueur; saisieopp.log3.Caption:=unitelongueur; saisieopp.log4.Caption:=unitelongueur; saisieopp.log5.Caption:=unitelongueur; saisieopp.log6.Caption:=unitelongueur; if saisieopp.showmodal=mrok then sauvevirtuel; end; procedure tform1.metazero; begin if modequelquechose then exit; couleurfondsimulation:=clwhite; indice_vert_par_defaut:=1; indice_bleu_par_defaut:=1; indice_rouge_par_defaut:=1; positionempennage:=500; tailleempennage:=5; FreePMiroirPlan(ListeMiroirPlan,nombremiroirplan); FreePreseau(Listereseau,nombrereseau); freepfleche(listefleche,nombrefleche); FreePecran(Listeecran,nombreecran); freepdiaphragme(listediaphragme,nombrediaphragme); freeplsr(listelsr,nombrelsr); freeppolyhedre(listepolyhedre,nombrepolyhedre); freepprisme(listeprisme,nombreprisme); freeppolycercle(listepolycercle,nombrepolycercle); freepoeil(listeoeil,nombreoeil); freePMscopa(ListeMscopa,nombreMscopa); freepgroupe(listegroupe,nombregroupe); freePMscepa(ListeMscepa,nombreMscepa); freePMscere(ListeMscere,nombreMscere); freepMscore(ListeMscore,nombreMscore); freepLmc(ListeLmc,nombreLmc); freeplec(listelec,nombrelec); freepmiroirconique(listemiroirconique,nombremiroirconique); freepLmd(ListeLmd,nombreLmd); freeptexteaffiche(listetexteaffiche,nombretexte); freepRayon(ListeRayon,nombreRayon); freepSourcePonctuelle(ListeSourcePonctuelle,nombreSourcePonctuelle); freepOndePlane(ListeOndePlane,nombreOndePlane); freepsphere(listesphere,nombresphere); freepmetre(listemetre,nombremetre); freepangle(listeangle,nombreangle); freepangle(listeanglesatracer,nombreanglesatracer); creePMiroirPlan(listemiroirplan,0); creePreseau(listereseau,0);creepfleche(listefleche,0); creePEcran(listeecran,0); CreePpolyhedre(listepolyhedre,0); CreePprisme(listeprisme,0); creeppolycercle(listepolycercle,0); CreePOeil(listeoeil,0); creeplsr(listelsr,0); creepsphere(listesphere,0); creePMscopa(ListeMscopa,0); creepmetre(listemetre,0); creepangle(listeangle,0); creePMscepa(ListeMscepa,0); creepmiroirconique(listemiroirconique,0); creePMscore(ListeMscore,0); creeptexteaffiche(listetexteaffiche,0); creePMscere(ListeMscere,0); creepdiaphragme(listediaphragme,0); creePlmc(Listelmc,0); creeplec(listelec,0); creePlmd(Listelmd,0); creepangle(listeanglesatracer,0); creePrayon(Listerayon,0); creepgroupe(listegroupe,0); creePSourcePonctuelle(ListeSourcePonctuelle,0); creePOndePlane(ListeOndePlane,0); maxrayonsrecherchesurfacesonde:=20; nomsauvegarde:=''; unitelongueur:=rsMm; fantomespresents:=false; modifie:=false; formediteur.memo1.Lines.clear; commentaire_change:=false; formediteur.WindowState:=wsminimized; formediteur.Caption:=rsCommentaires3; nombrerayon:=0; nombremiroirplan:=0; nombrereseau:=0; nombreecran:=0; nombremiroirconique:=0; nombreMscopa:=0; nombreMscepa:=0; nombrelmc:=0; nombrelec:=0; nombrelmd:=0; nombrefleche:=0; nombreoeil:=0; nombregroupe:=0; nombreMscore:=0; nombreMscere:=0; nombresourceponctuelle:=0; nombreondeplane:=0; nombrelsr:=0; nombrepolyhedre:=0; nombrepolycercle:=0; nombresphere:=0; nombremetre:=0; nombretexte:=0; nombrediaphragme:=0; nombreprisme:=0; nombreangle:=0; decimalesangles:=0; sa_hauteur:=hauteurinitialeimage1; sa_largeur:=largeurinitialeimage1; sa_respect:=true; xxmin:=0; xxmax:=abs(sa_largeur); yymin:=0; yymax:=abs(sa_hauteur); rapportactuel:=(yymax-yymin)/(xxmax-xxmin); tracergrille:=false; attractiongrille:=false; optionnormale:=true; optionangles:=false; N7.Checked:=optionnormale; cochegrille.Checked:=tracergrille; cocheattraction.checked:=attractiongrille; cochenormale.checked:=optionnormale; afficherlagrille1.Checked:=tracergrille; Afficherlesangles1.checked:=optionangles; cocheangles.checked:=optionangles; grillex:=xxmax/20; grilley:=yymax/20; grillex:=int(grillex*1.001/puissance(10,partieentiere(log10(grillex))))* puissance(10,partieentiere(log10(grillex))); grilley:=int(grilley*1.001/puissance(10,partieentiere(log10(grilley))))* puissance(10,partieentiere(log10(grilley))); respectrapport:=sa_respect; form1.retaille_image1; form1.Caption:=Format(rsEspaceDeTrav2, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax)]); Rafraichit; end; procedure TForm1.Nouveau1Click(Sender: TObject); label 3205; begin if modequelquechose then exit; if ((nombrequelquechose<>0) and (modifie or commentaire_change)) then if application.MessageBox( pchar(rsLaSimulation2), pchar(rsAttention4), MB_YESNO)=IDNO then exit; nombre_etats_sauvegardes:=0; niveau_max_sauvegarde:=0; rtablir1.enabled:=false; refaire1.Enabled:=false; FreePMiroirPlan(ListeMiroirPlan,nombremiroirplan); FreePreseau(Listereseau,nombrereseau); freepfleche(listefleche,nombrefleche); FreePecran(Listeecran,nombreecran); freepdiaphragme(listediaphragme,nombrediaphragme); freeplsr(listelsr,nombrelsr); freeppolyhedre(listepolyhedre,nombrepolyhedre); freepprisme(listeprisme,nombreprisme); freeppolycercle(listepolycercle,nombrepolycercle); freepoeil(listeoeil,nombreoeil); freePMscopa(ListeMscopa,nombreMscopa); freepgroupe(listegroupe,nombregroupe); freePMscepa(ListeMscepa,nombreMscepa); freePMscere(ListeMscere,nombreMscere); freepMscore(ListeMscore,nombreMscore); freepLmc(ListeLmc,nombreLmc); freeplec(listelec,nombrelec); freepmiroirconique(listemiroirconique,nombremiroirconique); freepLmd(ListeLmd,nombreLmd); freeptexteaffiche(listetexteaffiche,nombretexte); freepRayon(ListeRayon,nombreRayon); freepSourcePonctuelle(ListeSourcePonctuelle,nombreSourcePonctuelle); freepOndePlane(ListeOndePlane,nombreOndePlane); freepsphere(listesphere,nombresphere); freepmetre(listemetre,nombremetre); freepangle(listeangle,nombreangle); freepangle(listeanglesatracer,nombreanglesatracer); creePMiroirPlan(listemiroirplan,0); creePreseau(listereseau,0); creepfleche(listefleche,0); creePEcran(listeecran,0); CreePpolyhedre(listepolyhedre,0); CreePprisme(listeprisme,0); creeppolycercle(listepolycercle,0); CreePOeil(listeoeil,0); creeplsr(listelsr,0); creepsphere(listesphere,0); creePMscopa(ListeMscopa,0); creepmetre(listemetre,0); creepangle(listeangle,0); creePMscepa(ListeMscepa,0); creepmiroirconique(listemiroirconique,0); creePMscore(ListeMscore,0); creeptexteaffiche(listetexteaffiche,0); creePMscere(ListeMscere,0); creepdiaphragme(listediaphragme,0); creePlmc(Listelmc,0); creeplec(listelec,0); creePlmd(Listelmd,0); creepangle(listeanglesatracer,0); creePrayon(Listerayon,0); creepgroupe(listegroupe,0); creePSourcePonctuelle(ListeSourcePonctuelle,0); creePOndePlane(ListeOndePlane,0); maxrayonsrecherchesurfacesonde:=20; nomsauvegarde:=''; unitelongueur:=rsMm; fantomespresents:=false; modifie:=false; formediteur.memo1.Lines.clear; commentaire_change:=false; formediteur.WindowState:=wsminimized; formediteur.Caption:=rsCommentaires3; nombrerayon:=0; nombremiroirplan:=0; nombrereseau:=0; nombreecran:=0; nombremiroirconique:=0; nombreMscopa:=0; nombreMscepa:=0; nombrelmc:=0; nombrelec:=0; nombrelmd:=0; nombrefleche:=0; nombreoeil:=0; nombregroupe:=0; nombreMscore:=0; nombreMscere:=0; nombresourceponctuelle:=0; nombreondeplane:=0; nombrelsr:=0; nombrepolyhedre:=0; nombrepolycercle:=0; nombresphere:=0; nombremetre:=0; nombretexte:=0; nombrediaphragme:=0; nombreangle:=0; decimalesangles:=0; nombreprisme:=0; form1.WindowState:=wsmaximized; with saisiechoix do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; edit_indice_vert_par_defaut.text:='1'; edit_indice_bleu_par_defaut.text:='1'; edit_indice_rouge_par_defaut.text:='1'; end; try saisiechoix.radiochoix.Items.Delete(2); except end; saisiechoix.showmodal; try indice_vert_par_defaut:=abs(strtofloat(saisiechoix.Edit_indice_vert_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal), mb_ok); indice_vert_par_defaut:=1; end; try indice_bleu_par_defaut:=abs(strtofloat(saisiechoix.Edit_indice_bleu_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal2), mb_ok); indice_bleu_par_defaut:=1; end; try indice_rouge_par_defaut:=abs(strtofloat(saisiechoix.Edit_indice_rouge_par_defaut.Text)); except application.MessageBox(pchar(rsAttention), pchar(rsValeurIllGal3), mb_ok); indice_rouge_par_defaut:=1; end; case saisiechoix.radiochoix.ItemIndex of 0: begin sa_hauteur:=hauteurinitialeimage1; sa_largeur:=largeurinitialeimage1; sa_xxmin:=0; sa_yymin:=0; sa_xxmax:=sa_largeur; sa_yymax:=sa_hauteur; sa_respect:=true; goto 3205; end; 1: begin end; end; with saisieespacetravail do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieespacetravail.editxxmax.Text:=floattostr(largeurinitialeimage1); saisieespacetravail.edityymax.Text:=floattostr(hauteurinitialeimage1); saisieespacetravail.statrapportideal.caption:=floattostr(rapportideal); sa_hauteur:=hauteurinitialeimage1; sa_largeur:=largeurinitialeimage1; saisieespacetravail.statrapportactuel.caption:=floattostr(rapportideal); saisieespacetravail.showmodal; 3205: xxmin:=sa_xxmin; xxmax:=sa_xxmax; yymin:=sa_yymin; yymax:=sa_yymax; rapportactuel:=(yymax-yymin)/(xxmax-xxmin); tracergrille:=false; attractiongrille:=false; optionnormale:=true; optionangles:=false; N7.Checked:=optionnormale; cochegrille.Checked:=tracergrille; cocheattraction.checked:=attractiongrille; cochenormale.checked:=optionnormale; afficherlagrille1.Checked:=tracergrille; Afficherlesangles1.checked:=optionangles; cocheangles.checked:=optionangles; grillex:=(xxmax-xxmin)/20; grilley:=(yymax-yymin)/20; grillex:=int(grillex*1.001/puissance(10,partieentiere(log10(grillex))))* puissance(10,partieentiere(log10(grillex))); grilley:=int(grilley*1.001/puissance(10,partieentiere(log10(grilley))))* puissance(10,partieentiere(log10(grilley))); respectrapport:=sa_respect; form1.retaille_image1; form1.Caption:=Format(rsEspaceDeTrav, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax)]); application.ProcessMessages; form1.image1.refresh; application.ProcessMessages; nombre_etats_sauvegardes:=0; niveau_max_sauvegarde:=0; sauvevirtuel; Rafraichit; end; procedure enregistrer(nomfichier:string); var f:textfile; i,j:integer; begin AssignFile(F, UTF8ToSys(nomfichier)); rewrite(f); writeln(f,'NE PAS MODIFIER CE FICHIER'); writeln(f,'VERSION'); writeln(f,versionprogramme); { so on modifie le format des fichiers, il faut modifier le numero de version du programme; lors de la lecture des fichiuers, il faut adapter la lecture au numero de version, de facon que les anciens fichiers puissent etre relus avec les nouvelles versions de programme} writeln(f,xxmin,' ',xxmax,' ',yymin,' ',yymax); writeln(f,respectrapport); writeln(f,'UNITE'); writeln(f,unitelongueur); writeln(f,'OPTIONS GRILLE'); writeln(f,tracergrille); writeln(f,attractiongrille); writeln(f,grillex,grilley); writeln(f,'OPTIONS NORMALES'); writeln(f,optionnormale); writeln(f,optionangles); writeln(f,pourcentagenormale); writeln(f,couleurnormale); writeln(f,epaisseurnormale); writeln(f,decimalesangles); writeln(f,'OPTIONS SEGMENTS FANTOMES'); writeln(f,fantomespresents); writeln(f,listefantomes); writeln(f,'NOMBRE POINTS TRACE SURFACE ONDE'); writeln(f,maxrayonsrecherchesurfacesonde); writeln(f,'INDICES PAR DEFAUT'); writeln(f,indice_vert_par_defaut); writeln(f,indice_bleu_par_defaut); writeln(f,indice_rouge_par_defaut); writeln(f,'LAMBDA'); writeln(f,longueur_donde_red); writeln(f,longueur_donde_blue); writeln(f,longueur_donde_green); writeln(f,'Nombre de miroirs plans:'); writeln(f,nombremiroirplan); if nombremiroirplan>0 then for i:=1 to nombremiroirplan do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listemiroirplan[-1+i].a1x,' ',listemiroirplan[-1+i].a1y,' ',listemiroirplan[-1+i].a2x,' ', listemiroirplan[-1+i].a2y,' ',listemiroirplan[-1+i].epaisseur,' ',listemiroirplan[-1+i].couleur); writeln(f,listemiroirplan[-1+i].hachures); end; writeln(f,'Nombre de reseaux:'); writeln(f,nombreReseau); if nombreReseau>0 then for i:=1 to nombreReseau do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listeReseau[-1+i].a1x,listeReseau[-1+i].a1y,listeReseau[-1+i].a2x, listeReseau[-1+i].a2y); writeln(f,listeReseau[-1+i].epaisseur); writeln(f,listeReseau[-1+i].couleur); writeln(f,listeReseau[-1+i].pas); writeln(f,listeReseau[-1+i].entransmission); writeln(f,listeReseau[-1+i].hachures); writeln(f,listeReseau[-1+i].ordre_min); writeln(f,listeReseau[-1+i].ordre_max); end; writeln(f,'Nombre de miroirs concaves paraxiaux:'); writeln(f,nombremscopa); if nombremscopa>0 then for i:=1 to nombremscopa do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listemscopa[-1+i].a1x,' ',listemscopa[-1+i].a1y,' ',listemscopa[-1+i].a2x,' ', listemscopa[-1+i].a2y,' ',listemscopa[-1+i].focale,' ', listemscopa[-1+i].epaisseur,' ',listemscopa[-1+i].couleur,' ', listemscopa[-1+i].couleuraxe); writeln(f,listemscopa[-1+i].hachures); writeln(f,listemscopa[-1+i].axefocal); writeln(f,listemscopa[-1+i].trou); writeln(f,listemscopa[-1+i].diametretrou); end; writeln(f,'Nombre de miroirs convexes paraxiaux:'); writeln(f,nombremscepa); if nombremscepa>0 then for i:=1 to nombremscepa do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listemscepa[-1+i].a1x,' ',listemscepa[-1+i].a1y,' ',listemscepa[-1+i].a2x,' ', listemscepa[-1+i].a2y,' ',listemscepa[-1+i].focale,' ', listemscepa[-1+i].epaisseur,' ',listemscepa[-1+i].couleur,' ', listemscepa[-1+i].couleuraxe); writeln(f,listemscepa[-1+i].hachures); writeln(f,listemscepa[-1+i].axefocal); writeln(f,listemscepa[-1+i].trou); writeln(f,listemscepa[-1+i].diametretrou); end; writeln(f,'Nombre de miroirs concaves reels:'); writeln(f,nombremscore); if nombremscore>0 then for i:=1 to nombremscore do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listemscore[-1+i].a1x,' ',listemscore[-1+i].a1y,' ',listemscore[-1+i].a2x,' ', listemscore[-1+i].a2y,' ',listemscore[-1+i].rayoncourbure,' ', listemscore[-1+i].epaisseur,' ',listemscore[-1+i].couleur,' ', listemscore[-1+i].couleuraxe); writeln(f,listemscore[-1+i].hachures); writeln(f,listemscore[-1+i].axefocal); writeln(f,listemscore[-1+i].aigu); writeln(f,listemscore[-1+i].trou); writeln(f,listemscore[-1+i].diametretrou); end; writeln(f,'Nombre de miroirs convexes reels:'); writeln(f,nombremscere); if nombremscere>0 then for i:=1 to nombremscere do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listemscere[-1+i].a1x,' ',listemscere[-1+i].a1y,' ',listemscere[-1+i].a2x,' ', listemscere[-1+i].a2y,' ',listemscere[-1+i].rayoncourbure,' ', listemscere[-1+i].epaisseur,' ',listemscere[-1+i].couleur,' ', listemscere[-1+i].couleuraxe); writeln(f,listemscere[-1+i].hachures); writeln(f,listemscere[-1+i].axefocal); writeln(f,listemscere[-1+i].aigu); writeln(f,listemscere[-1+i].trou); writeln(f,listemscere[-1+i].diametretrou); end; writeln(f,'Nombre de lentiles minces convergentes:'); writeln(f,nombrelmc); if nombrelmc>0 then for i:=1 to nombrelmc do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listelmc[-1+i].a1x,' ',listelmc[-1+i].a1y,' ',listelmc[-1+i].a2x,' ', listelmc[-1+i].a2y,' ',listelmc[-1+i].focale,' ', listelmc[-1+i].epaisseur,' ',listelmc[-1+i].couleur,' ', listelmc[-1+i].couleuraxe); writeln(f,listelmc[-1+i].axefocal); end; writeln(f,'Nombre de lentiles minces divergentes:'); writeln(f,nombrelmd); if nombrelmd>0 then for i:=1 to nombrelmd do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listelmd[-1+i].a1x,' ',listelmd[-1+i].a1y,' ',listelmd[-1+i].a2x,' ', listelmd[-1+i].a2y,' ',listelmd[-1+i].focale,' ', listelmd[-1+i].epaisseur,' ',listelmd[-1+i].couleur,' ', listelmd[-1+i].couleuraxe); writeln(f,listelmd[-1+i].axefocal); end; writeln(f,'Nombre de rayons:'); writeln(f,nombrerayon); if nombrerayon>0 then for i:=1 to nombrerayon do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listerayon[-1+i].ax,' ',listerayon[-1+i].ay,' ',listerayon[-1+i].kx,' ', listerayon[-1+i].ky,' ',listerayon[-1+i].couleur,' ',listerayon[-1+i].epaisseur,' ', listerayon[-1+i].nombremaxenfant); writeln(f,listerayon[-1+i].vav); writeln(f,listerayon[-1+i].vaa); writeln(f,'Nombre maximal de segments:'); writeln(f,listerayon[-1+i].maxsegment); end; writeln(f,'Nombre de sources ponctuelles:'); writeln(f,nombresourceponctuelle); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listesourceponctuelle[-1+i].nombrederayon,' ', listesourceponctuelle[-1+i].sx,' ', listesourceponctuelle[-1+i].sy,' ', listesourceponctuelle[-1+i].a1x,' ', listesourceponctuelle[-1+i].a1y,' ', listesourceponctuelle[-1+i].a2x,' ', listesourceponctuelle[-1+i].a2y,' ', listesourceponctuelle[-1+i].couleur,' ', listesourceponctuelle[-1+i].epaisseur,' ', listesourceponctuelle[-1+i].maxenfantparrayon); writeln(f,listesourceponctuelle[-1+i].vav); writeln(f,listesourceponctuelle[-1+i].vaa); writeln(f,listesourceponctuelle[-1+i].sourcevirtuelle); writeln(f,listesourceponctuelle[-1+i].tracersurfacesonde); writeln(f,listesourceponctuelle[-1+i].listechemins); writeln(f,'Nombre maximal de segments par rayon:'); writeln(f,listesourceponctuelle[-1+i].maxsegment); end; writeln(f,'Nombre d''ondes planes:'); writeln(f,nombreondeplane); if nombreondeplane>0 then for i:=1 to nombreondeplane do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listeondeplane[-1+i].nombrederayon,' ', listeondeplane[-1+i].sx,' ', listeondeplane[-1+i].sy,' ', listeondeplane[-1+i].a1x,' ', listeondeplane[-1+i].a1y,' ', listeondeplane[-1+i].a2x,' ', listeondeplane[-1+i].a2y,' ', listeondeplane[-1+i].couleur,' ', listeondeplane[-1+i].epaisseur,' ', listeondeplane[-1+i].maxenfantparrayon); writeln(f,listeondeplane[-1+i].vav); writeln(f,listeondeplane[-1+i].vaa); writeln(f,listeondeplane[-1+i].tracersurfacesonde); writeln(f,listeondeplane[-1+i].listechemins); writeln(f,'Nombre maximal de segments par rayon:'); writeln(f,listeondeplane[-1+i].maxsegment); end; writeln(f,'Nombre d''ecrans:'); writeln(f,nombreecran); if nombreecran>0 then for i:=1 to nombreecran do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listeecran[-1+i].a1x,' ',listeecran[-1+i].a1y,' ',listeecran[-1+i].a2x,' ', listeecran[-1+i].a2y,' ',listeecran[-1+i].epaisseur,' ',listeecran[-1+i].couleur); end; writeln(f,'Nombre de diaphragmes:'); writeln(f,nombrediaphragme); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listediaphragme[-1+i].cx,' ',listediaphragme[-1+i].cy,' ',listediaphragme[-1+i].anglepolaire,' ', listediaphragme[-1+i].rint,listediaphragme[-1+i].rext, ' ',listediaphragme[-1+i].epaisseur,' ',listediaphragme[-1+i].couleur); end; writeln(f,'Nombre de lames semi reflechissantes:'); writeln(f,nombrelsr); if nombrelsr>0 then for i:=1 to nombrelsr do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listelsr[-1+i].a1x,' ',listelsr[-1+i].a1y,' ',listelsr[-1+i].a2x,' ', listelsr[-1+i].a2y,' ',listelsr[-1+i].epaisseur,' ',listelsr[-1+i].couleur); end; writeln(f,'Nombre de polyhedres:'); writeln(f,nombrepolyhedre); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listepolyhedre[-1+i].nombresommet); for j:=1 to listepolyhedre[-1+i].nombresommet do writeln(f,listepolyhedre[-1+i].messommets[j].ax,' ',listepolyhedre[-1+i].messommets[j].ay); writeln(f,listepolyhedre[-1+i].indicerouge,' ',listepolyhedre[-1+i].indicebleu,' ', listepolyhedre[-1+i].indicevert); writeln(f,listepolyhedre[-1+i].couleurbord,' ',listepolyhedre[-1+i].couleurfond); case listepolyhedre[-1+i].reflechientrant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; case listepolyhedre[-1+i].reflechisortant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; end; writeln(f,'Nombre de prismes:'); writeln(f,nombreprisme); if nombreprisme>0 then for i:=1 to nombreprisme do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listeprisme[-1+i].gx,' ',listeprisme[-1+i].gy); writeln(f,listeprisme[-1+i].ax,' ',listeprisme[-1+i].ay); writeln(f,listeprisme[-1+i].bx,' ',listeprisme[-1+i].by); writeln(f,listeprisme[-1+i].indicerouge,' ',listeprisme[-1+i].indicebleu,' ', listeprisme[-1+i].indicevert); writeln(f,listeprisme[-1+i].couleurbord,' ',listeprisme[-1+i].couleurfond); case listeprisme[-1+i].reflechientrant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; case listeprisme[-1+i].reflechisortant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; end; writeln(f,'Nombre de polycercles:'); writeln(f,nombrepolycercle); if nombrepolycercle>0 then for i:=1 to nombrepolycercle do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listepolycercle[-1+i].nombresommet); for j:=1 to listepolycercle[-1+i].nombresommet do writeln(f,listepolycercle[-1+i].messommets[j].ax,' ',listepolycercle[-1+i].messommets[j].ay); for j:=1 to listepolycercle[-1+i].nombresommet do writeln(f,listepolycercle[-1+i].mess[j].ax,' ',listepolycercle[-1+i].mess[j].ay); for j:=1 to listepolycercle[-1+i].nombresommet do writeln(f,listepolycercle[-1+i].rectiligne[j]); writeln(f,listepolycercle[-1+i].indicerouge,' ',listepolycercle[-1+i].indicebleu,' ', listepolycercle[-1+i].indicevert); writeln(f,listepolycercle[-1+i].couleurbord,' ',listepolycercle[-1+i].couleurfond); case listepolycercle[-1+i].reflechientrant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; case listepolycercle[-1+i].reflechisortant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; end; writeln(f,'Nombre de spheres:'); writeln(f,nombresphere); if nombresphere>0 then for i:=1 to nombresphere do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listesphere[-1+i].cx,' ',listesphere[-1+i].cy,' ',listesphere[-1+i].rayon,' ', listesphere[-1+i].indicerouge,' ',listesphere[-1+i].indicebleu,' ',listesphere[-1+i].indicevert); writeln(f,listesphere[-1+i].couleurbord,' ',listesphere[-1+i].couleurfond); case listesphere[-1+i].reflechientrant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; case listesphere[-1+i].reflechisortant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; end; writeln(f,'Nombre de miroirs coniques:'); writeln(f,nombremiroirconique); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listemiroirconique[-1+i].fx,' ',listemiroirconique[-1+i].fy,' ', listemiroirconique[-1+i].excentricite,' ',listemiroirconique[-1+i].parametre,' ', listemiroirconique[-1+i].theta0,' ',listemiroirconique[-1+i].theta1,' ', listemiroirconique[-1+i].theta2); writeln(f,listemiroirconique[-1+i].couleur,' ',listemiroirconique[-1+i].couleuraxe); writeln(f,listemiroirconique[-1+i].hachures); writeln(f,listemiroirconique[-1+i].axefocal); writeln(f,listemiroirconique[-1+i].concave); end; writeln(f,'Nombre de textes:'); writeln(f,nombretexte); if nombretexte>0 then for i:=1 to nombretexte do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listetexteaffiche[-1+i].texteluimeme); writeln(f,listetexteaffiche[-1+i].x,' ',listetexteaffiche[-1+i].y); writeln(f,listetexteaffiche[-1+i].policecharset,' ', listetexteaffiche[-1+i].policecolor); writeln(f,listetexteaffiche[-1+i].policename); writeln(f,listetexteaffiche[-1+i].policesize); if listetexteaffiche[-1+i].policefsbold then writeln(f,'fsbold') else writeln(f,'no'); if listetexteaffiche[-1+i].policefsitalic then writeln(f,'fsitalic') else writeln(f,'no'); if listetexteaffiche[-1+i].policefsunderline then writeln(f,'fsunderline') else writeln(f,'no'); if listetexteaffiche[-1+i].policefsstrikeout then writeln(f,'fsstrikeout') else writeln(f,'no'); if listetexteaffiche[-1+i].policepitch=fpDefault then writeln(f,'fpDefault'); if listetexteaffiche[-1+i].policepitch=fpVariable then writeln(f,'fpVariable'); if listetexteaffiche[-1+i].policepitch=fpFixed then writeln(f,'fpFixed'); end; writeln(f,'Nombre de lentilles epaisses:'); writeln(f,nombrelec); if nombrelec>0 then for i:=1 to nombrelec do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listelec[-1+i].s1x,' ',listelec[-1+i].s1y,' ', listelec[-1+i].s2x,' ',listelec[-1+i].s2y,' ', listelec[-1+i].r1,' ',listelec[-1+i].r2,' ', listelec[-1+i].diametre); writeln(f,listelec[-1+i].couleurfond,' ',listelec[-1+i].couleuraxe); writeln(f,listelec[-1+i].axefocal); writeln(f,listelec[-1+i].indicerouge,' ',listelec[-1+i].indicebleu,' ', listelec[-1+i].indicevert); case listelec[-1+i].reflechientrant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; case listelec[-1+i].reflechisortant of toujoursreflechi: writeln(f,'1'); jamaisreflechi: writeln(f,'2'); reflechisirefracte:writeln(f,'3'); reflechisipasrefracte:writeln(f,'4'); end; end; writeln(f,'Nombre d''angles:'); writeln(f,nombreangle); if nombreangle>0 then for i:=1 to nombreangle do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listeangle[-1+i].cx,' ',listeangle[-1+i].cy,' ', listeangle[-1+i].a1x,' ',listeangle[-1+i].a1y,' ', listeangle[-1+i].a2x,' ',listeangle[-1+i].a2y); end; { a partir de la version 3} writeln(f,'Nombre de traits:'); writeln(f,nombrefleche); if nombrefleche>0 then for i:=1 to nombrefleche do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listefleche[-1+i].a1x,' ',listefleche[-1+i].a1y,' ', listefleche[-1+i].a2x,' ',listefleche[-1+i].a2y); writeln(f,listefleche[-1+i].epaisseur,' ',listefleche[-1+i].couleur); case listefleche[-1+i].ext1 of trien: writeln(f,'trien'); ttrait: writeln(f,'ttrait'); tffleche: writeln(f,'tffleche'); trond: writeln(f,'trond'); tcroix: writeln(f,'tcroix'); tcroixx: writeln(f,'tcroixx'); tdisque: writeln(f,'tdisque'); end; case listefleche[-1+i].ext2 of trien: writeln(f,'trien'); ttrait: writeln(f,'ttrait'); tffleche: writeln(f,'tffleche'); trond: writeln(f,'trond'); tcroix: writeln(f,'tcroix'); tcroixx: writeln(f,'tcroixx'); tdisque: writeln(f,'tdisque'); end; case listefleche[-1+i].styletrait of pssolid: writeln(f,'pssolid'); psdot:writeln(f,'psdot'); psdash: writeln(f,'psdash'); psdashdot: writeln(f,'psdashdot'); psdashdotdot: writeln(f,'psdashdotdot'); end; writeln(f,listefleche[-1+i].taille1,' ',listefleche[-1+i].taille2); end; { a partir de a version 4} writeln(f,'Nombre d''oeils:'); writeln(f,nombreoeil); if nombreoeil>0 then for i:=1 to nombreoeil do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listeoeil[-1+i].cx,' ',listeoeil[-1+i].cy,' ',listeoeil[-1+i].ax,' ', listeoeil[-1+i].ay,' ',listeoeil[-1+i].epaisseur,' ',listeoeil[-1+i].couleur); end; { a partir de la version 5} writeln(f,'Nombre de mesures de distances'); writeln(f,nombremetre); if nombremetre>0 then for i:=1 to nombremetre do begin writeln(f,'Numero '+inttostr(i)); writeln(f,listemetre[-1+i].a1x,' ',listemetre[-1+i].a1y,' ', listemetre[-1+i].a2x,' ',listemetre[-1+i].a2y); end; writeln(f,'Nombre de groupes:'); writeln(f,nombregroupe); if nombregroupe>0 then for i:=1 to nombregroupe do begin writeln(f,'Numero groupe'+inttostr(i)); writeln(f,listegroupe[-1+i].nombreelements); for j:=1 to listegroupe[-1+i].nombreelements do begin writeln(f,listegroupe[-1+i].listeelements[j].indiceelement); case listegroupe[-1+i].listeelements[j].typeelementgroupe of mdoeil: writeln(f,'mdoeil'); mddiaphragme: writeln(f,'mddiaphragme'); mdtexteaffiche: writeln(f,'mdtexteaffiche'); mdmiroirconique: writeln(f,'mdmiroirconique'); mdlec: writeln(f,'mdlec'); mdfleche:writeln(f,'mdfleche'); mdmiroirplan: writeln(f,'mdmiroirplan'); mdreseau: writeln(f,'mdreseau'); mdecran: writeln(f,'mdecran'); mdangle: writeln(f,'mdangle'); mdmetre: writeln(f,'mdmetre'); mdlsr: writeln(f,'mdlsr'); mdmscopa: writeln(f,'mdmscopa'); mdlmc: writeln(f,'mdlmc'); mdlmd: writeln(f,'mdlmd'); mdmscepa: writeln(f,'mdmscepa'); mdmscore: writeln(f,'mdmscore'); mdmscere: writeln(f,'mdmscere'); mdpolyhedre: writeln(f,'mdpolyhedre'); mdrayon: writeln(f,'mdrayon'); mdsourceponctuelle: writeln(f,'mdsourceponctuelle'); mdondeplane: writeln(f,'mdondeplane'); mdpolycercle: writeln(f,'mdpolycercle'); mdsphere: writeln(f,'mdsphere'); mdprisme: writeln(f,'mdprisme'); else writeln(f,'mdneant'); end; end; end; writeln(f,'couleur fond simulation'); writeln(f,couleurfondsimulation); writeln(f,'empennage'); writeln(f,'position'); writeln(f,positionempennage); writeln(f,'taille'); writeln(f,tailleempennage); closefile(f); modifie:=false; try formediteur.memo1.Lines.SaveToFile(utf8tosys(copy(nomfichier,1,length(nomfichier)-3)+ 'txt')); except application.MessageBox(pchar(rsImpossibleDe3), pchar(rsErreurDCritu), mb_ok); end; formediteur.caption:=Format(rsCommentaires4, [nomfichier]); commentaire_change:=false; end; procedure TForm1.Enregistrersimulation2Click(Sender: TObject); begin if nomsauvegarde<>'' then enregistrer(nomsauvegarde) else Form1.Enregistrersimulation1Click(Sender); end; procedure TForm1.Enregistrersimulation1Click(Sender: TObject); var f:textfile; i,j:integer; label 1010; begin if modequelquechose then exit; 1010: savedialog1.FileName:=''; savedialog1.InitialDir:=repertoire_simul_perso; if saveDialog1.Execute then { affiche la boîte de dialogue d'ouverture } begin if fileexistsutf8(saveDialog1.FileName) then if application.messagebox(pchar(rsUnFichierPor), pchar(rsAttention3), MB_YESNO)=IDNO then goto 1010; enregistrer(savedialog1.filename); nomsauvegarde:=savedialog1.filename; form1.Caption:=Format(rsEspaceDeTrav3, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax), extractfilename(nomsauvegarde)]); end; end; procedure TForm1.Ouvrirsimulation(Sender: TObject;repertoiredepart:string); var f:textfile; i,j:integer; s,s1:string; newnombremiroirplan,newnombrereseau,newnombremscopa,newnombremscepa,newnombremscore, newnombremscere,newnombrelmc,newnombrelmd,newnombrerayon,newnombrelsr, newnombresourceponctuelle,newnombreondeplane,newnombreecran,toto, newnombrepolyhedre,newnombresphere,newnombremiroirconique, newnombretexte,newnombrediaphragme,newnombrelec,newnombrepolycercle, newnombreangle,newnombrefleche,newnombreoeil,newnombregroupe, newnombremetre,newnombreprisme:integer; coco:tcolor; aze:ttypeelementmodif; chacha,papa:integer; versionfichier:longint; nerina:widestring; label 9852,789,12345; begin if modequelquechose then exit; if (parametrelignecommande) then begin nerina:=paramstr(1); parametrelignecommande:=false; goto 789; end; OpenDialog1.FileName := ''; opendialog1.InitialDir:=repertoiredepart; if not(OpenDialog1.Execute) then exit else nerina:=OpenDialog1.FileName; { affiche la boîte de dialogue d'ouverture } if ((pos(repertoire_exemples,extractfilepath(nerina))=0) and (pos(repertoire_simul_perso,extractfilepath(nerina))=0)) then repertoire_actuel:=extractfilepath(nerina); if nom_fichier_config_perso<>'' then begin try if not(directoryexistsUTF8(repertoire_config_perso)) then forcedirectories(UTF8ToSys(repertoire_config_perso)); assignfile(f,UTF8ToSys(nom_fichier_config_perso)); rewrite(f); closefile(f); saisiepreferences.BitBtn2Click(Sender); except end; end; 789: try Assignfile(F,UTF8ToSys(nerina)); except Application.messagebox(pchar(rsFichierInacc), pchar(rsAttention), mb_ok); exit; end; // application.MessageBox(pchar(nerina),pchar(UTF8ToSys(nerina)),mb_ok); try reset(f); except Application.messagebox(pchar(rsFichierInacc2), pchar(rsAttention), mb_ok); exit; end; metazero; versionfichier:=221; try {suivi du bloc de lecture; si une erreur se produit, elle est traitee a la fin} while not(eof(f)) do begin readln(f,s1); if s1='NE PAS MODIFIER CE FICHIER' then goto 12345; if s1='VERSION' then begin readln(f,versionfichier); readln(f,xxmin,xxmax,yymin,yymax); readln(f,s); respectrapport:=(s='TRUE'); goto 12345; end; if s1= 'UNITE' then begin readln(f,unitelongueur); goto 12345; end; if s1='OPTIONS GRILLE' then begin readln(f,s); tracergrille:=(s='TRUE'); readln(f,s); attractiongrille:=(s='TRUE'); readln(f,grillex,grilley); goto 12345; end; if s1= 'OPTIONS NORMALES' then begin readln(f,s); optionnormale:=(s='TRUE'); readln(f,s); optionangles:=(s='TRUE'); readln(f,pourcentagenormale); readln(f,couleurnormale); readln(f,epaisseurnormale); readln(f,decimalesangles); goto 12345; end; if s1='OPTIONS SEGMENTS FANTOMES' then begin readln(f,s); fantomespresents:=(s='TRUE'); readln(f,listefantomes); goto 12345; end; if s1= 'NOMBRE POINTS TRACE SURFACE ONDE' then begin readln(f,maxrayonsrecherchesurfacesonde); if fantomespresents then for i:=1 to maxtotalsegment do fantomes[i]:=(pos(','+inttostr(i)+',',listefantomes)<>0) or (pos('('+inttostr(i)+',',listefantomes)<>0) or (pos(','+inttostr(i)+')',listefantomes)<>0) or (pos('('+inttostr(i)+')',listefantomes)<>0); goto 12345; end; if s1='INDICES PAR DEFAUT' then begin readln(f,indice_vert_par_defaut); readln(f,indice_bleu_par_defaut); readln(f,indice_rouge_par_defaut); goto 12345; end; if s1='LAMBDA' then begin readln(f,longueur_donde_red); readln(f,longueur_donde_blue); readln(f,longueur_donde_green); goto 12345; end; if s1='Nombre de miroirs plans:' then begin readln(f,newnombremiroirplan); retaillepmiroirplan(listemiroirplan,nombremiroirplan,newnombremiroirplan); nombremiroirplan:=newnombremiroirplan; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do begin readln(f,s); readln(f,listemiroirplan[-1+i].a1x,listemiroirplan[-1+i].a1y,listemiroirplan[-1+i].a2x, listemiroirplan[-1+i].a2y,listemiroirplan[-1+i].epaisseur,listemiroirplan[-1+i].couleur); readln(f,s); listemiroirplan[-1+i].hachures:=(s='TRUE'); if not( listemiroirplan[-1+i].create(listemiroirplan[-1+i].a1x,listemiroirplan[-1+i].a1y, listemiroirplan[-1+i].a2x,listemiroirplan[-1+i].a2y,listemiroirplan[-1+i].epaisseur, listemiroirplan[-1+i].couleur,listemiroirplan[-1+i].hachures)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de reseaux:' then begin readln(f,newnombrereseau); retaillepreseau(listereseau,nombrereseau,newnombrereseau); nombrereseau:=newnombreReseau; if nombreReseau>0 then for i:=1 to nombreReseau do begin readln(f,s); readln(f,listeReseau[-1+i].a1x,listeReseau[-1+i].a1y,listeReseau[-1+i].a2x, listeReseau[-1+i].a2y); readln(f,listeReseau[-1+i].epaisseur); readln(f,listeReseau[-1+i].couleur); readln(f,listeReseau[-1+i].pas); readln(f,s); listeReseau[-1+i].entransmission:=(s='TRUE'); readln(f,s); listeReseau[-1+i].hachures:=(s='TRUE'); readln(f,listeReseau[-1+i].ordre_min); readln(f,listeReseau[-1+i].ordre_max); if not( listeReseau[-1+i].create(listeReseau[-1+i].a1x,listeReseau[-1+i].a1y, listeReseau[-1+i].a2x,listeReseau[-1+i].a2y,listeReseau[-1+i].epaisseur, listeReseau[-1+i].couleur,listeReseau[-1+i].pas,listeReseau[-1+i].entransmission,listeReseau[-1+i].hachures, listeReseau[-1+i].ordre_min,listeReseau[-1+i].ordre_max)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs concaves paraxiaux:' then begin readln(f,newnombremscopa); retaillepmscopa(listemscopa,nombremscopa,newnombremscopa); nombremscopa:=newnombremscopa; if nombremscopa>0 then for i:=1 to nombremscopa do begin readln(f,s); readln(f,listemscopa[-1+i].a1x,listemscopa[-1+i].a1y,listemscopa[-1+i].a2x, listemscopa[-1+i].a2y,listemscopa[-1+i].focale,listemscopa[-1+i].epaisseur, listemscopa[-1+i].couleur,listemscopa[-1+i].couleuraxe); readln(f,s); listemscopa[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscopa[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscopa[-1+i].trou:=(s='TRUE'); readln(f,listemscopa[-1+i].diametretrou); if not( listemscopa[-1+i].create2(listemscopa[-1+i].a1x,listemscopa[-1+i].a1y, listemscopa[-1+i].a2x,listemscopa[-1+i].a2y,listemscopa[-1+i].focale, listemscopa[-1+i].epaisseur, listemscopa[-1+i].couleur,listemscopa[-1+i].couleuraxe, listemscopa[-1+i].hachures,listemscopa[-1+i].axefocal, listemscopa[-1+i].trou,listemscopa[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs convexes paraxiaux:' then begin readln(f,newnombremscepa); retaillepmscepa(listemscepa,nombremscepa,newnombremscepa); nombremscepa:=newnombremscepa; if nombremscepa>0 then for i:=1 to nombremscepa do begin readln(f,s); readln(f,listemscepa[-1+i].a1x,listemscepa[-1+i].a1y,listemscepa[-1+i].a2x, listemscepa[-1+i].a2y,listemscepa[-1+i].focale,listemscepa[-1+i].epaisseur, listemscepa[-1+i].couleur,listemscepa[-1+i].couleuraxe); readln(f,s); listemscepa[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscepa[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscepa[-1+i].trou:=(s='TRUE'); readln(f,listemscepa[-1+i].diametretrou); if not( listemscepa[-1+i].create2(listemscepa[-1+i].a1x,listemscepa[-1+i].a1y, listemscepa[-1+i].a2x,listemscepa[-1+i].a2y,listemscepa[-1+i].focale, listemscepa[-1+i].epaisseur, listemscepa[-1+i].couleur,listemscepa[-1+i].couleuraxe, listemscepa[-1+i].hachures,listemscepa[-1+i].axefocal, listemscepa[-1+i].trou,listemscepa[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs concaves reels:' then begin readln(f,newnombremscore); retaillepmscore(listemscore,nombremscore,newnombremscore); nombremscore:=newnombremscore; if nombremscore>0 then for i:=1 to nombremscore do begin readln(f,s); readln(f,listemscore[-1+i].a1x,listemscore[-1+i].a1y,listemscore[-1+i].a2x, listemscore[-1+i].a2y,listemscore[-1+i].rayoncourbure,listemscore[-1+i].epaisseur, listemscore[-1+i].couleur,listemscore[-1+i].couleuraxe); readln(f,s); listemscore[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscore[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscore[-1+i].aigu:=(s='TRUE'); readln(f,s); listemscore[-1+i].trou:=(s='TRUE'); readln(f,listemscore[-1+i].diametretrou); if not( listemscore[-1+i].create2(listemscore[-1+i].a1x,listemscore[-1+i].a1y, listemscore[-1+i].a2x,listemscore[-1+i].a2y,listemscore[-1+i].rayoncourbure, listemscore[-1+i].epaisseur, listemscore[-1+i].couleur,listemscore[-1+i].couleuraxe, listemscore[-1+i].hachures,listemscore[-1+i].axefocal,listemscore[-1+i].aigu, listemscore[-1+i].trou,listemscore[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs convexes reels:' then begin readln(f,newnombremscere); retaillepmscere(listemscere,nombremscere,newnombremscere); nombremscere:=newnombremscere; if nombremscere>0 then for i:=1 to nombremscere do begin readln(f,s); readln(f,listemscere[-1+i].a1x,listemscere[-1+i].a1y,listemscere[-1+i].a2x, listemscere[-1+i].a2y,listemscere[-1+i].rayoncourbure,listemscere[-1+i].epaisseur, listemscere[-1+i].couleur,listemscere[-1+i].couleuraxe); readln(f,s); listemscere[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscere[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscere[-1+i].aigu:=(s='TRUE'); readln(f,s); listemscere[-1+i].trou:=(s='TRUE'); readln(f,listemscere[-1+i].diametretrou); if not( listemscere[-1+i].create2(listemscere[-1+i].a1x,listemscere[-1+i].a1y, listemscere[-1+i].a2x,listemscere[-1+i].a2y,listemscere[-1+i].rayoncourbure, listemscere[-1+i].epaisseur, listemscere[-1+i].couleur,listemscere[-1+i].couleuraxe, listemscere[-1+i].hachures,listemscere[-1+i].axefocal,listemscere[-1+i].aigu, listemscere[-1+i].trou,listemscere[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentiles minces convergentes:' then begin readln(f,newnombrelmc); retailleplmc(listelmc,nombrelmc,newnombrelmc); nombrelmc:=newnombrelmc; if nombrelmc>0 then for i:=1 to nombrelmc do begin readln(f,s); readln(f,listelmc[-1+i].a1x,listelmc[-1+i].a1y,listelmc[-1+i].a2x, listelmc[-1+i].a2y,listelmc[-1+i].focale,listelmc[-1+i].epaisseur, listelmc[-1+i].couleur,listelmc[-1+i].couleuraxe); readln(f,s); listelmc[-1+i].axefocal:=(s='TRUE'); if not(listelmc[-1+i].create2(listelmc[-1+i].a1x,listelmc[-1+i].a1y, listelmc[-1+i].a2x,listelmc[-1+i].a2y,listelmc[-1+i].focale, listelmc[-1+i].epaisseur, listelmc[-1+i].couleur,listelmc[-1+i].couleuraxe, listelmc[-1+i].axefocal))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentiles minces divergentes:' then begin readln(f,newnombrelmd); retailleplmd(listelmd,nombrelmd,newnombrelmd); nombrelmd:=newnombrelmd; if nombrelmd>0 then for i:=1 to nombrelmd do begin readln(f,s); readln(f,listelmd[-1+i].a1x,listelmd[-1+i].a1y,listelmd[-1+i].a2x, listelmd[-1+i].a2y,listelmd[-1+i].focale,listelmd[-1+i].epaisseur, listelmd[-1+i].couleur,listelmd[-1+i].couleuraxe); readln(f,s); listelmd[-1+i].axefocal:=(s='TRUE'); if not( listelmd[-1+i].create2(listelmd[-1+i].a1x,listelmd[-1+i].a1y, listelmd[-1+i].a2x,listelmd[-1+i].a2y,listelmd[-1+i].focale, listelmd[-1+i].epaisseur, listelmd[-1+i].couleur,listelmd[-1+i].couleuraxe, listelmd[-1+i].axefocal))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de rayons:' then begin readln(f,newnombrerayon); retailleprayon(listerayon,nombrerayon,newnombrerayon); nombrerayon:=newnombrerayon; if nombrerayon>0 then for i:=1 to nombrerayon do begin readln(f,s); readln(f,listerayon[-1+i].ax,listerayon[-1+i].ay,listerayon[-1+i].kx, listerayon[-1+i].ky,listerayon[-1+i].couleur,listerayon[-1+i].epaisseur, listerayon[-1+i].nombremaxenfant); readln(f,s); listerayon[-1+i].vav:=s; readln(f,s); listerayon[-1+i].vaa:=s; if versionfichier>=200 then begin readln(f,s); readln(f,listerayon[-1+i].maxsegment); end else listerayon[-1+i].maxsegment:=maxmaxsegment; if not( listerayon[-1+i].create(listerayon[-1+i].ax,listerayon[-1+i].ay, listerayon[-1+i].kx,listerayon[-1+i].ky, listerayon[-1+i].couleur, listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa, listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment ))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de sources ponctuelles:' then begin readln(f,newnombresourceponctuelle); retaillepsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,newnombresourceponctuelle); nombresourceponctuelle:=newnombresourceponctuelle; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do begin readln(f,s); readln(f,listesourceponctuelle[-1+i].nombrederayon, listesourceponctuelle[-1+i].sx, listesourceponctuelle[-1+i].sy, listesourceponctuelle[-1+i].a1x, listesourceponctuelle[-1+i].a1y, listesourceponctuelle[-1+i].a2x, listesourceponctuelle[-1+i].a2y, listesourceponctuelle[-1+i].couleur, listesourceponctuelle[-1+i].epaisseur, listesourceponctuelle[-1+i].maxenfantparrayon); readln(f,s); listesourceponctuelle[-1+i].vav:=s; readln(f,s); listesourceponctuelle[-1+i].vaa:=s; readln(f,s); listesourceponctuelle[-1+i].sourcevirtuelle:=(s='TRUE'); readln(f,s); listesourceponctuelle[-1+i].tracersurfacesonde:=(s='TRUE'); readln(f,s); listesourceponctuelle[-1+i].listechemins:=s; if versionfichier>=200 then begin readln(f,s); readln(f,listesourceponctuelle[-1+i].maxsegment); end else listesourceponctuelle[-1+i].maxsegment:=maxmaxsegment; if not(listesourceponctuelle[-1+i].create(listesourceponctuelle[-1+i].nombrederayon, listesourceponctuelle[-1+i].sx, listesourceponctuelle[-1+i].sy, listesourceponctuelle[-1+i].a1x, listesourceponctuelle[-1+i].a1y, listesourceponctuelle[-1+i].a2x, listesourceponctuelle[-1+i].a2y, listesourceponctuelle[-1+i].couleur, listesourceponctuelle[-1+i].epaisseur,listesourceponctuelle[-1+i].vav, listesourceponctuelle[-1+i].vaa, listesourceponctuelle[-1+i].maxenfantparrayon,listesourceponctuelle[-1+i].sourcevirtuelle, listesourceponctuelle[-1+i].tracersurfacesonde,listesourceponctuelle[-1+i].listechemins, listesourceponctuelle[-1+i].maxsegment))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''ondes planes:' then begin readln(f,newnombreondeplane); retaillepondeplane(listeondeplane,nombreondeplane,newnombreondeplane); nombreondeplane:=newnombreondeplane; if nombreondeplane>0 then for i:=1 to nombreondeplane do begin readln(f,s); readln(f,listeondeplane[-1+i].nombrederayon, listeondeplane[-1+i].sx, listeondeplane[-1+i].sy, listeondeplane[-1+i].a1x, listeondeplane[-1+i].a1y, listeondeplane[-1+i].a2x, listeondeplane[-1+i].a2y, listeondeplane[-1+i].couleur, listeondeplane[-1+i].epaisseur, listeondeplane[-1+i].maxenfantparrayon); readln(f,s); listeondeplane[-1+i].vav:=s; readln(f,s); listeondeplane[-1+i].vaa:=s; readln(f,s); listeondeplane[-1+i].tracersurfacesonde:=(s='TRUE'); readln(f,s); listeondeplane[-1+i].listechemins:=s; if versionfichier>=200 then begin readln(f,s); readln(f,listeondeplane[-1+i].maxsegment); end else listeondeplane[-1+i].maxsegment:=maxmaxsegment; if not(listeondeplane[-1+i].create(listeondeplane[-1+i].nombrederayon, listeondeplane[-1+i].sx, listeondeplane[-1+i].sy, listeondeplane[-1+i].a1x, listeondeplane[-1+i].a1y, listeondeplane[-1+i].a2x, listeondeplane[-1+i].a2y, listeondeplane[-1+i].couleur, listeondeplane[-1+i].epaisseur,listeondeplane[-1+i].vav, listeondeplane[-1+i].vaa,listeondeplane[-1+i].maxenfantparrayon, listeondeplane[-1+i].tracersurfacesonde, listeondeplane[-1+i].listechemins, listeondeplane[-1+i].maxsegment))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''ecrans:' then begin readln(f,newnombreecran); retaillepecran(listeecran,nombreecran,newnombreecran); nombreecran:=newnombreecran; if nombreecran>0 then for i:=1 to nombreecran do begin readln(f,s); readln(f,listeecran[-1+i].a1x,listeecran[-1+i].a1y,listeecran[-1+i].a2x, listeecran[-1+i].a2y,listeecran[-1+i].epaisseur,listeecran[-1+i].couleur); if not( listeecran[-1+i].create(listeecran[-1+i].a1x,listeecran[-1+i].a1y, listeecran[-1+i].a2x,listeecran[-1+i].a2y,listeecran[-1+i].epaisseur, listeecran[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de diaphragmes:' then begin readln(f,newnombrediaphragme); retaillepdiaphragme(listediaphragme,nombrediaphragme,newnombrediaphragme); nombrediaphragme:=newnombrediaphragme; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do begin readln(f,s); readln(f,listediaphragme[-1+i].cx,listediaphragme[-1+i].cy,listediaphragme[-1+i].anglepolaire, listediaphragme[-1+i].rint,listediaphragme[-1+i].rext, listediaphragme[-1+i].epaisseur,listediaphragme[-1+i].couleur); if not( listediaphragme[-1+i].create2(listediaphragme[-1+i].cx, listediaphragme[-1+i].cy,listediaphragme[-1+i].anglepolaire, listediaphragme[-1+i].rint,listediaphragme[-1+i].rext, listediaphragme[-1+i].couleur,listediaphragme[-1+i].epaisseur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lames semi reflechissantes:' then begin readln(f,newnombrelsr); retailleplsr(listelsr,nombrelsr,newnombrelsr); nombrelsr:=newnombrelsr; if nombrelsr>0 then for i:=1 to nombrelsr do begin readln(f,s); readln(f,listelsr[-1+i].a1x,listelsr[-1+i].a1y,listelsr[-1+i].a2x, listelsr[-1+i].a2y,listelsr[-1+i].epaisseur,listelsr[-1+i].couleur); if not( listelsr[-1+i].create(listelsr[-1+i].a1x,listelsr[-1+i].a1y, listelsr[-1+i].a2x,listelsr[-1+i].a2y,listelsr[-1+i].epaisseur, listelsr[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de polyhedres:' then begin readln(f,newnombrepolyhedre); retailleppolyhedre(listepolyhedre,nombrepolyhedre,newnombrepolyhedre); nombrepolyhedre:=newnombrepolyhedre; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do begin readln(f,s); readln(f,listepolyhedre[-1+i].nombresommet); for j:=1 to listepolyhedre[-1+i].nombresommet do readln(f,listepolyhedre[-1+i].messommets[j].ax,listepolyhedre[-1+i].messommets[j].ay); readln(f,listepolyhedre[-1+i].indicerouge,listepolyhedre[-1+i].indicebleu,listepolyhedre[-1+i].indicevert); readln(f,listepolyhedre[-1+i].couleurbord,listepolyhedre[-1+i].couleurfond); readln(f,s); if s='1' then listepolyhedre[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listepolyhedre[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listepolyhedre[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listepolyhedre[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listepolyhedre[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listepolyhedre[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listepolyhedre[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listepolyhedre[-1+i].reflechisortant:=reflechisipasrefracte; if not(listepolyhedre[-1+i].create(listepolyhedre[-1+i].nombresommet,listepolyhedre[-1+i].messommets, listepolyhedre[-1+i].indicerouge,listepolyhedre[-1+i].indicebleu,listepolyhedre[-1+i].indicevert, listepolyhedre[-1+i].couleurbord,listepolyhedre[-1+i].couleurfond, listepolyhedre[-1+i].reflechientrant,listepolyhedre[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de prismes:' then begin readln(f,newnombreprisme); retaillepprisme(listeprisme,nombreprisme,newnombreprisme); nombreprisme:=newnombreprisme; if nombreprisme>0 then for i:=1 to nombreprisme do begin readln(f,s); readln(f,listeprisme[-1+i].gx,listeprisme[-1+i].gy); readln(f,listeprisme[-1+i].ax,listeprisme[-1+i].ay); readln(f,listeprisme[-1+i].bx,listeprisme[-1+i].by); readln(f,listeprisme[-1+i].indicerouge,listeprisme[-1+i].indicebleu,listeprisme[-1+i].indicevert); readln(f,listeprisme[-1+i].couleurbord,listeprisme[-1+i].couleurfond); readln(f,s); if s='1' then listeprisme[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listeprisme[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listeprisme[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listeprisme[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listeprisme[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listeprisme[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listeprisme[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listeprisme[-1+i].reflechisortant:=reflechisipasrefracte; if not(listeprisme[-1+i].create(listeprisme[-1+i].gx,listeprisme[-1+i].gy, listeprisme[-1+i].ax,listeprisme[-1+i].ay,listeprisme[-1+i].bx,listeprisme[-1+i].by, listeprisme[-1+i].indicerouge,listeprisme[-1+i].indicebleu,listeprisme[-1+i].indicevert, listeprisme[-1+i].couleurbord,listeprisme[-1+i].couleurfond, listeprisme[-1+i].reflechientrant,listeprisme[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de polycercles:' then begin readln(f,newnombrepolycercle); retailleppolycercle(listepolycercle,nombrepolycercle,newnombrepolycercle); nombrepolycercle:=newnombrepolycercle; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do begin readln(f,s); readln(f,listepolycercle[-1+i].nombresommet); for j:=1 to listepolycercle[-1+i].nombresommet do readln(f,listepolycercle[-1+i].messommets[j].ax,listepolycercle[-1+i].messommets[j].ay); for j:=1 to listepolycercle[-1+i].nombresommet do readln(f,listepolycercle[-1+i].mess[j].ax,listepolycercle[-1+i].mess[j].ay); for j:=1 to listepolycercle[-1+i].nombresommet do begin readln(f,s); listepolycercle[-1+i].rectiligne[j]:=(s='TRUE'); end; readln(f,listepolycercle[-1+i].indicerouge,listepolycercle[-1+i].indicebleu,listepolycercle[-1+i].indicevert); readln(f,listepolycercle[-1+i].couleurbord,listepolycercle[-1+i].couleurfond); readln(f,s); if s='1' then listepolycercle[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listepolycercle[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listepolycercle[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listepolycercle[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listepolycercle[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listepolycercle[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listepolycercle[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listepolycercle[-1+i].reflechisortant:=reflechisipasrefracte; if not(listepolycercle[-1+i].create(listepolycercle[-1+i].nombresommet, listepolycercle[-1+i].messommets,listepolycercle[-1+i].mess,listepolycercle[-1+i].rectiligne, listepolycercle[-1+i].indicerouge,listepolycercle[-1+i].indicebleu,listepolycercle[-1+i].indicevert, listepolycercle[-1+i].couleurbord,listepolycercle[-1+i].couleurfond, listepolycercle[-1+i].reflechientrant,listepolycercle[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de spheres:' then begin readln(f,newnombresphere); retaillepsphere(listesphere,nombresphere,newnombresphere); nombresphere:=newnombresphere; if nombresphere>0 then for i:=1 to nombresphere do begin readln(f,s); readln(f,listesphere[-1+i].cx,listesphere[-1+i].cy,listesphere[-1+i].rayon, listesphere[-1+i].indicerouge,listesphere[-1+i].indicebleu,listesphere[-1+i].indicevert); readln(f,listesphere[-1+i].couleurbord,listesphere[-1+i].couleurfond); readln(f,s); if s='1' then listesphere[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listesphere[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listesphere[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listesphere[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listesphere[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listesphere[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listesphere[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listesphere[-1+i].reflechisortant:=reflechisipasrefracte; if not(listesphere [-1+i].create(listesphere[-1+i].cx,listesphere[-1+i].cy,listesphere[-1+i].rayon, listesphere[-1+i].indicerouge,listesphere[-1+i].indicebleu,listesphere[-1+i].indicevert, listesphere[-1+i].couleurbord,listesphere[-1+i].couleurfond, listesphere[-1+i].reflechientrant,listesphere[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs coniques:' then begin readln(f,newnombremiroirconique); retaillepmiroirconique(listemiroirconique,nombremiroirconique,newnombremiroirconique); nombremiroirconique:=newnombremiroirconique; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do begin readln(f,s); readln(f,listemiroirconique[-1+i].fx,listemiroirconique[-1+i].fy, listemiroirconique[-1+i].excentricite,listemiroirconique[-1+i].parametre, listemiroirconique[-1+i].theta0,listemiroirconique[-1+i].theta1,listemiroirconique[-1+i].theta2); readln(f,listemiroirconique[-1+i].couleur,listemiroirconique[-1+i].couleuraxe); readln(f,s); listemiroirconique[-1+i].hachures:=(s='TRUE'); readln(f,s); listemiroirconique[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemiroirconique[-1+i].concave:=(s='TRUE'); if not( listemiroirconique[-1+i].create2(listemiroirconique[-1+i].fx, listemiroirconique[-1+i].fy,listemiroirconique[-1+i].theta0, listemiroirconique[-1+i].theta1,listemiroirconique[-1+i].theta2, listemiroirconique[-1+i].excentricite,listemiroirconique[-1+i].parametre, listemiroirconique[-1+i].concave,listemiroirconique[-1+i].couleur, listemiroirconique[-1+i].couleuraxe,listemiroirconique[-1+i].hachures, listemiroirconique[-1+i].axefocal)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de textes:' then begin readln(f,newnombretexte); retailleptexteaffiche(listetexteaffiche,nombretexte,newnombretexte); nombretexte:=newnombretexte; if nombretexte>0 then for i:=1 to nombretexte do begin readln(f,s); readln(f,listetexteaffiche[-1+i].texteluimeme); readln(f,listetexteaffiche[-1+i].x,listetexteaffiche[-1+i].y); readln(f,listetexteaffiche[-1+i].policecharset, listetexteaffiche[-1+i].policecolor); readln(f,listetexteaffiche[-1+i].policename); readln(f,listetexteaffiche[-1+i].policesize); readln(f,s); listetexteaffiche[-1+i].policefsbold:=(s='fsbold'); readln(f,s); listetexteaffiche[-1+i].policefsitalic:=(s='fsitalic'); readln(f,s); listetexteaffiche[-1+i].policefsunderline:=(s='fsunderline'); readln(f,s); listetexteaffiche[-1+i].policefsstrikeout:=(s='fsstrikeout'); readln(f,s); if s='fpDefault' then listetexteaffiche[-1+i].policepitch:=fpDefault; if s='fpVariable' then listetexteaffiche[-1+i].policepitch:=fpVariable; if s='fpFixed' then listetexteaffiche[-1+i].policepitch:=fpFixed; if not(listetexteaffiche[-1+i].create(listetexteaffiche[-1+i].texteluimeme, listetexteaffiche[-1+i].policename,listetexteaffiche[-1+i].policecharset, listetexteaffiche[-1+i].policecolor, listetexteaffiche[-1+i].policesize, listetexteaffiche[-1+i].policepitch, listetexteaffiche[-1+i].policefsbold, listetexteaffiche[-1+i].policefsitalic, listetexteaffiche[-1+i].policefsunderline, listetexteaffiche[-1+i].policefsstrikeout,listetexteaffiche[-1+i].x, listetexteaffiche[-1+i].y)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentilles epaisses:' then begin readln(f,newnombrelec); retailleplec(listelec,nombrelec,newnombrelec); nombrelec:=newnombrelec; if nombrelec>0 then for i:=1 to nombrelec do begin readln(f,s); readln(f,listelec[-1+i].s1x,listelec[-1+i].s1y,listelec[-1+i].s2x, listelec[-1+i].s2y,listelec[-1+i].r1,listelec[-1+i].r2,listelec[-1+i].diametre); readln(f,listelec[-1+i].couleurfond,listelec[-1+i].couleuraxe); readln(f,s); listelec[-1+i].axefocal:=(s='TRUE'); readln(f,listelec[-1+i].indicerouge,listelec[-1+i].indicebleu,listelec[-1+i].indicevert); readln(f,s); if s='1' then listelec[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listelec[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listelec[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listelec[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listelec[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listelec[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listelec[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listelec[-1+i].reflechisortant:=reflechisipasrefracte; if not(listelec [-1+i].create(listelec[-1+i].s1x,listelec[-1+i].s1y,listelec[-1+i].s2x, listelec[-1+i].s2y,listelec[-1+i].r1,listelec[-1+i].r2,listelec[-1+i].diametre, listelec[-1+i].couleurfond,listelec[-1+i].couleuraxe,listelec[-1+i].axefocal, listelec[-1+i].indicerouge,listelec[-1+i].indicebleu,listelec[-1+i].indicevert, listelec[-1+i].reflechientrant,listelec[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''angles:' then begin readln(f,newnombreangle); retaillepangle(listeangle,nombreangle,newnombreangle); nombreangle:=newnombreangle; if nombreangle>0 then for i:=1 to nombreangle do begin readln(f,s); readln(f,listeangle[-1+i].cx,listeangle[-1+i].cy,listeangle[-1+i].a1x, listeangle[-1+i].a1y,listeangle[-1+i].a2x,listeangle[-1+i].a2y); if not(listeangle [-1+i].create(listeangle[-1+i].cx,listeangle[-1+i].cy,listeangle[-1+i].a1x, listeangle[-1+i].a1y,listeangle[-1+i].a2x,listeangle[-1+i].a2y))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de traits:' then begin readln(f,newnombrefleche); retaillepfleche(listefleche,nombrefleche,newnombrefleche); nombrefleche:=newnombrefleche; if nombrefleche>0 then for i:=1 to nombrefleche do begin readln(f,s); readln(f,listefleche[-1+i].a1x,listefleche[-1+i].a1y,listefleche[-1+i].a2x,listefleche[-1+i].a2y); readln(f,listefleche[-1+i].epaisseur,listefleche[-1+i].couleur); readln(f,s); if s='trien' then listefleche[-1+i].ext1:=trien; if s='tffleche' then listefleche[-1+i].ext1:=tffleche; if s='ttrait' then listefleche[-1+i].ext1:=ttrait; if s='trond' then listefleche[-1+i].ext1:=trond; if s='tcroix' then listefleche[-1+i].ext1:=tcroix; if s='tcroixx' then listefleche[-1+i].ext1:=tcroixx; if s='tdisque' then listefleche[-1+i].ext1:=tdisque; readln(f,s); if s='trien' then listefleche[-1+i].ext2:=trien; if s='tffleche' then listefleche[-1+i].ext2:=tffleche; if s='ttrait' then listefleche[-1+i].ext2:=ttrait; if s='trond' then listefleche[-1+i].ext2:=trond; if s='tcroix' then listefleche[-1+i].ext2:=tcroix; if s='tcroixx' then listefleche[-1+i].ext2:=tcroixx; if s='tdisque' then listefleche[-1+i].ext2:=tdisque; readln(f,s); if s='pssolid' then listefleche[-1+i].styletrait:=pssolid; if s='psdot' then listefleche[-1+i].styletrait:=psdot; if s='psdash' then listefleche[-1+i].styletrait:=psdash; if s='psdashdot' then listefleche[-1+i].styletrait:=psdashdot; if s='psdashdotdot' then listefleche[-1+i].styletrait:=psdashdotdot; readln(f,listefleche[-1+i].taille1,listefleche[-1+i].taille2); listefleche[-1+i].create(listefleche[-1+i].a1x,listefleche[-1+i].a1y, listefleche[-1+i].a2x,listefleche[-1+i].a2y, listefleche[-1+i].epaisseur,listefleche[-1+i].couleur, listefleche[-1+i].ext1,listefleche[-1+i].ext2, listefleche[-1+i].styletrait, listefleche[-1+i].taille1,listefleche[-1+i].taille2); end; goto 12345; end; if s1='Nombre d''oeils:' then begin readln(f,newnombreoeil); retaillepoeil(listeoeil,nombreoeil,newnombreoeil); nombreoeil:=newnombreoeil; if nombreoeil>0 then for i:=1 to nombreoeil do begin readln(f,s); readln(f,listeoeil[-1+i].cx,listeoeil[-1+i].cy,listeoeil[-1+i].ax, listeoeil[-1+i].ay,listeoeil[-1+i].epaisseur,listeoeil[-1+i].couleur); if not( listeoeil[-1+i].create(listeoeil[-1+i].cx,listeoeil[-1+i].cy, listeoeil[-1+i].ax,listeoeil[-1+i].ay,listeoeil[-1+i].epaisseur, listeoeil[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de mesures de distances' then begin readln(f,newnombremetre); retaillepmetre(listemetre,nombremetre,newnombremetre); nombremetre:=newnombremetre; if nombremetre>0 then for i:=1 to nombremetre do begin readln(f,s); readln(f,listemetre[-1+i].a1x, listemetre[-1+i].a1y, listemetre[-1+i].a2x,listemetre[-1+i].a2y); if not( listemetre[-1+i].create(listemetre[-1+i].a1x,listemetre[-1+i].a1y, listemetre[-1+i].a2x,listemetre[-1+i].a2y))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de groupes:' then begin readln(f,newnombregroupe); retaillepgroupe(listegroupe,nombregroupe,newnombregroupe); nombregroupe:=newnombregroupe; if nombregroupe> 0 then for i:=1 to nombregroupe do begin listegroupe[-1+i].create; readln(f,s); readln(f,chacha); for j:=1 to chacha do begin readln(f,papa); readln(f,s); aze:=mdneant; if s='mdoeil' then aze:=mdoeil; if s='mddiaphragme' then aze:=mddiaphragme; if s='mdtexteaffiche'then aze:=mdtexteaffiche; if s='mdmiroirconique' then aze:=mdmiroirconique; if s='mdlec' then aze:=mdlec; if s='mdfleche' then aze:=mdfleche; if s='mdmiroirplan' then aze:=mdmiroirplan; if s='mdreseau' then aze:=mdreseau; if s='mdecran' then aze:=mdecran; if s='mdangle' then aze:=mdangle; if s='mdmetre' then aze:=mdmetre; if s='mdlsr' then aze:=mdlsr; if s='mdmscopa' then aze:=mdmscopa; if s='mdlmc' then aze:=mdlmc; if s='mdlmd' then aze:=mdlmd; if s='mdmscepa' then aze:=mdmscepa; if s='mdmscore' then aze:=mdmscore; if s='mdmscere' then aze:=mdmscere; if s='mdpolyhedre' then aze:=mdpolyhedre; if s='mdrayon' then aze:=mdrayon; if s='mdsourceponctuelle' then aze:=mdsourceponctuelle; if s='mdondeplane' then aze:=mdondeplane; if s='mdpolycercle' then aze:=mdpolycercle; if s='mdsphere' then aze:=mdsphere; if s='mdprisme' then aze:=mdprisme; listegroupe[-1+i].add(aze,papa); end; {de la boucle chacha} end; {de la boucle nombregroupe} goto 12345; end; if s1='couleur fond simulation' then begin readln(f,couleurfondsimulation); goto 12345; end; if s1='empennage' then begin readln(f,s); readln(f,positionempennage); readln(f,s); readln(f,tailleempennage); goto 12345; end; 12345: end; {du while not(eof(f))} {gestion des erreurs de tout le bloc de lecture} 9852: except application.messagebox(pchar(rsFichierEndom), pchar(rsErreur), mb_ok); Nouveau1Click(sender); end; closefile(f); if fileexistsutf8(copy(nerina,1,length(nerina)-3)+'txt') then nerina:=copy(nerina,1,length(nerina)-3)+'txt' else if fileexistsutf8(copy(nerina,1,length(nerina)-3)+'rtf') then nerina:=copy(nerina,1,length(nerina)-3)+'rtf' else nerina:=copy(nerina,1,length(nerina)-3)+'txt'; try assignfile(f,UTF8ToSys(nerina)); reset(f); closefile(f); formediteur.caption:=Format(rsCommentaires5, [copy(nerina, 1, length( nerina)-3)]); formediteur.show; formediteur.WindowState:=wsnormal; formediteur.fichierouvrir(nerina); if formediteur.memo1.lines.count=0 then formediteur.WindowState:=wsminimized; except formediteur.caption:=Format(rsCommentaires5, [copy(nerina, 1, length(nerina)-3) ]); formediteur.show; formediteur.WindowState:=wsminimized; formediteur.memo1.lines.Clear; end; rapportactuel:=(yymax-yymin)/(xxmax-xxmin); afficherlagrille1.checked:=tracergrille; attractiondelagrille1.Checked:=attractiongrille; cochegrille.checked:=tracergrille; cocheattraction.Checked:=attractiongrille; N7.checked:=optionnormale; cochenormale.checked:=optionnormale; Afficherlesangles1.checked:=optionangles; cocheangles.checked:=optionangles; Rafraichit; fichierouvert:=true; modifie:=false; nomsauvegarde:=copy(nerina,1,length(nerina)-3)+'opt'; {opendialog1.FileName;} form1.Caption:=Format(rsEspaceDeTrav4, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax), extractfilename(nomsauvegarde)]); nombre_etats_sauvegardes:=0; niveau_max_sauvegarde:=0; commentaire_change:=false; sauvevirtuel; rtablir1.enabled:=false; refaire1.Enabled:=false; end; procedure TForm1.SuperposeSimulation(Sender: TObject;repertoiredepart:string); var f:textfile; i,j:integer; s,s1:string; newnombremiroirplan,newnombrereseau,newnombremscopa,newnombremscepa,newnombremscore, newnombremscere,newnombrelmc,newnombrelmd,newnombrerayon,newnombrelsr, newnombresourceponctuelle,newnombreondeplane,newnombreecran,toto, newnombrepolyhedre,newnombresphere,newnombremiroirconique, newnombretexte,newnombrediaphragme,newnombrelec,newnombrepolycercle, newnombreangle,newnombrefleche,newnombreoeil,newnombregroupe, newnombremetre,newnombreprisme:integer; coco:tcolor; aze:ttypeelementmodif; chacha,papa:integer; versionfichier:longint; nerina:widestring; newunitelongueur:shortstring; newxxmin,newxxmax,newyymin,newyymax,newgrillex,newgrilley:extended; ecraser_parametres_actuels:boolean; newpourcentagenormale:extended; newcouleurnormale:tcolor; newepaisseurnormale:integer; newdecimalesangles:integer; newlistefantomes:shortstring; newmaxrayonsrecherchesurfacesonde:integer; newindice_vert_par_defaut,newindice_rouge_par_defaut,newindice_bleu_par_defaut:extended; newcouleurfondsimulation:tcolor; newpositionempennage:integer; newtailleempennage:integer; newlongueur_donde_red,newlongueur_donde_blue,newlongueur_donde_green:extended; label 9852,789,12345; begin if modequelquechose then exit; if nombrequelquechose=0 then begin application.MessageBox(pchar(rsPasDeSimulat), pchar(rsHLas2), mb_ok); exit; end; newnombremiroirplan:=0;newnombrereseau:=0;newnombremscopa:=0;newnombremscepa:=0;newnombremscore:=0; newnombremscere:=0;newnombrelmc:=0;newnombrelmd:=0;newnombrerayon:=0;newnombrelsr:=0; newnombresourceponctuelle:=0;newnombreondeplane:=0;newnombreecran:=0; newnombrepolyhedre:=0;newnombresphere:=0;newnombremiroirconique:=0; newnombretexte:=0;newnombrediaphragme:=0;newnombrelec:=0;newnombrepolycercle:=0; newnombreangle:=0;newnombrefleche:=0;newnombreoeil:=0;newnombregroupe:=0; newnombremetre:=0;newnombreprisme:=0; OpenDialog1.FileName := ''; opendialog1.InitialDir:=repertoiredepart; if not(OpenDialog1.Execute) then exit else nerina:=OpenDialog1.FileName; { affiche la boîte de dialogue d'ouverture } if ((pos(repertoire_exemples,extractfilepath(nerina))=0) and (pos(repertoire_simul_perso,extractfilepath(nerina))=0)) then repertoire_actuel:=extractfilepath(nerina); if nom_fichier_config_perso<>'' then begin try if not(directoryexistsUTF8(repertoire_config_perso)) then forcedirectories(UTF8ToSys(repertoire_config_perso)); assignfile(f,UTF8ToSys(nom_fichier_config_perso)); rewrite(f); closefile(f); saisiepreferences.BitBtn2Click(Sender); except end; end; 789: try Assignfile(F,UTF8ToSys(nerina)); except Application.messagebox(pchar(rsFichierInacc), pchar(rsAttention), mb_ok); exit; end; // application.MessageBox(pchar(nerina),pchar(UTF8ToSys(nerina)),mb_ok); try reset(f); except Application.messagebox(pchar(rsFichierInacc2), pchar(rsAttention), mb_ok); exit; end; ecraser_parametres_actuels:=application.MessageBox(pchar(rsLesParamTres), pchar(rsAttention), mb_yesno)=idyes; //metazero; versionfichier:=1; try {suivi du bloc de lecture; si une erreur se produit, elle est traitee a la fin} while not(eof(f)) do begin readln(f,s1); if s1='NE PAS MODIFIER CE FICHIER' then goto 12345; if s1='VERSION' then begin readln(f,versionfichier); readln(f,newxxmin,newxxmax,newyymin,newyymax); if newxxminxxmax then xxmax:=newxxmax; if newyyminyymax then yymax:=newyymax; readln(f,s); if ecraser_parametres_actuels then respectrapport:=(s='TRUE'); goto 12345; end; if s1= 'UNITE' then begin readln(f,newunitelongueur); if ecraser_parametres_actuels then unitelongueur:=newunitelongueur; goto 12345; end; if s1='OPTIONS GRILLE' then begin readln(f,s); if ecraser_parametres_actuels then tracergrille:=(s='TRUE'); readln(f,s); if ecraser_parametres_actuels then attractiongrille:=(s='TRUE'); readln(f,newgrillex,newgrilley); if ecraser_parametres_actuels then begin grillex:=newgrillex; grilley:=newgrilley; end; goto 12345; end; if s1= 'OPTIONS NORMALES' then begin readln(f,s); if ecraser_parametres_actuels then optionnormale:=(s='TRUE'); readln(f,s); if ecraser_parametres_actuels then optionangles:=(s='TRUE'); readln(f,newpourcentagenormale); readln(f,newcouleurnormale); readln(f,newepaisseurnormale); readln(f,newdecimalesangles); if ecraser_parametres_actuels then begin pourcentagenormale:=newpourcentagenormale; couleurnormale:=newcouleurnormale; epaisseurnormale:=newepaisseurnormale; decimalesangles:=newdecimalesangles; end; goto 12345; end; if s1='OPTIONS SEGMENTS FANTOMES' then begin readln(f,s); if ecraser_parametres_actuels then fantomespresents:=(s='TRUE'); readln(f,newlistefantomes); if ecraser_parametres_actuels then listefantomes:=newlistefantomes; goto 12345; end; if s1= 'NOMBRE POINTS TRACE SURFACE ONDE' then begin readln(f,newmaxrayonsrecherchesurfacesonde); if ecraser_parametres_actuels then maxrayonsrecherchesurfacesonde:=newmaxrayonsrecherchesurfacesonde; if fantomespresents then for i:=1 to maxtotalsegment do fantomes[i]:=(pos(','+inttostr(i)+',',listefantomes)<>0) or (pos('('+inttostr(i)+',',listefantomes)<>0) or (pos(','+inttostr(i)+')',listefantomes)<>0) or (pos('('+inttostr(i)+')',listefantomes)<>0); goto 12345; end; if s1='INDICES PAR DEFAUT' then begin readln(f,newindice_vert_par_defaut); readln(f,newindice_bleu_par_defaut); readln(f,newindice_rouge_par_defaut); if ecraser_parametres_actuels then begin indice_vert_par_defaut:=newindice_vert_par_defaut; indice_bleu_par_defaut:=newindice_bleu_par_defaut; indice_rouge_par_defaut:=newindice_rouge_par_defaut; end; goto 12345; end; if s1='LAMBDA' then begin readln(f,newlongueur_donde_red); readln(f,newlongueur_donde_blue); readln(f,newlongueur_donde_green); if ecraser_parametres_actuels then begin longueur_donde_red:=newlongueur_donde_red; longueur_donde_blue:=newlongueur_donde_blue; longueur_donde_green:=newlongueur_donde_green; end; goto 12345; end; if s1='Nombre de miroirs plans:' then begin readln(f,newnombremiroirplan); retaillepmiroirplan(listemiroirplan,nombremiroirplan,nombremiroirplan+newnombremiroirplan); nombremiroirplan:=nombremiroirplan+newnombremiroirplan; if newnombremiroirplan>0 then for i:=nombremiroirplan-newnombremiroirplan+1 to nombremiroirplan do begin readln(f,s); readln(f,listemiroirplan[-1+i].a1x,listemiroirplan[-1+i].a1y,listemiroirplan[-1+i].a2x, listemiroirplan[-1+i].a2y,listemiroirplan[-1+i].epaisseur,listemiroirplan[-1+i].couleur); readln(f,s); listemiroirplan[-1+i].hachures:=(s='TRUE'); if not( listemiroirplan[-1+i].create(listemiroirplan[-1+i].a1x,listemiroirplan[-1+i].a1y, listemiroirplan[-1+i].a2x,listemiroirplan[-1+i].a2y,listemiroirplan[-1+i].epaisseur, listemiroirplan[-1+i].couleur,listemiroirplan[-1+i].hachures)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de reseaux:' then begin readln(f,newnombreReseau); retaillepReseau(listeReseau,nombreReseau,nombreReseau+newnombreReseau); nombreReseau:=nombreReseau+newnombreReseau; if newnombreReseau>0 then for i:=nombreReseau-newnombreReseau+1 to nombreReseau do begin readln(f,s); readln(f,listeReseau[-1+i].a1x,listeReseau[-1+i].a1y,listeReseau[-1+i].a2x, listeReseau[-1+i].a2y); readln(f,listeReseau[-1+i].epaisseur); readln(f,listeReseau[-1+i].couleur); readln(f,listeReseau[-1+i].pas); readln(f,s); listeReseau[-1+i].entransmission:=(s='TRUE'); readln(f,s); listeReseau[-1+i].hachures:=(s='TRUE'); readln(f,listeReseau[-1+i].ordre_min); readln(f,listeReseau[-1+i].ordre_max); if not( listeReseau[-1+i].create(listeReseau[-1+i].a1x,listeReseau[-1+i].a1y, listeReseau[-1+i].a2x,listeReseau[-1+i].a2y,listeReseau[-1+i].epaisseur, listeReseau[-1+i].couleur,listeReseau[-1+i].pas,listeReseau[-1+i].entransmission,listeReseau[-1+i].hachures, listeReseau[-1+i].ordre_min,listeReseau[-1+i].ordre_max)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs concaves paraxiaux:' then begin readln(f,newnombremscopa); retaillepmscopa(listemscopa,nombremscopa,nombremscopa+newnombremscopa); nombremscopa:=nombremscopa+newnombremscopa; if newnombremscopa>0 then for i:=nombremscopa-newnombremscopa+1 to nombremscopa do begin readln(f,s); readln(f,listemscopa[-1+i].a1x,listemscopa[-1+i].a1y,listemscopa[-1+i].a2x, listemscopa[-1+i].a2y,listemscopa[-1+i].focale,listemscopa[-1+i].epaisseur, listemscopa[-1+i].couleur,listemscopa[-1+i].couleuraxe); readln(f,s); listemscopa[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscopa[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscopa[-1+i].trou:=(s='TRUE'); readln(f,listemscopa[-1+i].diametretrou); if not( listemscopa[-1+i].create2(listemscopa[-1+i].a1x,listemscopa[-1+i].a1y, listemscopa[-1+i].a2x,listemscopa[-1+i].a2y,listemscopa[-1+i].focale, listemscopa[-1+i].epaisseur, listemscopa[-1+i].couleur,listemscopa[-1+i].couleuraxe, listemscopa[-1+i].hachures,listemscopa[-1+i].axefocal, listemscopa[-1+i].trou,listemscopa[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs convexes paraxiaux:' then begin readln(f,newnombremscepa); retaillepmscepa(listemscepa,nombremscepa,nombremscepa+newnombremscepa); nombremscepa:=nombremscepa+newnombremscepa; if newnombremscepa>0 then for i:=nombremscepa-newnombremscepa+1 to nombremscepa do begin readln(f,s); readln(f,listemscepa[-1+i].a1x,listemscepa[-1+i].a1y,listemscepa[-1+i].a2x, listemscepa[-1+i].a2y,listemscepa[-1+i].focale,listemscepa[-1+i].epaisseur, listemscepa[-1+i].couleur,listemscepa[-1+i].couleuraxe); readln(f,s); listemscepa[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscepa[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscepa[-1+i].trou:=(s='TRUE'); readln(f,listemscepa[-1+i].diametretrou); if not( listemscepa[-1+i].create2(listemscepa[-1+i].a1x,listemscepa[-1+i].a1y, listemscepa[-1+i].a2x,listemscepa[-1+i].a2y,listemscepa[-1+i].focale, listemscepa[-1+i].epaisseur, listemscepa[-1+i].couleur,listemscepa[-1+i].couleuraxe, listemscepa[-1+i].hachures,listemscepa[-1+i].axefocal, listemscepa[-1+i].trou,listemscepa[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs concaves reels:' then begin readln(f,newnombremscore); retaillepmscore(listemscore,nombremscore,nombremscore+newnombremscore); nombremscore:=nombremscore+newnombremscore; if newnombremscore>0 then for i:=nombremscore-newnombremscore+1 to nombremscore do begin readln(f,s); readln(f,listemscore[-1+i].a1x,listemscore[-1+i].a1y,listemscore[-1+i].a2x, listemscore[-1+i].a2y,listemscore[-1+i].rayoncourbure,listemscore[-1+i].epaisseur, listemscore[-1+i].couleur,listemscore[-1+i].couleuraxe); readln(f,s); listemscore[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscore[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscore[-1+i].aigu:=(s='TRUE'); readln(f,s); listemscore[-1+i].trou:=(s='TRUE'); readln(f,listemscore[-1+i].diametretrou); if not( listemscore[-1+i].create2(listemscore[-1+i].a1x,listemscore[-1+i].a1y, listemscore[-1+i].a2x,listemscore[-1+i].a2y,listemscore[-1+i].rayoncourbure, listemscore[-1+i].epaisseur, listemscore[-1+i].couleur,listemscore[-1+i].couleuraxe, listemscore[-1+i].hachures,listemscore[-1+i].axefocal,listemscore[-1+i].aigu, listemscore[-1+i].trou,listemscore[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs convexes reels:' then begin readln(f,newnombremscere); retaillepmscere(listemscere,nombremscere,nombremscere+newnombremscere); nombremscere:=nombremscere+newnombremscere; if newnombremscere>0 then for i:=nombremscere-newnombremscere+1 to nombremscere do begin readln(f,s); readln(f,listemscere[-1+i].a1x,listemscere[-1+i].a1y,listemscere[-1+i].a2x, listemscere[-1+i].a2y,listemscere[-1+i].rayoncourbure,listemscere[-1+i].epaisseur, listemscere[-1+i].couleur,listemscere[-1+i].couleuraxe); readln(f,s); listemscere[-1+i].hachures:=(s='TRUE'); readln(f,s); listemscere[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemscere[-1+i].aigu:=(s='TRUE'); readln(f,s); listemscere[-1+i].trou:=(s='TRUE'); readln(f,listemscere[-1+i].diametretrou); if not( listemscere[-1+i].create2(listemscere[-1+i].a1x,listemscere[-1+i].a1y, listemscere[-1+i].a2x,listemscere[-1+i].a2y,listemscere[-1+i].rayoncourbure, listemscere[-1+i].epaisseur, listemscere[-1+i].couleur,listemscere[-1+i].couleuraxe, listemscere[-1+i].hachures,listemscere[-1+i].axefocal,listemscere[-1+i].aigu, listemscere[-1+i].trou,listemscere[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentiles minces convergentes:' then begin readln(f,newnombrelmc); retailleplmc(listelmc,nombrelmc,nombrelmc+newnombrelmc); nombrelmc:=nombrelmc+newnombrelmc; if newnombrelmc>0 then for i:=nombrelmc-newnombrelmc+1 to nombrelmc do begin readln(f,s); readln(f,listelmc[-1+i].a1x,listelmc[-1+i].a1y,listelmc[-1+i].a2x, listelmc[-1+i].a2y,listelmc[-1+i].focale,listelmc[-1+i].epaisseur, listelmc[-1+i].couleur,listelmc[-1+i].couleuraxe); readln(f,s); listelmc[-1+i].axefocal:=(s='TRUE'); if not(listelmc[-1+i].create2(listelmc[-1+i].a1x,listelmc[-1+i].a1y, listelmc[-1+i].a2x,listelmc[-1+i].a2y,listelmc[-1+i].focale, listelmc[-1+i].epaisseur, listelmc[-1+i].couleur,listelmc[-1+i].couleuraxe, listelmc[-1+i].axefocal))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentiles minces divergentes:' then begin readln(f,newnombrelmd); retailleplmd(listelmd,nombrelmd,nombrelmd+newnombrelmd); nombrelmd:=nombrelmd+newnombrelmd; if newnombrelmd>0 then for i:=nombrelmd-newnombrelmd+1 to nombrelmd do begin readln(f,s); readln(f,listelmd[-1+i].a1x,listelmd[-1+i].a1y,listelmd[-1+i].a2x, listelmd[-1+i].a2y,listelmd[-1+i].focale,listelmd[-1+i].epaisseur, listelmd[-1+i].couleur,listelmd[-1+i].couleuraxe); readln(f,s); listelmd[-1+i].axefocal:=(s='TRUE'); if not( listelmd[-1+i].create2(listelmd[-1+i].a1x,listelmd[-1+i].a1y, listelmd[-1+i].a2x,listelmd[-1+i].a2y,listelmd[-1+i].focale, listelmd[-1+i].epaisseur, listelmd[-1+i].couleur,listelmd[-1+i].couleuraxe, listelmd[-1+i].axefocal))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de rayons:' then begin readln(f,newnombrerayon); retailleprayon(listerayon,nombrerayon,nombrerayon+newnombrerayon); nombrerayon:=nombrerayon+newnombrerayon; if newnombrerayon>0 then for i:=nombrerayon-newnombrerayon+1 to nombrerayon do begin readln(f,s); readln(f,listerayon[-1+i].ax,listerayon[-1+i].ay,listerayon[-1+i].kx, listerayon[-1+i].ky,listerayon[-1+i].couleur,listerayon[-1+i].epaisseur, listerayon[-1+i].nombremaxenfant); readln(f,s); listerayon[-1+i].vav:=s; readln(f,s); listerayon[-1+i].vaa:=s; if versionfichier>=200 then begin readln(f,s); readln(f,listerayon[-1+i].maxsegment); end else listerayon[-1+i].maxsegment:=maxmaxsegment; if not( listerayon[-1+i].create(listerayon[-1+i].ax,listerayon[-1+i].ay, listerayon[-1+i].kx,listerayon[-1+i].ky, listerayon[-1+i].couleur, listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa, listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment ))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de sources ponctuelles:' then begin readln(f,newnombresourceponctuelle); retaillepsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,nombresourceponctuelle+newnombresourceponctuelle); nombresourceponctuelle:=nombresourceponctuelle+newnombresourceponctuelle; if newnombresourceponctuelle>0 then for i:=nombresourceponctuelle-newnombresourceponctuelle+1 to nombresourceponctuelle do begin readln(f,s); readln(f,listesourceponctuelle[-1+i].nombrederayon, listesourceponctuelle[-1+i].sx, listesourceponctuelle[-1+i].sy, listesourceponctuelle[-1+i].a1x, listesourceponctuelle[-1+i].a1y, listesourceponctuelle[-1+i].a2x, listesourceponctuelle[-1+i].a2y, listesourceponctuelle[-1+i].couleur, listesourceponctuelle[-1+i].epaisseur, listesourceponctuelle[-1+i].maxenfantparrayon); readln(f,s); listesourceponctuelle[-1+i].vav:=s; readln(f,s); listesourceponctuelle[-1+i].vaa:=s; readln(f,s); listesourceponctuelle[-1+i].sourcevirtuelle:=(s='TRUE'); readln(f,s); listesourceponctuelle[-1+i].tracersurfacesonde:=(s='TRUE'); readln(f,s); listesourceponctuelle[-1+i].listechemins:=s; if versionfichier>=200 then begin readln(f,s); readln(f,listesourceponctuelle[-1+i].maxsegment); end else listesourceponctuelle[-1+i].maxsegment:=maxmaxsegment; if not(listesourceponctuelle[-1+i].create(listesourceponctuelle[-1+i].nombrederayon, listesourceponctuelle[-1+i].sx, listesourceponctuelle[-1+i].sy, listesourceponctuelle[-1+i].a1x, listesourceponctuelle[-1+i].a1y, listesourceponctuelle[-1+i].a2x, listesourceponctuelle[-1+i].a2y, listesourceponctuelle[-1+i].couleur, listesourceponctuelle[-1+i].epaisseur,listesourceponctuelle[-1+i].vav, listesourceponctuelle[-1+i].vaa, listesourceponctuelle[-1+i].maxenfantparrayon,listesourceponctuelle[-1+i].sourcevirtuelle, listesourceponctuelle[-1+i].tracersurfacesonde,listesourceponctuelle[-1+i].listechemins, listesourceponctuelle[-1+i].maxsegment))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''ondes planes:' then begin readln(f,newnombreondeplane); retaillepondeplane(listeondeplane,nombreondeplane,nombreondeplane+newnombreondeplane); nombreondeplane:=nombreondeplane+newnombreondeplane; if newnombreondeplane>0 then for i:=nombreondeplane-newnombreondeplane+1 to nombreondeplane do begin readln(f,s); readln(f,listeondeplane[-1+i].nombrederayon, listeondeplane[-1+i].sx, listeondeplane[-1+i].sy, listeondeplane[-1+i].a1x, listeondeplane[-1+i].a1y, listeondeplane[-1+i].a2x, listeondeplane[-1+i].a2y, listeondeplane[-1+i].couleur, listeondeplane[-1+i].epaisseur, listeondeplane[-1+i].maxenfantparrayon); readln(f,s); listeondeplane[-1+i].vav:=s; readln(f,s); listeondeplane[-1+i].vaa:=s; readln(f,s); listeondeplane[-1+i].tracersurfacesonde:=(s='TRUE'); readln(f,s); listeondeplane[-1+i].listechemins:=s; if versionfichier>=200 then begin readln(f,s); readln(f,listeondeplane[-1+i].maxsegment); end else listeondeplane[-1+i].maxsegment:=maxmaxsegment; if not(listeondeplane[-1+i].create(listeondeplane[-1+i].nombrederayon, listeondeplane[-1+i].sx, listeondeplane[-1+i].sy, listeondeplane[-1+i].a1x, listeondeplane[-1+i].a1y, listeondeplane[-1+i].a2x, listeondeplane[-1+i].a2y, listeondeplane[-1+i].couleur, listeondeplane[-1+i].epaisseur,listeondeplane[-1+i].vav, listeondeplane[-1+i].vaa,listeondeplane[-1+i].maxenfantparrayon, listeondeplane[-1+i].tracersurfacesonde, listeondeplane[-1+i].listechemins, listeondeplane[-1+i].maxsegment))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''ecrans:' then begin readln(f,newnombreecran); retaillepecran(listeecran,nombreecran,nombreecran+newnombreecran); nombreecran:=nombreecran+newnombreecran; if newnombreecran>0 then for i:=nombreecran-newnombreecran+1 to nombreecran do begin readln(f,s); readln(f,listeecran[-1+i].a1x,listeecran[-1+i].a1y,listeecran[-1+i].a2x, listeecran[-1+i].a2y,listeecran[-1+i].epaisseur,listeecran[-1+i].couleur); if not( listeecran[-1+i].create(listeecran[-1+i].a1x,listeecran[-1+i].a1y, listeecran[-1+i].a2x,listeecran[-1+i].a2y,listeecran[-1+i].epaisseur, listeecran[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de diaphragmes:' then begin readln(f,newnombrediaphragme); retaillepdiaphragme(listediaphragme,nombrediaphragme,nombrediaphragme+newnombrediaphragme); nombrediaphragme:=nombrediaphragme+newnombrediaphragme; if newnombrediaphragme>0 then for i:=nombrediaphragme-newnombrediaphragme+1 to nombrediaphragme do begin readln(f,s); readln(f,listediaphragme[-1+i].cx,listediaphragme[-1+i].cy,listediaphragme[-1+i].anglepolaire, listediaphragme[-1+i].rint,listediaphragme[-1+i].rext, listediaphragme[-1+i].epaisseur,listediaphragme[-1+i].couleur); if not( listediaphragme[-1+i].create2(listediaphragme[-1+i].cx, listediaphragme[-1+i].cy,listediaphragme[-1+i].anglepolaire, listediaphragme[-1+i].rint,listediaphragme[-1+i].rext, listediaphragme[-1+i].couleur,listediaphragme[-1+i].epaisseur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lames semi reflechissantes:' then begin readln(f,newnombrelsr); retailleplsr(listelsr,nombrelsr,nombrelsr+newnombrelsr); nombrelsr:=nombrelsr+newnombrelsr; if newnombrelsr>0 then for i:=nombrelsr-newnombrelsr+1 to nombrelsr do begin readln(f,s); readln(f,listelsr[-1+i].a1x,listelsr[-1+i].a1y,listelsr[-1+i].a2x, listelsr[-1+i].a2y,listelsr[-1+i].epaisseur,listelsr[-1+i].couleur); if not( listelsr[-1+i].create(listelsr[-1+i].a1x,listelsr[-1+i].a1y, listelsr[-1+i].a2x,listelsr[-1+i].a2y,listelsr[-1+i].epaisseur, listelsr[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de polyhedres:' then begin readln(f,newnombrepolyhedre); retailleppolyhedre(listepolyhedre,nombrepolyhedre,nombrepolyhedre+newnombrepolyhedre); nombrepolyhedre:=nombrepolyhedre+newnombrepolyhedre; if newnombrepolyhedre>0 then for i:=nombrepolyhedre-newnombrepolyhedre+1 to nombrepolyhedre do begin readln(f,s); readln(f,listepolyhedre[-1+i].nombresommet); for j:=1 to listepolyhedre[-1+i].nombresommet do readln(f,listepolyhedre[-1+i].messommets[j].ax,listepolyhedre[-1+i].messommets[j].ay); readln(f,listepolyhedre[-1+i].indicerouge,listepolyhedre[-1+i].indicebleu,listepolyhedre[-1+i].indicevert); readln(f,listepolyhedre[-1+i].couleurbord,listepolyhedre[-1+i].couleurfond); readln(f,s); if s='1' then listepolyhedre[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listepolyhedre[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listepolyhedre[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listepolyhedre[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listepolyhedre[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listepolyhedre[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listepolyhedre[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listepolyhedre[-1+i].reflechisortant:=reflechisipasrefracte; if not(listepolyhedre[-1+i].create(listepolyhedre[-1+i].nombresommet,listepolyhedre[-1+i].messommets, listepolyhedre[-1+i].indicerouge,listepolyhedre[-1+i].indicebleu,listepolyhedre[-1+i].indicevert, listepolyhedre[-1+i].couleurbord,listepolyhedre[-1+i].couleurfond, listepolyhedre[-1+i].reflechientrant,listepolyhedre[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de prismes:' then begin readln(f,newnombreprisme); retaillepprisme(listeprisme,nombreprisme,nombreprisme+newnombreprisme); nombreprisme:=nombreprisme+newnombreprisme; if newnombreprisme>0 then for i:=nombreprisme-newnombreprisme+1 to nombreprisme do begin readln(f,s); readln(f,listeprisme[-1+i].gx,listeprisme[-1+i].gy); readln(f,listeprisme[-1+i].ax,listeprisme[-1+i].ay); readln(f,listeprisme[-1+i].bx,listeprisme[-1+i].by); readln(f,listeprisme[-1+i].indicerouge,listeprisme[-1+i].indicebleu,listeprisme[-1+i].indicevert); readln(f,listeprisme[-1+i].couleurbord,listeprisme[-1+i].couleurfond); readln(f,s); if s='1' then listeprisme[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listeprisme[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listeprisme[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listeprisme[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listeprisme[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listeprisme[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listeprisme[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listeprisme[-1+i].reflechisortant:=reflechisipasrefracte; if not(listeprisme[-1+i].create(listeprisme[-1+i].gx,listeprisme[-1+i].gy, listeprisme[-1+i].ax,listeprisme[-1+i].ay,listeprisme[-1+i].bx,listeprisme[-1+i].by, listeprisme[-1+i].indicerouge,listeprisme[-1+i].indicebleu,listeprisme[-1+i].indicevert, listeprisme[-1+i].couleurbord,listeprisme[-1+i].couleurfond, listeprisme[-1+i].reflechientrant,listeprisme[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de polycercles:' then begin readln(f,newnombrepolycercle); retailleppolycercle(listepolycercle,nombrepolycercle,nombrepolycercle+newnombrepolycercle); nombrepolycercle:=nombrepolycercle+newnombrepolycercle; if newnombrepolycercle>0 then for i:=nombrepolycercle-newnombrepolycercle+1 to nombrepolycercle do begin readln(f,s); readln(f,listepolycercle[-1+i].nombresommet); for j:=1 to listepolycercle[-1+i].nombresommet do readln(f,listepolycercle[-1+i].messommets[j].ax,listepolycercle[-1+i].messommets[j].ay); for j:=1 to listepolycercle[-1+i].nombresommet do readln(f,listepolycercle[-1+i].mess[j].ax,listepolycercle[-1+i].mess[j].ay); for j:=1 to listepolycercle[-1+i].nombresommet do begin readln(f,s); listepolycercle[-1+i].rectiligne[j]:=(s='TRUE'); end; readln(f,listepolycercle[-1+i].indicerouge,listepolycercle[-1+i].indicebleu,listepolycercle[-1+i].indicevert); readln(f,listepolycercle[-1+i].couleurbord,listepolycercle[-1+i].couleurfond); readln(f,s); if s='1' then listepolycercle[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listepolycercle[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listepolycercle[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listepolycercle[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listepolycercle[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listepolycercle[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listepolycercle[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listepolycercle[-1+i].reflechisortant:=reflechisipasrefracte; if not(listepolycercle[-1+i].create(listepolycercle[-1+i].nombresommet, listepolycercle[-1+i].messommets,listepolycercle[-1+i].mess,listepolycercle[-1+i].rectiligne, listepolycercle[-1+i].indicerouge,listepolycercle[-1+i].indicebleu,listepolycercle[-1+i].indicevert, listepolycercle[-1+i].couleurbord,listepolycercle[-1+i].couleurfond, listepolycercle[-1+i].reflechientrant,listepolycercle[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de spheres:' then begin readln(f,newnombresphere); retaillepsphere(listesphere,nombresphere,nombresphere+newnombresphere); nombresphere:=nombresphere+newnombresphere; if newnombresphere>0 then for i:=nombresphere-newnombresphere+1 to nombresphere do begin readln(f,s); readln(f,listesphere[-1+i].cx,listesphere[-1+i].cy,listesphere[-1+i].rayon, listesphere[-1+i].indicerouge,listesphere[-1+i].indicebleu,listesphere[-1+i].indicevert); readln(f,listesphere[-1+i].couleurbord,listesphere[-1+i].couleurfond); readln(f,s); if s='1' then listesphere[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listesphere[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listesphere[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listesphere[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listesphere[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listesphere[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listesphere[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listesphere[-1+i].reflechisortant:=reflechisipasrefracte; if not(listesphere [-1+i].create(listesphere[-1+i].cx,listesphere[-1+i].cy,listesphere[-1+i].rayon, listesphere[-1+i].indicerouge,listesphere[-1+i].indicebleu,listesphere[-1+i].indicevert, listesphere[-1+i].couleurbord,listesphere[-1+i].couleurfond, listesphere[-1+i].reflechientrant,listesphere[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs coniques:' then begin readln(f,newnombremiroirconique); retaillepmiroirconique(listemiroirconique,nombremiroirconique,nombremiroirconique+newnombremiroirconique); nombremiroirconique:=nombremiroirconique+newnombremiroirconique; if newnombremiroirconique>0 then for i:=nombremiroirconique-newnombremiroirconique+1 to nombremiroirconique do begin readln(f,s); readln(f,listemiroirconique[-1+i].fx,listemiroirconique[-1+i].fy, listemiroirconique[-1+i].excentricite,listemiroirconique[-1+i].parametre, listemiroirconique[-1+i].theta0,listemiroirconique[-1+i].theta1,listemiroirconique[-1+i].theta2); readln(f,listemiroirconique[-1+i].couleur,listemiroirconique[-1+i].couleuraxe); readln(f,s); listemiroirconique[-1+i].hachures:=(s='TRUE'); readln(f,s); listemiroirconique[-1+i].axefocal:=(s='TRUE'); readln(f,s); listemiroirconique[-1+i].concave:=(s='TRUE'); if not( listemiroirconique[-1+i].create2(listemiroirconique[-1+i].fx, listemiroirconique[-1+i].fy,listemiroirconique[-1+i].theta0, listemiroirconique[-1+i].theta1,listemiroirconique[-1+i].theta2, listemiroirconique[-1+i].excentricite,listemiroirconique[-1+i].parametre, listemiroirconique[-1+i].concave,listemiroirconique[-1+i].couleur, listemiroirconique[-1+i].couleuraxe,listemiroirconique[-1+i].hachures, listemiroirconique[-1+i].axefocal)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de textes:' then begin readln(f,newnombretexte); retailleptexteaffiche(listetexteaffiche,nombretexte,nombretexte+newnombretexte); nombretexte:=nombretexte+newnombretexte; if newnombretexte>0 then for i:=nombretexte-newnombretexte+1 to nombretexte do begin readln(f,s); readln(f,listetexteaffiche[-1+i].texteluimeme); readln(f,listetexteaffiche[-1+i].x,listetexteaffiche[-1+i].y); readln(f,listetexteaffiche[-1+i].policecharset, listetexteaffiche[-1+i].policecolor); readln(f,listetexteaffiche[-1+i].policename); readln(f,listetexteaffiche[-1+i].policesize); readln(f,s); listetexteaffiche[-1+i].policefsbold:=(s='fsbold'); readln(f,s); listetexteaffiche[-1+i].policefsitalic:=(s='fsitalic'); readln(f,s); listetexteaffiche[-1+i].policefsunderline:=(s='fsunderline'); readln(f,s); listetexteaffiche[-1+i].policefsstrikeout:=(s='fsstrikeout'); readln(f,s); if s='fpDefault' then listetexteaffiche[-1+i].policepitch:=fpDefault; if s='fpVariable' then listetexteaffiche[-1+i].policepitch:=fpVariable; if s='fpFixed' then listetexteaffiche[-1+i].policepitch:=fpFixed; if not(listetexteaffiche[-1+i].create(listetexteaffiche[-1+i].texteluimeme, listetexteaffiche[-1+i].policename,listetexteaffiche[-1+i].policecharset, listetexteaffiche[-1+i].policecolor, listetexteaffiche[-1+i].policesize, listetexteaffiche[-1+i].policepitch, listetexteaffiche[-1+i].policefsbold, listetexteaffiche[-1+i].policefsitalic, listetexteaffiche[-1+i].policefsunderline, listetexteaffiche[-1+i].policefsstrikeout,listetexteaffiche[-1+i].x, listetexteaffiche[-1+i].y)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentilles epaisses:' then begin readln(f,newnombrelec); retailleplec(listelec,nombrelec,nombrelec+newnombrelec); nombrelec:=nombrelec+newnombrelec; if newnombrelec>0 then for i:=nombrelec-newnombrelec+1 to nombrelec do begin readln(f,s); readln(f,listelec[-1+i].s1x,listelec[-1+i].s1y,listelec[-1+i].s2x, listelec[-1+i].s2y,listelec[-1+i].r1,listelec[-1+i].r2,listelec[-1+i].diametre); readln(f,listelec[-1+i].couleurfond,listelec[-1+i].couleuraxe); readln(f,s); listelec[-1+i].axefocal:=(s='TRUE'); readln(f,listelec[-1+i].indicerouge,listelec[-1+i].indicebleu,listelec[-1+i].indicevert); readln(f,s); if s='1' then listelec[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listelec[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listelec[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listelec[-1+i].reflechientrant:=reflechisipasrefracte; readln(f,s); if s='1' then listelec[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listelec[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listelec[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listelec[-1+i].reflechisortant:=reflechisipasrefracte; if not(listelec [-1+i].create(listelec[-1+i].s1x,listelec[-1+i].s1y,listelec[-1+i].s2x, listelec[-1+i].s2y,listelec[-1+i].r1,listelec[-1+i].r2,listelec[-1+i].diametre, listelec[-1+i].couleurfond,listelec[-1+i].couleuraxe,listelec[-1+i].axefocal, listelec[-1+i].indicerouge,listelec[-1+i].indicebleu,listelec[-1+i].indicevert, listelec[-1+i].reflechientrant,listelec[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''angles:' then begin readln(f,newnombreangle); retaillepangle(listeangle,nombreangle,nombreangle+newnombreangle); nombreangle:=nombreangle+newnombreangle; if newnombreangle>0 then for i:=nombreangle-newnombreangle+1 to nombreangle do begin readln(f,s); readln(f,listeangle[-1+i].cx,listeangle[-1+i].cy,listeangle[-1+i].a1x, listeangle[-1+i].a1y,listeangle[-1+i].a2x,listeangle[-1+i].a2y); if not(listeangle [-1+i].create(listeangle[-1+i].cx,listeangle[-1+i].cy,listeangle[-1+i].a1x, listeangle[-1+i].a1y,listeangle[-1+i].a2x,listeangle[-1+i].a2y))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de traits:' then begin readln(f,newnombrefleche); retaillepfleche(listefleche,nombrefleche,nombrefleche+newnombrefleche); nombrefleche:=nombrefleche+newnombrefleche; if newnombrefleche>0 then for i:=nombrefleche-newnombrefleche+1 to nombrefleche do begin readln(f,s); readln(f,listefleche[-1+i].a1x,listefleche[-1+i].a1y,listefleche[-1+i].a2x,listefleche[-1+i].a2y); readln(f,listefleche[-1+i].epaisseur,listefleche[-1+i].couleur); readln(f,s); if s='trien' then listefleche[-1+i].ext1:=trien; if s='tffleche' then listefleche[-1+i].ext1:=tffleche; if s='ttrait' then listefleche[-1+i].ext1:=ttrait; if s='trond' then listefleche[-1+i].ext1:=trond; if s='tcroix' then listefleche[-1+i].ext1:=tcroix; if s='tcroixx' then listefleche[-1+i].ext1:=tcroixx; if s='tdisque' then listefleche[-1+i].ext1:=tdisque; readln(f,s); if s='trien' then listefleche[-1+i].ext2:=trien; if s='tffleche' then listefleche[-1+i].ext2:=tffleche; if s='ttrait' then listefleche[-1+i].ext2:=ttrait; if s='trond' then listefleche[-1+i].ext2:=trond; if s='tcroix' then listefleche[-1+i].ext2:=tcroix; if s='tcroixx' then listefleche[-1+i].ext2:=tcroixx; if s='tdisque' then listefleche[-1+i].ext2:=tdisque; readln(f,s); if s='pssolid' then listefleche[-1+i].styletrait:=pssolid; if s='psdot' then listefleche[-1+i].styletrait:=psdot; if s='psdash' then listefleche[-1+i].styletrait:=psdash; if s='psdashdot' then listefleche[-1+i].styletrait:=psdashdot; if s='psdashdotdot' then listefleche[-1+i].styletrait:=psdashdotdot; readln(f,listefleche[-1+i].taille1,listefleche[-1+i].taille2); listefleche[-1+i].create(listefleche[-1+i].a1x,listefleche[-1+i].a1y, listefleche[-1+i].a2x,listefleche[-1+i].a2y, listefleche[-1+i].epaisseur,listefleche[-1+i].couleur, listefleche[-1+i].ext1,listefleche[-1+i].ext2, listefleche[-1+i].styletrait, listefleche[-1+i].taille1,listefleche[-1+i].taille2); end; goto 12345; end; if s1='Nombre d''oeils:' then begin readln(f,newnombreoeil); retaillepoeil(listeoeil,nombreoeil,nombreoeil+newnombreoeil); nombreoeil:=nombreoeil+newnombreoeil; if newnombreoeil>0 then for i:=nombreoeil-newnombreoeil+1 to nombreoeil do begin readln(f,s); readln(f,listeoeil[-1+i].cx,listeoeil[-1+i].cy,listeoeil[-1+i].ax, listeoeil[-1+i].ay,listeoeil[-1+i].epaisseur,listeoeil[-1+i].couleur); if not( listeoeil[-1+i].create(listeoeil[-1+i].cx,listeoeil[-1+i].cy, listeoeil[-1+i].ax,listeoeil[-1+i].ay,listeoeil[-1+i].epaisseur, listeoeil[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de mesures de distances' then begin readln(f,newnombremetre); retaillepmetre(listemetre,nombremetre,nombremetre+newnombremetre); nombremetre:=nombremetre+newnombremetre; if newnombremetre>0 then for i:=nombremetre-newnombremetre+1 to nombremetre do begin readln(f,s); readln(f,listemetre[-1+i].a1x, listemetre[-1+i].a1y, listemetre[-1+i].a2x,listemetre[-1+i].a2y); if not( listemetre[-1+i].create(listemetre[-1+i].a1x,listemetre[-1+i].a1y, listemetre[-1+i].a2x,listemetre[-1+i].a2y))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de groupes:' then begin readln(f,newnombregroupe); retaillepgroupe(listegroupe,nombregroupe,nombregroupe+newnombregroupe); nombregroupe:=nombregroupe+newnombregroupe; if newnombregroupe> 0 then for i:=nombregroupe-newnombregroupe+1 to nombregroupe do begin listegroupe[-1+i].create; readln(f,s); readln(f,chacha); for j:=1 to chacha do begin readln(f,papa); readln(f,s); aze:=mdneant; if s='mdoeil' then begin aze:=mdoeil; papa:=papa+nombreoeil-newnombreoeil; end; if s='mddiaphragme' then begin aze:=mddiaphragme; papa:=papa+nombrediaphragme-newnombrediaphragme; end; if s='mdtexteaffiche'then begin aze:=mdtexteaffiche; papa:=papa+nombretexte-newnombretexte; end; if s='mdmiroirconique' then begin aze:=mdmiroirconique; papa:=papa+nombremiroirconique-newnombremiroirconique; end; if s='mdlec' then begin aze:=mdlec; papa:=papa+nombrelec-newnombrelec; end; if s='mdfleche' then begin aze:=mdfleche; papa:=papa+nombrefleche-newnombrefleche; end; if s='mdmiroirplan' then begin aze:=mdmiroirplan; papa:=papa+nombremiroirplan-newnombremiroirplan; end; if s='mdreseau' then begin aze:=mdreseau; papa:=papa+nombrereseau-newnombrereseau; end; if s='mdecran' then begin aze:=mdecran; papa:=papa+nombreecran-newnombreecran; end; if s='mdangle' then begin aze:=mdangle; papa:=papa+nombreangle-newnombreangle; end; if s='mdmetre' then begin aze:=mdmetre; papa:=papa+nombremetre-newnombremetre; end; if s='mdlsr' then begin aze:=mdlsr; papa:=papa+nombrelsr-newnombrelsr; end; if s='mdmscopa' then begin aze:=mdmscopa; papa:=papa+nombremscopa-newnombremscopa; end; if s='mdlmc' then begin aze:=mdlmc; papa:=papa+nombrelmc-newnombrelmc; end; if s='mdlmd' then begin aze:=mdlmd; papa:=papa+nombrelmd-newnombrelmd; end; if s='mdmscepa' then begin aze:=mdmscepa; papa:=papa+nombremscepa-newnombremscepa; end; if s='mdmscore' then begin aze:=mdmscore; papa:=papa+nombremscore-newnombremscore; end; if s='mdmscere' then begin aze:=mdmscere; papa:=papa+nombremscere-newnombremscere; end; if s='mdpolyhedre' then begin aze:=mdpolyhedre; papa:=papa+nombrepolyhedre-newnombrepolyhedre; end; if s='mdrayon' then begin aze:=mdrayon; papa:=papa+nombrerayon-newnombrerayon; end; if s='mdsourceponctuelle' then begin aze:=mdsourceponctuelle; papa:=papa+nombresourceponctuelle-newnombresourceponctuelle; end; if s='mdondeplane' then begin aze:=mdondeplane; papa:=papa+nombreondeplane-newnombreondeplane; end; if s='mdpolycercle' then begin aze:=mdpolycercle; papa:=papa+nombrepolycercle-newnombrepolycercle; end; if s='mdsphere' then begin aze:=mdsphere; papa:=papa+nombresphere-newnombresphere; end; if s='mdprisme' then begin aze:=mdprisme; papa:=papa+nombreprisme-newnombreprisme; end; listegroupe[-1+i].add(aze,papa); end; {de la boucle chacha} end; {de la boucle nombregroupe} goto 12345; end; if s1='couleur fond simulation' then begin readln(f,newcouleurfondsimulation); if ecraser_parametres_actuels then couleurfondsimulation:=newcouleurfondsimulation; goto 12345; end; if s1='empennage' then begin readln(f,s); readln(f,newpositionempennage); if ecraser_parametres_actuels then positionempennage:=newpositionempennage; readln(f,s); readln(f,newtailleempennage); if ecraser_parametres_actuels then tailleempennage:=newtailleempennage; goto 12345; end; 12345: end; {du while not(eof(f))} {gestion des erreurs de tout le bloc de lecture} 9852: except application.messagebox(pchar(rsFichierEndom), pchar(rsErreur), mb_ok); Nouveau1Click(sender); end; closefile(f); retaillepgroupe(listegroupe,nombregroupe,nombregroupe+1); nombregroupe:=nombregroupe+1; listegroupe[-1+nombregroupe].create; if newnombremiroirplan>0 then for i:=1 to newnombremiroirplan do listegroupe[-1+nombregroupe].add(mdmiroirplan,nombremiroirplan-newnombremiroirplan+i); if newnombreReseau>0 then for i:=1 to newnombreReseau do listegroupe[-1+nombregroupe].add(mdReseau,nombreReseau-newnombreReseau+i); if newnombremscopa>0 then for i:=1 to newnombremscopa do listegroupe[-1+nombregroupe].add(mdmscopa,nombremscopa-newnombremscopa+i); if newnombremscepa>0 then for i:=1 to newnombremscepa do listegroupe[-1+nombregroupe].add(mdmscepa,nombremscepa-newnombremscepa+i); if newnombremscore>0 then for i:=1 to newnombremscore do listegroupe[-1+nombregroupe].add(mdmscore,nombremscore-newnombremscore+i); if newnombremscere>0 then for i:=1 to newnombremscere do listegroupe[-1+nombregroupe].add(mdmscere,nombremscere-newnombremscere+i); if newnombrelmc>0 then for i:=1 to newnombrelmc do listegroupe[-1+nombregroupe].add(mdlmc,nombrelmc-newnombrelmc+i); if newnombrelmd>0 then for i:=1 to newnombrelmd do listegroupe[-1+nombregroupe].add(mdlmd,nombrelmd-newnombrelmd+i); if newnombrerayon>0 then for i:=1 to newnombrerayon do listegroupe[-1+nombregroupe].add(mdrayon,nombrerayon-newnombrerayon+i); if newnombrelsr>0 then for i:=1 to newnombrelsr do listegroupe[-1+nombregroupe].add(mdlsr,nombrelsr-newnombrelsr+i); if newnombresourceponctuelle>0 then for i:=1 to newnombresourceponctuelle do listegroupe[-1+nombregroupe].add(mdsourceponctuelle,nombresourceponctuelle-newnombresourceponctuelle+i); if newnombreondeplane>0 then for i:=1 to newnombreondeplane do listegroupe[-1+nombregroupe].add(mdondeplane,nombreondeplane-newnombreondeplane+i); if newnombreecran>0 then for i:=1 to newnombreecran do listegroupe[-1+nombregroupe].add(mdecran,nombreecran-newnombreecran+i); if newnombrepolyhedre>0 then for i:=1 to newnombrepolyhedre do listegroupe[-1+nombregroupe].add(mdpolyhedre,nombrepolyhedre-newnombrepolyhedre+i); if newnombresphere>0 then for i:=1 to newnombresphere do listegroupe[-1+nombregroupe].add(mdsphere,nombresphere-newnombresphere+i); if newnombremiroirconique>0 then for i:=1 to newnombremiroirconique do listegroupe[-1+nombregroupe].add(mdmiroirconique,nombremiroirconique-newnombremiroirconique+i); if newnombretexte>0 then for i:=1 to newnombretexte do listegroupe[-1+nombregroupe].add(mdtexteaffiche,nombretexte-newnombretexte+i); if newnombrediaphragme>0 then for i:=1 to newnombrediaphragme do listegroupe[-1+nombregroupe].add(mddiaphragme,nombrediaphragme-newnombrediaphragme+i); if newnombrelec>0 then for i:=1 to newnombrelec do listegroupe[-1+nombregroupe].add(mdlec,nombrelec-newnombrelec+i); if newnombrepolycercle>0 then for i:=1 to newnombrepolycercle do listegroupe[-1+nombregroupe].add(mdpolycercle,nombrepolycercle-newnombrepolycercle+i); if newnombreangle>0 then for i:=1 to newnombreangle do listegroupe[-1+nombregroupe].add(mdangle,nombreangle-newnombreangle+i); if newnombrefleche>0 then for i:=1 to newnombrefleche do listegroupe[-1+nombregroupe].add(mdfleche,nombrefleche-newnombrefleche+i); if newnombreoeil>0 then for i:=1 to newnombreoeil do listegroupe[-1+nombregroupe].add(mdoeil,nombreoeil-newnombreoeil+i); if newnombremetre>0 then for i:=1 to newnombremetre do listegroupe[-1+nombregroupe].add(mdmetre,nombremetre-newnombremetre+i); if newnombreprisme>0 then for i:=1 to newnombreprisme do listegroupe[-1+nombregroupe].add(mdprisme,nombreprisme-newnombreprisme+i); application.MessageBox(pchar(rsUnNouveauGro), pchar(rsImportationR), mb_ok); if ecraser_parametres_actuels then begin if fileexistsutf8(copy(nerina,1,length(nerina)-3)+'txt') then nerina:=copy(nerina,1,length(nerina)-3)+'txt' else if fileexistsutf8(copy(nerina,1,length(nerina)-3)+'rtf') then nerina:=copy(nerina,1,length(nerina)-3)+'rtf' else nerina:=copy(nerina,1,length(nerina)-3)+'txt'; try assignfile(f,UTF8ToSys(nerina)); reset(f); closefile(f); formediteur.memo1.Lines.clear; formediteur.caption:=Format(rsCommentaires5, [copy(nerina, 1, length( nerina)-3)]); formediteur.show; formediteur.WindowState:=wsnormal; formediteur.fichierouvrir(nerina); if formediteur.memo1.lines.count=0 then formediteur.WindowState:=wsminimized; except formediteur.caption:=Format(rsCommentaires5, [copy(nerina, 1, length(nerina)-3) ]); formediteur.show; formediteur.WindowState:=wsminimized; formediteur.memo1.lines.Clear; end; end; rapportactuel:=(yymax-yymin)/(xxmax-xxmin); afficherlagrille1.checked:=tracergrille; attractiondelagrille1.Checked:=attractiongrille; cochegrille.checked:=tracergrille; cocheattraction.Checked:=attractiongrille; N7.checked:=optionnormale; cochenormale.checked:=optionnormale; Afficherlesangles1.checked:=optionangles; cocheangles.checked:=optionangles; Rafraichit; fichierouvert:=true; modifie:=false; if ecraser_parametres_actuels then nomsauvegarde:=copy(nerina,1,length(nerina)-3)+'opt'; {opendialog1.FileName;} form1.Caption:=Format(rsEspaceDeTrav4, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax), extractfilename(nomsauvegarde)]); nombre_etats_sauvegardes:=0; niveau_max_sauvegarde:=0; commentaire_change:=false; sauvevirtuel; rtablir1.enabled:=false; refaire1.Enabled:=false; end; procedure TForm1.Quitter1Click(Sender: TObject); begin close; end; procedure TForm1.boutonconiqueconcaveClick(Sender: TObject); begin if NombreMiroirconique=maxmiroirconique then begin application.MessageBox(pchar(rsNombreMaxima23), pchar(rsAttention3), mb_ok); exit; end; boutonconiqueconcave.Enabled:=false; boutonconiqueconcave.OnClick:=nil; form1.image1.Cursor:=crpoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL47; ajoutconiqueconcave:=true; application.ProcessMessages; boutonconiqueconcave.OnClick:=@boutonconiqueconcaveclick; desactiveboutons; end; procedure TForm1.boutonconiqueconvexeClick(Sender: TObject); begin if NombreMiroirconique=maxmiroirconique then begin application.MessageBox(pchar(rsNombreMaxima23), pchar(rsAttention3), mb_ok); exit; end; boutonconiqueconvexe.Enabled:=false; boutonconiqueconvexe.OnClick:=nil; form1.image1.Cursor:=crpoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL48; ajoutconiqueconvexe:=true; application.ProcessMessages; boutonconiqueconvexe.OnClick:=@boutonconiqueconvexeclick; desactiveboutons; end; procedure TForm1.boutontexteClick(Sender: TObject); begin if modequelquechose then exit; if Nombretexte=maxtexte then begin application.MessageBox(pchar(rsNombreMaxima30), pchar(rsAttention3), mb_ok); exit; end; boutontexte.Enabled:=false; boutontexte.OnClick:=nil; application.ProcessMessages; boutontexte.OnClick:=@boutontexteclick; desactiveboutons; with saisietexte do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; fontdialog1.font.Assign(policedefaut); Edit1.Text:=''; end; unit9.fontetexte.Assign(policedefaut); if saisietexte.showmodal=mrcancel then begin activeboutons; exit; end; form1.image1.Cursor:=crtexte; form1.StatusBar1.Panels[2].text:=rsPositionnezL49; ajouttexte:=true; end; procedure TForm1.Textesurledessin1Click(Sender: TObject); begin if Nombretexte=maxtexte then begin application.MessageBox(pchar(rsNombreMaxima31), pchar(rsAttention3), mb_ok); exit; end; with saisietexte2 do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; fontetexte2:=policedefaut; saisietexte2.fontdialog1.font:=policedefaut; saisietexte2.log2.Caption:=unitelongueur; saisietexte2.log1.Caption:=unitelongueur; saisietexte2.edit1.text:=''; saisietexte2.editx.text:=''; saisietexte2.edity.text:=''; saisietexte2.boutonsup.enabled:=false; saisietexte2.caption:=rsAjoutDUnText; if saisietexte2.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Afficherlagrille1Click(Sender: TObject); begin afficherlagrille1.checked:=not(afficherlagrille1.checked); cochegrille.Checked:=afficherlagrille1.checked; tracergrille:=afficherlagrille1.checked; Rafraichit; end; procedure TForm1.cochegrilleClick(Sender: TObject); begin afficherlagrille1.checked:=cochegrille.checked; tracergrille:=cochegrille.checked; Rafraichit; end; procedure TForm1.cocheattractionClick(Sender: TObject); begin Attractiondelagrille1.checked:=cocheattraction.checked; attractiongrille:=cocheattraction.checked; Rafraichit; end; procedure TForm1.Attractiondelagrille1Click(Sender: TObject); begin Attractiondelagrille1.checked:=not(Attractiondelagrille1.checked); cocheattraction.Checked:=Attractiondelagrille1.checked; attractiongrille:=Attractiondelagrille1.checked; end; procedure TForm1.Optionsdelagrille1Click(Sender: TObject); begin with saisiegrille do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiegrille.log1.caption:=unitelongueur; saisiegrille.log2.caption:=unitelongueur; saisiegrille.editpash.text:=floattostr(grillex); saisiegrille.editpasv.text:=floattostr(grilley); saisiegrille.cocheattraction.checked:=attractiongrille; saisiegrille.cocheafficher.checked:=tracergrille; repeat until saisiegrille.showmodal<>mrno; cochegrille.checked:=tracergrille; cocheattraction.checked:=attractiongrille; Rafraichit; end; procedure TForm1.boutonlecClick(Sender: TObject); begin if Nombrelec=maxlec then begin application.MessageBox(pchar(rsNombreMaxima32), pchar(rsAttention3), mb_ok); exit; end; boutonlec.Enabled:=false; boutonlec.OnClick:=nil; form1.image1.Cursor:=crsommet1; form1.StatusBar1.Panels[2].text:=rsPositionnezL50; ajoutlec:=true; application.ProcessMessages; boutonlec.OnClick:=@boutonlecclick; desactiveboutons; end; procedure TForm1.N7Click(Sender: TObject); begin N7.checked:=not(N7.checked); cochenormale.checked:=N7.checked; optionnormale:=N7.checked; Rafraichit; end; procedure TForm1.Afficherlesangles1Click(Sender: TObject); begin Afficherlesangles1.checked:=not(Afficherlesangles1.checked); cocheangles.checked:=Afficherlesangles1.checked; optionangles:=Afficherlesangles1.checked; Rafraichit; end; procedure TForm1.cochenormaleClick(Sender: TObject); begin if optionangles and not (cochenormale.checked) then begin application.messagebox(pchar(rsLAffichageDe), pchar(rsAttention3), mb_ok); cochenormale.checked:=true; end; N7.checked:=(cochenormale.checked); optionnormale:=cochenormale.checked; Rafraichit; end; procedure TForm1.cocheanglesClick(Sender: TObject); begin afficherlesangles1.checked:=(cocheangles.checked); optionangles:=cocheangles.checked; if optionangles then begin cochenormale.checked:=true; N7.Checked:=true; end; Rafraichit; end; procedure TForm1.Optionsdesnormales1Click(Sender: TObject); begin with saisienormale do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisienormale.spinepaisseur.value:=epaisseurnormale; saisienormale.checknormale.checked:=optionnormale; saisienormale.checkangles.Checked:=optionangles; saisienormale.spindecimalesangles.value:=decimalesangles; saisienormale.spinpourcentage.value:=trunc(pourcentagenormale*100); saisienormale.colorgrid1.selected:=(couleurnormale) ; saisienormale.ShowModal; N7.Checked:=optionnormale; afficherlesangles1.checked:=optionangles; cocheangles.checked:=optionangles; cochenormale.checked:=optionnormale; Rafraichit; end; procedure TForm1.boutonpolycercleClick(Sender: TObject); begin if Nombrepolycercle=maxpolycercle then begin application.MessageBox(pchar(rsNombreMaxima26), pchar(rsAttention3), mb_ok); exit; end; boutonpolycercle.Enabled:=false; boutonpolycercle.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL51; ajoutpolycercle:=true; application.ProcessMessages; boutonpolycercle.OnClick:=@boutonpolycercleclick; desactiveboutons; youri[1]:=false; rectifait:=false; with saisienombresommet do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; spinedit1.MinValue:=2; end; saisienombresommet.groupbox1.Caption:=rsSommetsDeCet2; if saisienombresommet.showmodal=mrcancel then begin form1.activeboutons; form1.image1.Cursor:=crdefault; form1.StatusBar1.Panels[2].text:=''; exit; end; nbactsommet:=0; end; procedure TForm1.boutonfantomeClick(Sender: TObject); begin montrernumerossegments:=true; Rafraichit; with saisiefantomes do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiefantomes.cochefantomes.Checked:=fantomespresents; saisiefantomes.editfantomes.Text:=listefantomes; saisiefantomes.showmodal; montrernumerossegments:=false; Rafraichit; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin formediteur.show; formediteur.WindowState:=wsnormal; end; procedure TForm1.Contacterlauteur1Click(Sender: TObject); begin {$ifdef windows}ShellExecute( 0, Nil, PChar('mailto:jeanmarie.biansan@free.fr'),Nil, Nil, SW_NORMAL ); {$endif} {$ifndef windows} application.MessageBox('jeanmarie.biansan@free.fr','Adresse de courriel:',mb_ok); {$endif} end; procedure TForm1.Apropos2Click(Sender: TObject); begin with form4 do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; if form4.showmodal=mrno then application.Terminate; end; procedure TForm1.AidesurOptGeo1Click(Sender: TObject); var v: THTMLBrowserHelpViewer; BrowserPath, BrowserParams: string; p: LongInt; URL: String; BrowserProcess: TProcessUTF8; begin v:=THTMLBrowserHelpViewer.Create(nil); try v.FindDefaultBrowser(BrowserPath,BrowserParams); url:='file:///'+repertoireexecutable+'aide/'+FallbackLang+'/optgeo.html'; p:=System.Pos('%s', BrowserParams); System.Delete(BrowserParams,p,2); System.Insert(URL,BrowserParams,p); BrowserProcess:=TProcessUTF8.Create(nil); try BrowserProcess.CommandLine:=BrowserPath+' '+BrowserParams; BrowserProcess.Execute; finally BrowserProcess.Free; end; finally v.Free; end; end ; procedure TForm1.Surfacesdonde1Click(Sender: TObject); begin with saisiepointssurfaceonde do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiepointssurfaceonde.spinpoints.value:=maxrayonsrecherchesurfacesonde; saisiepointssurfaceonde.showmodal; Rafraichit; end; procedure TForm1.Editerlecommentairedelasimulation1Click(Sender: TObject); begin formediteur.show; formediteur.WindowState:=wsnormal; end; procedure TForm1.Supprimerunlment1Click(Sender: TObject); begin form_palette.boutonsuppressionClick(Sender); end; procedure TForm1.Propritsdunlment1Click(Sender: TObject); begin form_palette.boutonpropClick(Sender); end; procedure TForm1.Dplacerunlment1Click(Sender: TObject); begin form_palette.boutondeplacementClick(Sender); end; procedure TForm1.Commenatiresurlasimulation1Click(Sender: TObject); begin Form1.SpeedButton1Click(Sender); end; procedure TForm1.Mesurededistance1Click(Sender: TObject); begin {Form1.boutondistanceClick(Sender); } with saisiemetre do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiemetre.boutonsup.enabled:=false; saisiemetre.editx1.text:=''; saisiemetre.editx2.text:=''; saisiemetre.edity1.text:=''; saisiemetre.edity2.text:=''; saisiemetre.caption:=rsAjoutDUneMes; saisiemetre.log1.Caption:=unitelongueur; saisiemetre.log2.Caption:=unitelongueur; saisiemetre.log3.Caption:=unitelongueur; saisiemetre.log4.Caption:=unitelongueur; if saisiemetre.ShowModal=mrok then sauvevirtuel; end; procedure TForm1.Mesuredangle1Click(Sender: TObject); begin {Form1.boutonangleClick(Sender); } with saisieangle do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieangle.boutonsup.enabled:=false; saisieangle.caption:=rsAjoutDUneMes2; saisieangle.editx1.text:=''; saisieangle.editx2.text:=''; saisieangle.editcx.text:=''; saisieangle.editcy.text:=''; saisieangle.edity1.text:=''; saisieangle.edity2.text:=''; saisieangle.log1.Caption:=unitelongueur; saisieangle.log2.Caption:=unitelongueur; saisieangle.log3.Caption:=unitelongueur; saisieangle.log4.Caption:=unitelongueur; saisieangle.log5.Caption:=unitelongueur; saisieangle.log6.Caption:=unitelongueur; if saisieangle.showmodal=mrok then sauvevirtuel; end; procedure TForm1.SiteWeb1Click(Sender: TObject); var v: THTMLBrowserHelpViewer; BrowserPath, BrowserParams: string; p: LongInt; URL: String; BrowserProcess: TProcessUTF8; begin v:=THTMLBrowserHelpViewer.Create(nil); try v.FindDefaultBrowser(BrowserPath,BrowserParams); //debugln(['Path=',BrowserPath,' Params=',BrowserParams]); url:='http://jeanmarie.biansan.free.fr/logiciel.html'; p:=System.Pos('%s', BrowserParams); System.Delete(BrowserParams,p,2); System.Insert(URL,BrowserParams,p); // start browser BrowserProcess:=TProcessUTF8.Create(nil); try BrowserProcess.CommandLine:=BrowserPath+' '+BrowserParams; BrowserProcess.Execute; finally BrowserProcess.Free; end; finally v.Free; end; end; procedure TForm1.Rayonsfantomes1Click(Sender: TObject); begin Form1.boutonfantomeClick(Sender); end; procedure TForm1.Traitflche1Click(Sender: TObject); begin if modequelquechose then exit; if Nombrefleche=maxfleche then begin application.MessageBox(pchar(rsNombreMaxima3), pchar(rsAttention3), mb_ok); exit; end; with saisiefle1 do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisiefle1.boutonsup.enabled:=false; saisiefle1.caption:=rsAjoutDUnTrai; saisiefle1.editx1.text:=''; saisiefle1.editx2.text:=''; saisiefle1.edity1.text:=''; saisiefle1.edity2.text:=''; saisiefle1.spinepaisseur.value:=epaisseurfleche; saisiefle1.spintaille1.value:=10; saisiefle1.spintaille2.value:=10; saisiefle1.radioext1.itemindex:=0; saisiefle1.radioext2.itemindex:=0; saisiefle1.radiostyletrait.itemindex:=0; saisiefle1.colorgrid1.selected:=(couleurfleche) ; saisiefle1.log1.Caption:=unitelongueur; saisiefle1.log2.Caption:=unitelongueur; saisiefle1.log3.Caption:=unitelongueur; saisiefle1.log4.Caption:=unitelongueur; if saisiefle1.showmodal=mrok then sauvevirtuel; end; procedure TForm1.FormDestroy(Sender: TObject); var i:integer; begin fermeture:=true; for i:=1 to maxannulation do etatactuel[i].Free; FreePMiroirPlan(ListeMiroirPlan,nombremiroirplan); FreePreseau(Listereseau,nombrereseau); freepfleche(listefleche,nombrefleche); FreePecran(Listeecran,nombreecran); freeppolyhedre(listepolyhedre,nombrepolyhedre); freeppolycercle(listepolycercle,nombrepolycercle); freepprisme(listeprisme,nombreprisme); freeplsr(listelsr,nombrelsr); freepsphere(listesphere,nombresphere); freePMscopa(ListeMscopa,nombreMscopa); freepmiroirconique(listemiroirconique,nombremiroirconique); freePMscepa(ListeMscepa,nombreMscepa); freeptexteaffiche(listetexteaffiche,nombretexte); freePMscere(ListeMscere,nombreMscere); freepMscore(ListeMscore,nombreMscore); freepsegment(listesegment,nombretotalsegment); freepsegment(listenormale,nombrenormale); freepgroupe(listegroupe,nombregroupe); freepoeil(listeoeil,nombreoeil); freepLmc(ListeLmc,nombreLmc); freeplec(listelec,nombrelec); freepmetre(listemetre,nombremetre); freepangle(listeangle,nombreangle); freepLmd(ListeLmd,nombreLmd); freepdiaphragme(listediaphragme,nombrediaphragme); freepRayon(ListeRayon,nombreRayon); freepangle(listeanglesatracer,nombreanglesatracer); freepSourcePonctuelle(ListeSourcePonctuelle,nombreSourcePonctuelle); freepOndePlane(ListeOndePlane,nombreOndePlane); listemateriaux.free; listenrouge.free; listenbleu.free; listenvert.free; //if bibi<>nil then BIBI.free; end; procedure TForm1.boutonoeilClick(Sender: TObject); begin if Nombreoeil=maxoeil then begin application.MessageBox(pchar(rsNombreMaxima33), pchar(rsAttention3), mb_ok); exit; end; boutonoeil.Enabled:=false; boutonoeil.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsPositionnezL52; ajoutoeil:=true; application.ProcessMessages; boutonoeil.OnClick:=@boutonoeilclick; desactiveboutons; end; procedure TForm1.Oeilstylis1Click(Sender: TObject); begin if modequelquechose then exit; if NombreOeil=maxOeil then begin application.MessageBox(pchar(rsNombreMaxima34), pchar(rsAttention3), mb_ok); exit; end; with saisieOeil do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; saisieoeil.boutonsup.enabled:=false; saisieoeil.editx1.text:=''; saisieoeil.editx2.text:=''; saisieoeil.edity1.text:=''; saisieoeil.edity2.text:=''; saisieoeil.editepaisseur.Value:=epaisseuroeil; saisieoeil.colorgrid1.selected:=(couleuroeil) ; saisieoeil.caption:= rsAjoutDUnOeil; saisieoeil.log1.Caption:=unitelongueur; saisieoeil.log2.Caption:=unitelongueur; saisieoeil.log3.Caption:=unitelongueur; saisieoeil.log4.Caption:=unitelongueur; if saisieOeil.showmodal=mrok then sauvevirtuel; end; procedure TForm1.Elementschoisir2Click(Sender: TObject); begin form_palette.boutongroupeClick(Sender); end; procedure TForm1.Tousleslments1Click(Sender: TObject); var i:integer; begin if Nombregroupe=maxgroupe then begin application.MessageBox(pchar(rsNombreMaxima), pchar(rsAttention3), mb_ok); exit; end; if Nombrequelquechose<2 then begin application.MessageBox(pchar(rsImpossibleDe2), pchar(rsAttention3), mb_ok); exit; end; if application.messagebox(pchar(Format(rsDoisJeCrErLe, [inttostr(nombregroupe+1) ])), pchar(rsCrAtion), mb_yesno)= idno then exit; retaillepgroupe(listegroupe, nombregroupe,nombregroupe+1); inc(nombregroupe); listegroupe[-1+nombregroupe].create; if nombreoeil>0 then for i:=1 to nombreoeil do listegroupe[-1+nombregroupe].add(mdoeil,i); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do listegroupe[-1+nombregroupe].add(mddiaphragme,i); if nombretexte>0 then for i:=1 to nombretexte do listegroupe[-1+nombregroupe].add(mdtexteaffiche,i); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do listegroupe[-1+nombregroupe].add(mdmiroirconique,i); if nombrelec>0 then for i:=1 to nombrelec do listegroupe[-1+nombregroupe].add(mdlec,i); if nombrefleche>0 then for i:=1 to nombrefleche do listegroupe[-1+nombregroupe].add(mdfleche,i); if nombremiroirplan>0 then for i:=1 to nombremiroirplan do listegroupe[-1+nombregroupe].add(mdmiroirplan,i); if nombreReseau>0 then for i:=1 to nombreReseau do listegroupe[-1+nombregroupe].add(mdReseau,i); if nombreecran>0 then for i:=1 to nombreecran do listegroupe[-1+nombregroupe].add(mdecran,i); if nombreangle>0 then for i:=1 to nombreangle do listegroupe[-1+nombregroupe].add(mdangle,i); if nombremetre>0 then for i:=1 to nombremetre do listegroupe[-1+nombregroupe].add(mdmetre,i); if nombrelsr>0 then for i:=1 to nombrelsr do listegroupe[-1+nombregroupe].add(mdlsr,i); if nombremscopa>0 then for i:=1 to nombremscopa do listegroupe[-1+nombregroupe].add(mdmscopa,i); if nombrelmc>0 then for i:=1 to nombrelmc do listegroupe[-1+nombregroupe].add(mdlmc,i); if nombrelmd>0 then for i:=1 to nombrelmd do listegroupe[-1+nombregroupe].add(mdlmd,i); if nombremscepa>0 then for i:=1 to nombremscepa do listegroupe[-1+nombregroupe].add(mdmscepa,i); if nombremscore>0 then for i:=1 to nombremscore do listegroupe[-1+nombregroupe].add(mdmscore,i); if nombremscere>0 then for i:=1 to nombremscere do listegroupe[-1+nombregroupe].add(mdmscere,i); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do listegroupe[-1+nombregroupe].add(mdpolyhedre,i); if nombrerayon>0 then for i:=1 to nombrerayon do listegroupe[-1+nombregroupe].add(mdrayon,i); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listegroupe[-1+nombregroupe].add(mdsourceponctuelle,i); if nombreondeplane>0 then for i:=1 to nombreondeplane do listegroupe[-1+nombregroupe].add(mdondeplane,i); if nombrepolycercle>0 then for i:=1 to nombrepolycercle do listegroupe[-1+nombregroupe].add(mdpolycercle,i); if nombresphere>0 then for i:=1 to nombresphere do listegroupe[-1+nombregroupe].add(mdsphere,i); sauvevirtuel; Rafraichit; end; procedure TForm1.AssocierlesfichiersoptavecOptGeo1Click(Sender: TObject); {$ifdef windows}var Registre:TRegistry; {$endif} begin {$ifdef windows} Registre:= TRegistry.Create; With Registre do try RootKey := HKEY_CLASSES_ROOT; OpenKey('OptGeoFile',True); WriteString('','Fichier de simulation de OptGeo'); CloseKey; OpenKey('OptGeoFile\shell\open\command',True); WriteString('','"'+repertoireexecutable+nomexecutable+'" "%1"'); CloseKey; OpenKey('.opt',True); WriteString('','OptGeoFile'); CloseKey; finally Free; end; {$endif} end; procedure TForm1.Dsassocier1Click(Sender: TObject); {$ifdef windows}var Registre:TRegistry; {$endif} begin {$ifdef windows} Registre:= TRegistry.Create; With Registre do try RootKey := HKEY_CLASSES_ROOT; DeleteKey('OpGeoFile'); DeleteKey('.opt'); finally Free; end; {$endif} end; procedure TForm1.Manuellement1Click(Sender: TObject); begin Form1.Modifierdimensionsespacedetravail11Click(Sender); end; procedure TForm1.Ajusterautomatiquement1Click(Sender: TObject); var iii:integer; begin if nombrequelquechose=0 then exit; iii:=0; while retaille_espace_possible(xxmin+iii*(xxmax-xxmin)/100,xxmax,yymin,yymax) do inc(iii); xxmin:=xxmin+(iii-1)*(xxmax-xxmin)/100; iii:=0; while retaille_espace_possible(xxmin,xxmax-iii*(xxmax-xxmin)/100,yymin,yymax) do inc(iii); xxmax:=xxmax-(iii-1)*(xxmax-xxmin)/100; iii:=0; while retaille_espace_possible(xxmin,xxmax,yymin+iii*(yymax-yymin)/100,yymax) do inc(iii); yymin:=yymin+(iii-1)*(yymax-yymin)/100; iii:=0; while retaille_espace_possible(xxmin,xxmax,yymin,yymax-iii*(yymax-yymin)/100) do inc(iii); yymax:=yymax-(iii-1)*(yymax-yymin)/100; rapportactuel:=(yymax-yymin)/(xxmax-xxmin); form1.Caption:=Format(rsEspaceDeTrav, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax)]); Rafraichit; sauvevirtuel; end; procedure TForm1.Modifierdimensionsespacedetravail11Click(Sender: TObject); begin saisieretailleespace.Edit_xxmin_m.Text:=floattostr(xxmin); saisieretailleespace.Edit_yymin_m.Text:=floattostr(yymin); saisieretailleespace.Edit_xxmax_m.Text:=floattostr(xxmax); saisieretailleespace.Edit_yymax_m.Text:=floattostr(yymax); saisieretailleespace.log1.Caption:=unitelongueur; saisieretailleespace.log2.Caption:=unitelongueur; saisieretailleespace.log3.Caption:=unitelongueur; saisieretailleespace.log4.Caption:=unitelongueur; saisieretailleespace.cocherespect_m.checked:=respectrapport; with saisieretailleespace do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; if saisieretailleespace.showmodal=mrcancel then exit; {puis traitement: voir si nouvelles valeurs compatibles, etc...} if retaille_espace_possible(xxmin_m,xxmax_m,yymin_m,yymax_m) then begin grillex:=1/(xxmax-xxmin)*(xxmax_m-xxmin_m)*grillex; grilley:=1/(yymax-yymin)*(yymax_m-yymin_m)*grilley; grillex:=int(grillex*1.001/puissance(10,partieentiere(log10(grillex))))* puissance(10,partieentiere(log10(grillex))); grilley:=int(grilley*1.001/puissance(10,partieentiere(log10(grilley))))* puissance(10,partieentiere(log10(grilley))); xxmin:=xxmin_m; xxmax:=xxmax_m; yymin:=yymin_m; yymax:=yymax_m; respectrapport:=respect_m; rapportactuel:=(yymax-yymin)/(xxmax-xxmin); form1.Caption:=Format(rsEspaceDeTrav, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax)]); Rafraichit; sauvevirtuel; end else begin application.messagebox(pchar(rsUnAuMoinsDes), pchar(rsRedimensionn), mb_ok); exit; end; end; procedure TForm1.durpertoireexemples1Click(Sender: TObject); begin form1.Ouvrirsimulation(sender,repertoire_simul_perso); end; procedure TForm1.durpertoireexemples2Click(Sender: TObject); begin form1.Ouvrirsimulation(sender,repertoire_exemples); end; procedure TForm1.Couleurdefond1Click(Sender: TObject); begin colordialog1.Color:=couleurfondsimulation; if colordialog1.Execute then begin couleurfondsimulation:=colordialog1.Color; sauvevirtuel; end; Rafraichit; end; procedure TForm1.Prfrences1Click(Sender: TObject); begin with saisiepreferences do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; combobox1.itemindex:=0; boutoncouleur.enabled:=true; labelcouleur.width:=89; labelcouleur.height:=25; labelcouleur.Color:=couleurmiroirplan; labelcouleur1.width:=89; labelcouleur1.height:=25; labelcouleur1.Color:=couleurglobale; labelcouleuraxe.width:=113; labelcouleuraxe.height:=25; labelcouleuraxe.color:=saisiepreferences.Color; labelcouleuraxe1.width:=113; labelcouleuraxe1.height:=25; labelcouleuraxe1.color:=couleurglobaleaxe; labecouleurrayon.width:=113; labecouleurrayon.height:=25; labecouleurrayon.color:=couleurglobalerayon; spinedit1.enabled:=true; spinedit1.Value:=epaisseurmiroirplan; spinedit2.Value:=epaisseurglobale; boutoncouleuraxe.enabled:=false; boutonpolice.Enabled:=false; memo1.Lines.Clear; memo1.lines.Add('Nom: '+policedefaut.name); memo1.lines.Add('Taille: '+inttostr(policedefaut.size)); if (fsunderline in policedefaut.style) then memo1.lines.add('Souligné'); if (fsbold in policedefaut.style) then memo1.lines.add('Gras'); if (fsitalic in policedefaut.style) then memo1.lines.add('Italique'); if (fsstrikeout in policedefaut.style) then memo1.lines.add('Barré'); memo2.Lines.Clear; memo2.lines.Add('Nom: '+policedefaut.name); memo2.lines.Add('Taille: '+inttostr(policedefaut.size)); if (fsunderline in policedefaut.style) then memo2.lines.add('Souligné'); if (fsbold in policedefaut.style) then memo2.lines.add('Gras'); if (fsitalic in policedefaut.style) then memo2.lines.add('Italique'); if (fsstrikeout in policedefaut.style) then memo2.lines.add('Barré'); end; saisiepreferences.showmodal; end; procedure TForm1.Empennagedesrayons1Click(Sender: TObject); begin saisieempennage.spinposition.value:=positionempennage; saisieempennage.SpinEdit1.Value:=tailleempennage; with saisieempennage do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; if saisieempennage.showmodal=mrok then begin positionempennage:=saisieempennage.spinposition.value; tailleempennage:=saisieempennage.SpinEdit1.Value; sauvevirtuel; Rafraichit; end; end; procedure TForm1.charge_virtuel; var indice,i,j:integer; s,s1:string; newnombremiroirplan,newnombrereseau,newnombremscopa,newnombremscepa,newnombremscore, newnombremscere,newnombrelmc,newnombrelmd,newnombrerayon,newnombrelsr, newnombresourceponctuelle,newnombreondeplane,newnombreecran,toto, newnombrepolyhedre,newnombresphere,newnombremiroirconique, newnombretexte,newnombrediaphragme,newnombrelec,newnombrepolycercle, newnombreangle,newnombrefleche,newnombreoeil,newnombregroupe, newnombremetre,newnombreprisme:integer; coco:tcolor; aze:ttypeelementmodif; chacha,papa:integer; versionfichier:longint; nerina,old_nom_sauvegarde:string; label 9852,789,12345; procedure monmetazero; begin couleurfondsimulation:=clwhite; indice_vert_par_defaut:=1; indice_bleu_par_defaut:=1; indice_rouge_par_defaut:=1; positionempennage:=500; tailleempennage:=5; FreePMiroirPlan(ListeMiroirPlan,nombremiroirplan); FreePReseau(ListeReseau,nombreReseau); freepfleche(listefleche,nombrefleche); FreePecran(Listeecran,nombreecran); freepdiaphragme(listediaphragme,nombrediaphragme); freeplsr(listelsr,nombrelsr); freeppolyhedre(listepolyhedre,nombrepolyhedre); freepprisme(listeprisme,nombreprisme); freeppolycercle(listepolycercle,nombrepolycercle); freepoeil(listeoeil,nombreoeil); freePMscopa(ListeMscopa,nombreMscopa); freepgroupe(listegroupe,nombregroupe); freePMscepa(ListeMscepa,nombreMscepa); freePMscere(ListeMscere,nombreMscere); freepMscore(ListeMscore,nombreMscore); freepLmc(ListeLmc,nombreLmc); freeplec(listelec,nombrelec); freepmiroirconique(listemiroirconique,nombremiroirconique); freepLmd(ListeLmd,nombreLmd); freeptexteaffiche(listetexteaffiche,nombretexte); freepRayon(ListeRayon,nombreRayon); freepSourcePonctuelle(ListeSourcePonctuelle,nombreSourcePonctuelle); freepOndePlane(ListeOndePlane,nombreOndePlane); freepsphere(listesphere,nombresphere); freepmetre(listemetre,nombremetre); freepangle(listeangle,nombreangle); freepangle(listeanglesatracer,nombreanglesatracer); creePMiroirPlan(listemiroirplan,0); creePreseau(listereseau,0); creepfleche(listefleche,0); creePEcran(listeecran,0); CreePpolyhedre(listepolyhedre,0); CreePprisme(listeprisme,0); creeppolycercle(listepolycercle,0); CreePOeil(listeoeil,0); creeplsr(listelsr,0); creepsphere(listesphere,0); creePMscopa(ListeMscopa,0); creepmetre(listemetre,0); creepangle(listeangle,0); creePMscepa(ListeMscepa,0); creepmiroirconique(listemiroirconique,0); creePMscore(ListeMscore,0); creeptexteaffiche(listetexteaffiche,0); creePMscere(ListeMscere,0); creepdiaphragme(listediaphragme,0); creePlmc(Listelmc,0); creeplec(listelec,0); creePlmd(Listelmd,0); creepangle(listeanglesatracer,0); creePrayon(Listerayon,0); creepgroupe(listegroupe,0); creePSourcePonctuelle(ListeSourcePonctuelle,0); creePOndePlane(ListeOndePlane,0); maxrayonsrecherchesurfacesonde:=20; nomsauvegarde:=''; unitelongueur:=rsMm; fantomespresents:=false; modifie:=false; commentaire_change:=false; { mainform.Editor.Lines.clear; mainform.WindowState:=wsminimized; mainform.Caption:='Commentaires sur la simulation de nom non précisé...'; } nombrerayon:=0; nombremiroirplan:=0; nombrereseau:=0; nombreecran:=0; nombremiroirconique:=0; nombreMscopa:=0; nombreMscepa:=0; nombrelmc:=0; nombrelec:=0; nombrelmd:=0; nombrefleche:=0; nombreoeil:=0; nombregroupe:=0; nombreMscore:=0; nombreMscere:=0; nombresourceponctuelle:=0; nombreondeplane:=0; nombrelsr:=0; nombrepolyhedre:=0; nombrepolycercle:=0; nombresphere:=0; nombremetre:=0; nombretexte:=0; nombrediaphragme:=0; nombreangle:=0; decimalesangles:=0; nombreprisme:=0; sa_hauteur:=hauteurinitialeimage1; sa_largeur:=largeurinitialeimage1; sa_respect:=true; xxmin:=0; xxmax:=abs(sa_largeur); yymin:=0; yymax:=abs(sa_hauteur); rapportactuel:=(yymax-yymin)/(xxmax-xxmin); tracergrille:=false; attractiongrille:=false; optionnormale:=true; optionangles:=false; N7.Checked:=optionnormale; cochegrille.Checked:=tracergrille; cocheattraction.checked:=attractiongrille; cochenormale.checked:=optionnormale; afficherlagrille1.Checked:=tracergrille; Afficherlesangles1.checked:=optionangles; cocheangles.checked:=optionangles; grillex:=xxmax/20; grilley:=yymax/20; grillex:=int(grillex*1.001/puissance(10,partieentiere(log10(grillex))))* puissance(10,partieentiere(log10(grillex))); grilley:=int(grilley*1.001/puissance(10,partieentiere(log10(grilley))))* puissance(10,partieentiere(log10(grilley))); respectrapport:=sa_respect; form1.retaille_image1; form1.Caption:=Format(rsEspaceDeTrav2, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax)]); end; procedure litdansstring_string(var s:string); begin s:=etatactuel[nombre_etats_sauvegardes][indice-1]; inc(indice); end; procedure litdansstring_shortstring(var s:shortstring); begin s:=etatactuel[nombre_etats_sauvegardes][indice-1]; inc(indice); end; procedure litdansstring_entier(var s:integer); begin s:=strtoint(etatactuel[nombre_etats_sauvegardes][indice-1]); inc(indice); end; procedure litdansstring_reel(var s:extended); begin s:=strtofloat(etatactuel[nombre_etats_sauvegardes][indice-1]); inc(indice); end; procedure litdansstring_couleur(var s:tcolor); begin s:=strtoint(etatactuel[nombre_etats_sauvegardes][indice-1]); inc(indice); end; begin if nombre_etats_sauvegardes<=1 then exit; if nombre_etats_sauvegardes=2 then rtablir1.Enabled:=false; old_nom_sauvegarde:=nomsauvegarde; monmetazero; nomsauvegarde:=old_nom_sauvegarde; indice:=1; dec(nombre_etats_sauvegardes); while indice0) or (pos('('+inttostr(i)+',',listefantomes)<>0) or (pos(','+inttostr(i)+')',listefantomes)<>0) or (pos('('+inttostr(i)+')',listefantomes)<>0); goto 12345; end; if s1='INDICES PAR DEFAUT' then begin litdansstring_reel(indice_vert_par_defaut); litdansstring_reel(indice_bleu_par_defaut); litdansstring_reel(indice_rouge_par_defaut); goto 12345; end; if s1='LAMBDA' then begin litdansstring_reel(longueur_donde_red); litdansstring_reel(longueur_donde_blue); litdansstring_reel(longueur_donde_green); goto 12345; end; if s1='Nombre de miroirs plans:' then begin litdansstring_entier(newnombremiroirplan); retaillepmiroirplan(listemiroirplan,nombremiroirplan,newnombremiroirplan); nombremiroirplan:=newnombremiroirplan; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do begin litdansstring_string(s); litdansstring_reel(listemiroirplan[-1+i].a1x); litdansstring_reel(listemiroirplan[-1+i].a1y); litdansstring_reel(listemiroirplan[-1+i].a2x); litdansstring_reel(listemiroirplan[-1+i].a2y); litdansstring_entier(listemiroirplan[-1+i].epaisseur); litdansstring_couleur(listemiroirplan[-1+i].couleur); litdansstring_string(s); listemiroirplan[-1+i].hachures:=(s='TRUE'); if not( listemiroirplan[-1+i].create(listemiroirplan[-1+i].a1x,listemiroirplan[-1+i].a1y, listemiroirplan[-1+i].a2x,listemiroirplan[-1+i].a2y,listemiroirplan[-1+i].epaisseur, listemiroirplan[-1+i].couleur,listemiroirplan[-1+i].hachures)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de reseaux:' then begin litdansstring_entier(newnombreReseau); retaillepReseau(listeReseau,nombreReseau,newnombreReseau); nombreReseau:=newnombreReseau; if nombreReseau>0 then for i:=1 to nombreReseau do begin litdansstring_string(s); litdansstring_reel(listeReseau[-1+i].a1x); litdansstring_reel(listeReseau[-1+i].a1y); litdansstring_reel(listeReseau[-1+i].a2x); litdansstring_reel(listeReseau[-1+i].a2y); litdansstring_entier(listeReseau[-1+i].epaisseur); litdansstring_couleur(listeReseau[-1+i].couleur); litdansstring_reel(listeReseau[-1+i].pas); litdansstring_string(s); listeReseau[-1+i].entransmission:=(s='TRUE'); litdansstring_string(s); listeReseau[-1+i].hachures:=(s='TRUE'); litdansstring_entier(listeReseau[-1+i].ordre_min); litdansstring_entier(listeReseau[-1+i].ordre_max); if not( listeReseau[-1+i].create(listeReseau[-1+i].a1x,listeReseau[-1+i].a1y, listeReseau[-1+i].a2x,listeReseau[-1+i].a2y,listeReseau[-1+i].epaisseur, listeReseau[-1+i].couleur,listeReseau[-1+i].pas,listeReseau[-1+i].entransmission,listeReseau[-1+i].hachures, listeReseau[-1+i].ordre_min,listeReseau[-1+i].ordre_max)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs concaves paraxiaux:' then begin litdansstring_entier(newnombremscopa); retaillepmscopa(listemscopa,nombremscopa,newnombremscopa); nombremscopa:=newnombremscopa; if nombremscopa>0 then for i:=1 to nombremscopa do begin litdansstring_string(s); litdansstring_reel(listemscopa[-1+i].a1x); litdansstring_reel(listemscopa[-1+i].a1y); litdansstring_reel(listemscopa[-1+i].a2x); litdansstring_reel(listemscopa[-1+i].a2y); litdansstring_reel(listemscopa[-1+i].focale); litdansstring_entier(listemscopa[-1+i].epaisseur); litdansstring_couleur(listemscopa[-1+i].couleur); litdansstring_couleur(listemscopa[-1+i].couleuraxe); litdansstring_string(s); listemscopa[-1+i].hachures:=(s='TRUE'); litdansstring_string(s); listemscopa[-1+i].axefocal:=(s='TRUE'); litdansstring_string(s); listemscopa[-1+i].trou:=(s='TRUE'); litdansstring_reel(listemscopa[-1+i].diametretrou); if not( listemscopa[-1+i].create2(listemscopa[-1+i].a1x,listemscopa[-1+i].a1y, listemscopa[-1+i].a2x,listemscopa[-1+i].a2y,listemscopa[-1+i].focale, listemscopa[-1+i].epaisseur, listemscopa[-1+i].couleur,listemscopa[-1+i].couleuraxe, listemscopa[-1+i].hachures,listemscopa[-1+i].axefocal, listemscopa[-1+i].trou,listemscopa[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs convexes paraxiaux:' then begin litdansstring_entier(newnombremscepa); retaillepmscepa(listemscepa,nombremscepa,newnombremscepa); nombremscepa:=newnombremscepa; if nombremscepa>0 then for i:=1 to nombremscepa do begin litdansstring_string(s); litdansstring_reel(listemscepa[-1+i].a1x); litdansstring_reel(listemscepa[-1+i].a1y); litdansstring_reel(listemscepa[-1+i].a2x); litdansstring_reel( listemscepa[-1+i].a2y); litdansstring_reel(listemscepa[-1+i].focale); litdansstring_entier(listemscepa[-1+i].epaisseur); litdansstring_couleur( listemscepa[-1+i].couleur); litdansstring_couleur(listemscepa[-1+i].couleuraxe); litdansstring_string(s); listemscepa[-1+i].hachures:=(s='TRUE'); litdansstring_string(s); listemscepa[-1+i].axefocal:=(s='TRUE'); litdansstring_string(s); listemscepa[-1+i].trou:=(s='TRUE'); litdansstring_reel(listemscepa[-1+i].diametretrou); if not( listemscepa[-1+i].create2(listemscepa[-1+i].a1x,listemscepa[-1+i].a1y, listemscepa[-1+i].a2x,listemscepa[-1+i].a2y,listemscepa[-1+i].focale, listemscepa[-1+i].epaisseur, listemscepa[-1+i].couleur,listemscepa[-1+i].couleuraxe, listemscepa[-1+i].hachures,listemscepa[-1+i].axefocal, listemscepa[-1+i].trou,listemscepa[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs concaves reels:' then begin litdansstring_entier(newnombremscore); retaillepmscore(listemscore,nombremscore,newnombremscore); nombremscore:=newnombremscore; if nombremscore>0 then for i:=1 to nombremscore do begin litdansstring_string(s); litdansstring_reel(listemscore[-1+i].a1x); litdansstring_reel(listemscore[-1+i].a1y); litdansstring_reel(listemscore[-1+i].a2x); litdansstring_reel(listemscore[-1+i].a2y); litdansstring_reel(listemscore[-1+i].rayoncourbure); litdansstring_entier(listemscore[-1+i].epaisseur); litdansstring_couleur(listemscore[-1+i].couleur); litdansstring_couleur(listemscore[-1+i].couleuraxe); litdansstring_string(s); listemscore[-1+i].hachures:=(s='TRUE'); litdansstring_string(s); listemscore[-1+i].axefocal:=(s='TRUE'); litdansstring_string(s); listemscore[-1+i].aigu:=(s='TRUE'); litdansstring_string(s); listemscore[-1+i].trou:=(s='TRUE'); litdansstring_reel(listemscore[-1+i].diametretrou); if not( listemscore[-1+i].create2(listemscore[-1+i].a1x,listemscore[-1+i].a1y, listemscore[-1+i].a2x,listemscore[-1+i].a2y,listemscore[-1+i].rayoncourbure, listemscore[-1+i].epaisseur, listemscore[-1+i].couleur,listemscore[-1+i].couleuraxe, listemscore[-1+i].hachures,listemscore[-1+i].axefocal,listemscore[-1+i].aigu, listemscore[-1+i].trou,listemscore[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs convexes reels:' then begin litdansstring_entier(newnombremscere); retaillepmscere(listemscere,nombremscere,newnombremscere); nombremscere:=newnombremscere; if nombremscere>0 then for i:=1 to nombremscere do begin litdansstring_string(s); litdansstring_reel(listemscere[-1+i].a1x); litdansstring_reel(listemscere[-1+i].a1y); litdansstring_reel(listemscere[-1+i].a2x); litdansstring_reel( listemscere[-1+i].a2y); litdansstring_reel(listemscere[-1+i].rayoncourbure); litdansstring_entier(listemscere[-1+i].epaisseur); litdansstring_couleur( listemscere[-1+i].couleur); litdansstring_couleur(listemscere[-1+i].couleuraxe); litdansstring_string(s); listemscere[-1+i].hachures:=(s='TRUE'); litdansstring_string(s); listemscere[-1+i].axefocal:=(s='TRUE'); litdansstring_string(s); listemscere[-1+i].aigu:=(s='TRUE'); litdansstring_string(s); listemscere[-1+i].trou:=(s='TRUE'); litdansstring_reel(listemscere[-1+i].diametretrou); if not( listemscere[-1+i].create2(listemscere[-1+i].a1x,listemscere[-1+i].a1y, listemscere[-1+i].a2x,listemscere[-1+i].a2y,listemscere[-1+i].rayoncourbure, listemscere[-1+i].epaisseur, listemscere[-1+i].couleur,listemscere[-1+i].couleuraxe, listemscere[-1+i].hachures,listemscere[-1+i].axefocal,listemscere[-1+i].aigu, listemscere[-1+i].trou,listemscere[-1+i].diametretrou))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentiles minces convergentes:' then begin litdansstring_entier(newnombrelmc); retailleplmc(listelmc,nombrelmc,newnombrelmc); nombrelmc:=newnombrelmc; if nombrelmc>0 then for i:=1 to nombrelmc do begin litdansstring_string(s); litdansstring_reel(listelmc[-1+i].a1x); litdansstring_reel(listelmc[-1+i].a1y); litdansstring_reel(listelmc[-1+i].a2x); litdansstring_reel( listelmc[-1+i].a2y); litdansstring_reel(listelmc[-1+i].focale); litdansstring_entier(listelmc[-1+i].epaisseur); litdansstring_couleur(listelmc[-1+i].couleur); litdansstring_couleur(listelmc[-1+i].couleuraxe); litdansstring_string(s); listelmc[-1+i].axefocal:=(s='TRUE'); if not(listelmc[-1+i].create2(listelmc[-1+i].a1x,listelmc[-1+i].a1y, listelmc[-1+i].a2x,listelmc[-1+i].a2y,listelmc[-1+i].focale, listelmc[-1+i].epaisseur, listelmc[-1+i].couleur,listelmc[-1+i].couleuraxe, listelmc[-1+i].axefocal))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentiles minces divergentes:' then begin litdansstring_entier(newnombrelmd); retailleplmd(listelmd,nombrelmd,newnombrelmd); nombrelmd:=newnombrelmd; if nombrelmd>0 then for i:=1 to nombrelmd do begin litdansstring_string(s); litdansstring_reel(listelmd[-1+i].a1x); litdansstring_reel(listelmd[-1+i].a1y); litdansstring_reel(listelmd[-1+i].a2x); litdansstring_reel( listelmd[-1+i].a2y); litdansstring_reel(listelmd[-1+i].focale); litdansstring_entier(listelmd[-1+i].epaisseur); litdansstring_couleur( listelmd[-1+i].couleur); litdansstring_couleur(listelmd[-1+i].couleuraxe); litdansstring_string(s); listelmd[-1+i].axefocal:=(s='TRUE'); if not( listelmd[-1+i].create2(listelmd[-1+i].a1x,listelmd[-1+i].a1y, listelmd[-1+i].a2x,listelmd[-1+i].a2y,listelmd[-1+i].focale, listelmd[-1+i].epaisseur, listelmd[-1+i].couleur,listelmd[-1+i].couleuraxe, listelmd[-1+i].axefocal))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de rayons:' then begin litdansstring_entier(newnombrerayon); retailleprayon(listerayon,nombrerayon,newnombrerayon); nombrerayon:=newnombrerayon; if nombrerayon>0 then for i:=1 to nombrerayon do begin litdansstring_string(s); litdansstring_reel(listerayon[-1+i].ax); litdansstring_reel(listerayon[-1+i].ay); litdansstring_reel(listerayon[-1+i].kx); litdansstring_reel( listerayon[-1+i].ky); litdansstring_couleur(listerayon[-1+i].couleur); litdansstring_entier(listerayon[-1+i].epaisseur); litdansstring_entier(listerayon[-1+i].nombremaxenfant); litdansstring_string(s); listerayon[-1+i].vav:=s; litdansstring_string(s); listerayon[-1+i].vaa:=s; litdansstring_string(s); litdansstring_entier(listerayon[-1+i].maxsegment); if not( listerayon[-1+i].create(listerayon[-1+i].ax,listerayon[-1+i].ay, listerayon[-1+i].kx,listerayon[-1+i].ky, listerayon[-1+i].couleur, listerayon[-1+i].epaisseur, listerayon[-1+i].vav,listerayon[-1+i].vaa, listerayon[-1+i].nombremaxenfant,listerayon[-1+i].maxsegment ))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de sources ponctuelles:' then begin litdansstring_entier(newnombresourceponctuelle); retaillepsourceponctuelle(listesourceponctuelle,nombresourceponctuelle,newnombresourceponctuelle); nombresourceponctuelle:=newnombresourceponctuelle; if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do begin litdansstring_string(s); litdansstring_entier(listesourceponctuelle[-1+i].nombrederayon); litdansstring_reel( listesourceponctuelle[-1+i].sx); litdansstring_reel( listesourceponctuelle[-1+i].sy); litdansstring_reel( listesourceponctuelle[-1+i].a1x); litdansstring_reel(listesourceponctuelle[-1+i].a1y); litdansstring_reel(listesourceponctuelle[-1+i].a2x); litdansstring_reel( listesourceponctuelle[-1+i].a2y); litdansstring_couleur(listesourceponctuelle[-1+i].couleur); litdansstring_entier(listesourceponctuelle[-1+i].epaisseur); litdansstring_entier(listesourceponctuelle[-1+i].maxenfantparrayon); litdansstring_string(s); listesourceponctuelle[-1+i].vav:=s; litdansstring_string(s); listesourceponctuelle[-1+i].vaa:=s; litdansstring_string(s); listesourceponctuelle[-1+i].sourcevirtuelle:=(s='TRUE'); litdansstring_string(s); listesourceponctuelle[-1+i].tracersurfacesonde:=(s='TRUE'); litdansstring_string(s); listesourceponctuelle[-1+i].listechemins:=s; litdansstring_string(s); litdansstring_entier(listesourceponctuelle[-1+i].maxsegment); if not(listesourceponctuelle[-1+i].create(listesourceponctuelle[-1+i].nombrederayon, listesourceponctuelle[-1+i].sx, listesourceponctuelle[-1+i].sy, listesourceponctuelle[-1+i].a1x, listesourceponctuelle[-1+i].a1y, listesourceponctuelle[-1+i].a2x, listesourceponctuelle[-1+i].a2y, listesourceponctuelle[-1+i].couleur, listesourceponctuelle[-1+i].epaisseur,listesourceponctuelle[-1+i].vav, listesourceponctuelle[-1+i].vaa, listesourceponctuelle[-1+i].maxenfantparrayon,listesourceponctuelle[-1+i].sourcevirtuelle, listesourceponctuelle[-1+i].tracersurfacesonde,listesourceponctuelle[-1+i].listechemins, listesourceponctuelle[-1+i].maxsegment))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''ondes planes:' then begin litdansstring_entier(newnombreondeplane); retaillepondeplane(listeondeplane,nombreondeplane,newnombreondeplane); nombreondeplane:=newnombreondeplane; if nombreondeplane>0 then for i:=1 to nombreondeplane do begin litdansstring_string(s); litdansstring_entier(listeondeplane[-1+i].nombrederayon); litdansstring_reel(listeondeplane[-1+i].sx); litdansstring_reel(listeondeplane[-1+i].sy); litdansstring_reel(listeondeplane[-1+i].a1x); litdansstring_reel(listeondeplane[-1+i].a1y); litdansstring_reel(listeondeplane[-1+i].a2x); litdansstring_reel(listeondeplane[-1+i].a2y); litdansstring_couleur(listeondeplane[-1+i].couleur); litdansstring_entier(listeondeplane[-1+i].epaisseur); litdansstring_entier(listeondeplane[-1+i].maxenfantparrayon); litdansstring_string(s); listeondeplane[-1+i].vav:=s; litdansstring_string(s); listeondeplane[-1+i].vaa:=s; litdansstring_string(s); listeondeplane[-1+i].tracersurfacesonde:=(s='TRUE'); litdansstring_string(s); listeondeplane[-1+i].listechemins:=s; litdansstring_string(s); litdansstring_entier(listeondeplane[-1+i].maxsegment); if not(listeondeplane[-1+i].create(listeondeplane[-1+i].nombrederayon, listeondeplane[-1+i].sx, listeondeplane[-1+i].sy, listeondeplane[-1+i].a1x, listeondeplane[-1+i].a1y, listeondeplane[-1+i].a2x, listeondeplane[-1+i].a2y, listeondeplane[-1+i].couleur, listeondeplane[-1+i].epaisseur,listeondeplane[-1+i].vav, listeondeplane[-1+i].vaa,listeondeplane[-1+i].maxenfantparrayon, listeondeplane[-1+i].tracersurfacesonde, listeondeplane[-1+i].listechemins, listeondeplane[-1+i].maxsegment))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''ecrans:' then begin litdansstring_entier(newnombreecran); retaillepecran(listeecran,nombreecran,newnombreecran); nombreecran:=newnombreecran; if nombreecran>0 then for i:=1 to nombreecran do begin litdansstring_string(s); litdansstring_reel(listeecran[-1+i].a1x); litdansstring_reel(listeecran[-1+i].a1y); litdansstring_reel(listeecran[-1+i].a2x); litdansstring_reel(listeecran[-1+i].a2y); litdansstring_entier(listeecran[-1+i].epaisseur); litdansstring_couleur(listeecran[-1+i].couleur); if not( listeecran[-1+i].create(listeecran[-1+i].a1x,listeecran[-1+i].a1y, listeecran[-1+i].a2x,listeecran[-1+i].a2y,listeecran[-1+i].epaisseur, listeecran[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de diaphragmes:' then begin litdansstring_entier(newnombrediaphragme); retaillepdiaphragme(listediaphragme,nombrediaphragme,newnombrediaphragme); nombrediaphragme:=newnombrediaphragme; if nombrediaphragme>0 then for i:=1 to nombrediaphragme do begin litdansstring_string(s); litdansstring_reel(listediaphragme[-1+i].cx); litdansstring_reel(listediaphragme[-1+i].cy); litdansstring_reel(listediaphragme[-1+i].anglepolaire); litdansstring_reel( listediaphragme[-1+i].rint); litdansstring_reel(listediaphragme[-1+i].rext); litdansstring_entier( listediaphragme[-1+i].epaisseur); litdansstring_couleur(listediaphragme[-1+i].couleur); if not( listediaphragme[-1+i].create2(listediaphragme[-1+i].cx, listediaphragme[-1+i].cy,listediaphragme[-1+i].anglepolaire, listediaphragme[-1+i].rint,listediaphragme[-1+i].rext, listediaphragme[-1+i].couleur,listediaphragme[-1+i].epaisseur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lames semi reflechissantes:' then begin litdansstring_entier(newnombrelsr); retailleplsr(listelsr,nombrelsr,newnombrelsr); nombrelsr:=newnombrelsr; if nombrelsr>0 then for i:=1 to nombrelsr do begin litdansstring_string(s); litdansstring_reel(listelsr[-1+i].a1x); litdansstring_reel(listelsr[-1+i].a1y); litdansstring_reel(listelsr[-1+i].a2x); litdansstring_reel( listelsr[-1+i].a2y); litdansstring_entier(listelsr[-1+i].epaisseur); litdansstring_couleur(listelsr[-1+i].couleur); if not( listelsr[-1+i].create(listelsr[-1+i].a1x,listelsr[-1+i].a1y, listelsr[-1+i].a2x,listelsr[-1+i].a2y,listelsr[-1+i].epaisseur, listelsr[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de polyhedres:' then begin litdansstring_entier(newnombrepolyhedre); retailleppolyhedre(listepolyhedre,nombrepolyhedre,newnombrepolyhedre); nombrepolyhedre:=newnombrepolyhedre; if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do begin litdansstring_string(s); litdansstring_entier(listepolyhedre[-1+i].nombresommet); for j:=1 to listepolyhedre[-1+i].nombresommet do begin litdansstring_reel(listepolyhedre[-1+i].messommets[j].ax); litdansstring_reel(listepolyhedre[-1+i].messommets[j].ay); end; litdansstring_reel(listepolyhedre[-1+i].indicerouge); litdansstring_reel(listepolyhedre[-1+i].indicebleu); litdansstring_reel(listepolyhedre[-1+i].indicevert); litdansstring_couleur(listepolyhedre[-1+i].couleurbord); litdansstring_couleur(listepolyhedre[-1+i].couleurfond); litdansstring_string(s); if s='1' then listepolyhedre[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listepolyhedre[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listepolyhedre[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listepolyhedre[-1+i].reflechientrant:=reflechisipasrefracte; litdansstring_string(s); if s='1' then listepolyhedre[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listepolyhedre[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listepolyhedre[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listepolyhedre[-1+i].reflechisortant:=reflechisipasrefracte; if not(listepolyhedre[-1+i].create(listepolyhedre[-1+i].nombresommet,listepolyhedre[-1+i].messommets, listepolyhedre[-1+i].indicerouge,listepolyhedre[-1+i].indicebleu,listepolyhedre[-1+i].indicevert, listepolyhedre[-1+i].couleurbord,listepolyhedre[-1+i].couleurfond, listepolyhedre[-1+i].reflechientrant,listepolyhedre[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de prismes:' then begin litdansstring_entier(newnombreprisme); retaillepprisme(listeprisme,nombreprisme,newnombreprisme); nombreprisme:=newnombreprisme; if nombreprisme>0 then for i:=1 to nombreprisme do begin litdansstring_string(s); litdansstring_reel(listeprisme[-1+i].gx); litdansstring_reel(listeprisme[-1+i].gy); litdansstring_reel(listeprisme[-1+i].ax); litdansstring_reel(listeprisme[-1+i].ay); litdansstring_reel(listeprisme[-1+i].bx); litdansstring_reel(listeprisme[-1+i].by); litdansstring_reel(listeprisme[-1+i].indicerouge); litdansstring_reel(listeprisme[-1+i].indicebleu); litdansstring_reel(listeprisme[-1+i].indicevert); litdansstring_couleur(listeprisme[-1+i].couleurbord); litdansstring_couleur(listeprisme[-1+i].couleurfond); litdansstring_string(s); if s='1' then listeprisme[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listeprisme[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listeprisme[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listeprisme[-1+i].reflechientrant:=reflechisipasrefracte; litdansstring_string(s); if s='1' then listeprisme[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listeprisme[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listeprisme[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listeprisme[-1+i].reflechisortant:=reflechisipasrefracte; if not(listeprisme[-1+i].create(listeprisme[-1+i].gx,listeprisme[-1+i].gy, listeprisme[-1+i].ax,listeprisme[-1+i].ay,listeprisme[-1+i].bx,listeprisme[-1+i].by, listeprisme[-1+i].indicerouge,listeprisme[-1+i].indicebleu,listeprisme[-1+i].indicevert, listeprisme[-1+i].couleurbord,listeprisme[-1+i].couleurfond, listeprisme[-1+i].reflechientrant,listeprisme[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de polycercles:' then begin litdansstring_entier(newnombrepolycercle); retailleppolycercle(listepolycercle,nombrepolycercle,newnombrepolycercle); nombrepolycercle:=newnombrepolycercle; if nombrepolycercle>0 then for i:=1 to nombrepolycercle do begin litdansstring_string(s); litdansstring_entier(listepolycercle[-1+i].nombresommet); for j:=1 to listepolycercle[-1+i].nombresommet do begin litdansstring_reel(listepolycercle[-1+i].messommets[j].ax); litdansstring_reel(listepolycercle[-1+i].messommets[j].ay); end; for j:=1 to listepolycercle[-1+i].nombresommet do begin litdansstring_reel(listepolycercle[-1+i].mess[j].ax); litdansstring_reel(listepolycercle[-1+i].mess[j].ay); end; for j:=1 to listepolycercle[-1+i].nombresommet do begin litdansstring_string(s); listepolycercle[-1+i].rectiligne[j]:=(s='TRUE'); end; litdansstring_reel(listepolycercle[-1+i].indicerouge); litdansstring_reel(listepolycercle[-1+i].indicebleu); litdansstring_reel(listepolycercle[-1+i].indicevert); litdansstring_couleur(listepolycercle[-1+i].couleurbord); litdansstring_couleur(listepolycercle[-1+i].couleurfond); litdansstring_string(s); if s='1' then listepolycercle[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listepolycercle[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listepolycercle[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listepolycercle[-1+i].reflechientrant:=reflechisipasrefracte; litdansstring_string(s); if s='1' then listepolycercle[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listepolycercle[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listepolycercle[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listepolycercle[-1+i].reflechisortant:=reflechisipasrefracte; if not(listepolycercle[-1+i].create(listepolycercle[-1+i].nombresommet, listepolycercle[-1+i].messommets,listepolycercle[-1+i].mess,listepolycercle[-1+i].rectiligne, listepolycercle[-1+i].indicerouge,listepolycercle[-1+i].indicebleu,listepolycercle[-1+i].indicevert, listepolycercle[-1+i].couleurbord,listepolycercle[-1+i].couleurfond, listepolycercle[-1+i].reflechientrant,listepolycercle[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de spheres:' then begin litdansstring_entier(newnombresphere); retaillepsphere(listesphere,nombresphere,newnombresphere); nombresphere:=newnombresphere; if nombresphere>0 then for i:=1 to nombresphere do begin litdansstring_string(s); litdansstring_reel(listesphere[-1+i].cx); litdansstring_reel(listesphere[-1+i].cy); litdansstring_reel(listesphere[-1+i].rayon); litdansstring_reel( listesphere[-1+i].indicerouge); litdansstring_reel(listesphere[-1+i].indicebleu); litdansstring_reel(listesphere[-1+i].indicevert); litdansstring_couleur(listesphere[-1+i].couleurbord); litdansstring_couleur(listesphere[-1+i].couleurfond); litdansstring_string(s); if s='1' then listesphere[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listesphere[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listesphere[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listesphere[-1+i].reflechientrant:=reflechisipasrefracte; litdansstring_string(s); if s='1' then listesphere[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listesphere[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listesphere[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listesphere[-1+i].reflechisortant:=reflechisipasrefracte; if not(listesphere [-1+i].create(listesphere[-1+i].cx,listesphere[-1+i].cy,listesphere[-1+i].rayon, listesphere[-1+i].indicerouge,listesphere[-1+i].indicebleu,listesphere[-1+i].indicevert, listesphere[-1+i].couleurbord,listesphere[-1+i].couleurfond, listesphere[-1+i].reflechientrant,listesphere[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de miroirs coniques:' then begin litdansstring_entier(newnombremiroirconique); retaillepmiroirconique(listemiroirconique,nombremiroirconique,newnombremiroirconique); nombremiroirconique:=newnombremiroirconique; if nombremiroirconique>0 then for i:=1 to nombremiroirconique do begin litdansstring_string(s); litdansstring_reel(listemiroirconique[-1+i].fx); litdansstring_reel(listemiroirconique[-1+i].fy); litdansstring_reel( listemiroirconique[-1+i].excentricite); litdansstring_reel(listemiroirconique[-1+i].parametre); litdansstring_reel( listemiroirconique[-1+i].theta0); litdansstring_reel(listemiroirconique[-1+i].theta1); litdansstring_reel(listemiroirconique[-1+i].theta2); litdansstring_couleur(listemiroirconique[-1+i].couleur); litdansstring_couleur(listemiroirconique[-1+i].couleuraxe); litdansstring_string(s); listemiroirconique[-1+i].hachures:=(s='TRUE'); litdansstring_string(s); listemiroirconique[-1+i].axefocal:=(s='TRUE'); litdansstring_string(s); listemiroirconique[-1+i].concave:=(s='TRUE'); if not( listemiroirconique[-1+i].create2(listemiroirconique[-1+i].fx, listemiroirconique[-1+i].fy,listemiroirconique[-1+i].theta0, listemiroirconique[-1+i].theta1,listemiroirconique[-1+i].theta2, listemiroirconique[-1+i].excentricite,listemiroirconique[-1+i].parametre, listemiroirconique[-1+i].concave,listemiroirconique[-1+i].couleur, listemiroirconique[-1+i].couleuraxe,listemiroirconique[-1+i].hachures, listemiroirconique[-1+i].axefocal)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de textes:' then begin litdansstring_entier(newnombretexte); retailleptexteaffiche(listetexteaffiche,nombretexte,newnombretexte); nombretexte:=newnombretexte; if nombretexte>0 then for i:=1 to nombretexte do begin litdansstring_string(s); litdansstring_shortstring(listetexteaffiche[-1+i].texteluimeme); litdansstring_reel(listetexteaffiche[-1+i].x); litdansstring_reel(listetexteaffiche[-1+i].y); litdansstring_entier(listetexteaffiche[-1+i].policecharset); litdansstring_couleur(listetexteaffiche[-1+i].policecolor); litdansstring_shortstring(listetexteaffiche[-1+i].policename); litdansstring_entier(listetexteaffiche[-1+i].policesize); litdansstring_string(s); listetexteaffiche[-1+i].policefsbold:=(s='fsbold'); litdansstring_string(s); listetexteaffiche[-1+i].policefsitalic:=(s='fsitalic'); litdansstring_string(s); listetexteaffiche[-1+i].policefsunderline:=(s='fsunderline'); litdansstring_string(s); listetexteaffiche[-1+i].policefsstrikeout:=(s='fsstrikeout'); litdansstring_string(s); if s='fpDefault' then listetexteaffiche[-1+i].policepitch:=fpDefault; if s='fpVariable' then listetexteaffiche[-1+i].policepitch:=fpVariable; if s='fpFixed' then listetexteaffiche[-1+i].policepitch:=fpFixed; if not(listetexteaffiche[-1+i].create(listetexteaffiche[-1+i].texteluimeme, listetexteaffiche[-1+i].policename,listetexteaffiche[-1+i].policecharset, listetexteaffiche[-1+i].policecolor, listetexteaffiche[-1+i].policesize, listetexteaffiche[-1+i].policepitch, listetexteaffiche[-1+i].policefsbold, listetexteaffiche[-1+i].policefsitalic, listetexteaffiche[-1+i].policefsunderline, listetexteaffiche[-1+i].policefsstrikeout,listetexteaffiche[-1+i].x, listetexteaffiche[-1+i].y)) then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de lentilles epaisses:' then begin litdansstring_entier(newnombrelec); retailleplec(listelec,nombrelec,newnombrelec); nombrelec:=newnombrelec; if nombrelec>0 then for i:=1 to nombrelec do begin litdansstring_string(s); litdansstring_reel(listelec[-1+i].s1x); litdansstring_reel(listelec[-1+i].s1y); litdansstring_reel(listelec[-1+i].s2x); litdansstring_reel(listelec[-1+i].s2y); litdansstring_reel(listelec[-1+i].r1); litdansstring_reel(listelec[-1+i].r2); litdansstring_reel(listelec[-1+i].diametre); litdansstring_couleur(listelec[-1+i].couleurfond); litdansstring_couleur(listelec[-1+i].couleuraxe); litdansstring_string(s); listelec[-1+i].axefocal:=(s='TRUE'); litdansstring_reel(listelec[-1+i].indicerouge); litdansstring_reel(listelec[-1+i].indicebleu); litdansstring_reel(listelec[-1+i].indicevert); litdansstring_string(s); if s='1' then listelec[-1+i].reflechientrant:=toujoursreflechi; if s='2' then listelec[-1+i].reflechientrant:=jamaisreflechi; if s='3' then listelec[-1+i].reflechientrant:=reflechisirefracte; if s='4' then listelec[-1+i].reflechientrant:=reflechisipasrefracte; litdansstring_string(s); if s='1' then listelec[-1+i].reflechisortant:=toujoursreflechi; if s='2' then listelec[-1+i].reflechisortant:=jamaisreflechi; if s='3' then listelec[-1+i].reflechisortant:=reflechisirefracte; if s='4' then listelec[-1+i].reflechisortant:=reflechisipasrefracte; if not(listelec [-1+i].create(listelec[-1+i].s1x,listelec[-1+i].s1y,listelec[-1+i].s2x, listelec[-1+i].s2y,listelec[-1+i].r1,listelec[-1+i].r2,listelec[-1+i].diametre, listelec[-1+i].couleurfond,listelec[-1+i].couleuraxe,listelec[-1+i].axefocal, listelec[-1+i].indicerouge,listelec[-1+i].indicebleu,listelec[-1+i].indicevert, listelec[-1+i].reflechientrant,listelec[-1+i].reflechisortant))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre d''angles:' then begin litdansstring_entier(newnombreangle); retaillepangle(listeangle,nombreangle,newnombreangle); nombreangle:=newnombreangle; if nombreangle>0 then for i:=1 to nombreangle do begin litdansstring_string(s); litdansstring_reel(listeangle[-1+i].cx); litdansstring_reel(listeangle[-1+i].cy); litdansstring_reel(listeangle[-1+i].a1x); litdansstring_reel( listeangle[-1+i].a1y); litdansstring_reel(listeangle[-1+i].a2x); litdansstring_reel(listeangle[-1+i].a2y); if not(listeangle [-1+i].create(listeangle[-1+i].cx,listeangle[-1+i].cy,listeangle[-1+i].a1x, listeangle[-1+i].a1y,listeangle[-1+i].a2x,listeangle[-1+i].a2y))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de traits:' then begin litdansstring_entier(newnombrefleche); retaillepfleche(listefleche,nombrefleche,newnombrefleche); nombrefleche:=newnombrefleche; if nombrefleche>0 then for i:=1 to nombrefleche do begin litdansstring_string(s); litdansstring_reel(listefleche[-1+i].a1x); litdansstring_reel(listefleche[-1+i].a1y); litdansstring_reel(listefleche[-1+i].a2x); litdansstring_reel(listefleche[-1+i].a2y); litdansstring_entier(listefleche[-1+i].epaisseur); litdansstring_couleur(listefleche[-1+i].couleur); litdansstring_string(s); if s='trien' then listefleche[-1+i].ext1:=trien; if s='tffleche' then listefleche[-1+i].ext1:=tffleche; if s='ttrait' then listefleche[-1+i].ext1:=ttrait; if s='trond' then listefleche[-1+i].ext1:=trond; if s='tcroix' then listefleche[-1+i].ext1:=tcroix; if s='tcroixx' then listefleche[-1+i].ext1:=tcroixx; if s='tdisque' then listefleche[-1+i].ext1:=tdisque; litdansstring_string(s); if s='trien' then listefleche[-1+i].ext2:=trien; if s='tffleche' then listefleche[-1+i].ext2:=tffleche; if s='ttrait' then listefleche[-1+i].ext2:=ttrait; if s='trond' then listefleche[-1+i].ext2:=trond; if s='tcroix' then listefleche[-1+i].ext2:=tcroix; if s='tcroixx' then listefleche[-1+i].ext2:=tcroixx; if s='tdisque' then listefleche[-1+i].ext2:=tdisque; litdansstring_string(s); if s='pssolid' then listefleche[-1+i].styletrait:=pssolid; if s='psdot' then listefleche[-1+i].styletrait:=psdot; if s='psdash' then listefleche[-1+i].styletrait:=psdash; if s='psdashdot' then listefleche[-1+i].styletrait:=psdashdot; if s='psdashdotdot' then listefleche[-1+i].styletrait:=psdashdotdot; litdansstring_entier(listefleche[-1+i].taille1); litdansstring_entier(listefleche[-1+i].taille2); listefleche[-1+i].create(listefleche[-1+i].a1x,listefleche[-1+i].a1y, listefleche[-1+i].a2x,listefleche[-1+i].a2y, listefleche[-1+i].epaisseur,listefleche[-1+i].couleur, listefleche[-1+i].ext1,listefleche[-1+i].ext2, listefleche[-1+i].styletrait, listefleche[-1+i].taille1,listefleche[-1+i].taille2); end; goto 12345; end; if s1='Nombre d''oeils:' then begin litdansstring_entier(newnombreoeil); retaillepoeil(listeoeil,nombreoeil,newnombreoeil); nombreoeil:=newnombreoeil; if nombreoeil>0 then for i:=1 to nombreoeil do begin litdansstring_string(s); litdansstring_reel(listeoeil[-1+i].cx); litdansstring_reel(listeoeil[-1+i].cy); litdansstring_reel(listeoeil[-1+i].ax); litdansstring_reel( listeoeil[-1+i].ay); litdansstring_entier(listeoeil[-1+i].epaisseur); litdansstring_couleur(listeoeil[-1+i].couleur); if not( listeoeil[-1+i].create(listeoeil[-1+i].cx,listeoeil[-1+i].cy, listeoeil[-1+i].ax,listeoeil[-1+i].ay,listeoeil[-1+i].epaisseur, listeoeil[-1+i].couleur))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de mesures de distances' then begin litdansstring_entier(newnombremetre); retaillepmetre(listemetre,nombremetre,newnombremetre); nombremetre:=newnombremetre; if nombremetre>0 then for i:=1 to nombremetre do begin litdansstring_string(s); litdansstring_reel(listemetre[-1+i].a1x); litdansstring_reel(listemetre[-1+i].a1y); litdansstring_reel( listemetre[-1+i].a2x); litdansstring_reel(listemetre[-1+i].a2y); if not( listemetre[-1+i].create(listemetre[-1+i].a1x,listemetre[-1+i].a1y, listemetre[-1+i].a2x,listemetre[-1+i].a2y))then raise einouterror.Create('erreur'); end; goto 12345; end; if s1='Nombre de groupes:' then begin litdansstring_entier(newnombregroupe); retaillepgroupe(listegroupe,nombregroupe,newnombregroupe); nombregroupe:=newnombregroupe; if nombregroupe> 0 then for i:=1 to nombregroupe do begin listegroupe[-1+i].create; litdansstring_string(s); litdansstring_entier(chacha); for j:=1 to chacha do begin litdansstring_entier(papa); litdansstring_string(s); aze:=mdneant; if s='mdoeil' then aze:=mdoeil; if s='mddiaphragme' then aze:=mddiaphragme; if s='mdtexteaffiche'then aze:=mdtexteaffiche; if s='mdmiroirconique' then aze:=mdmiroirconique; if s='mdlec' then aze:=mdlec; if s='mdfleche' then aze:=mdfleche; if s='mdmiroirplan' then aze:=mdmiroirplan; if s='mdreseau' then aze:=mdreseau; if s='mdecran' then aze:=mdecran; if s='mdangle' then aze:=mdangle; if s='mdmetre' then aze:=mdmetre; if s='mdlsr' then aze:=mdlsr; if s='mdmscopa' then aze:=mdmscopa; if s='mdlmc' then aze:=mdlmc; if s='mdlmd' then aze:=mdlmd; if s='mdmscepa' then aze:=mdmscepa; if s='mdmscore' then aze:=mdmscore; if s='mdmscere' then aze:=mdmscere; if s='mdpolyhedre' then aze:=mdpolyhedre; if s='mdrayon' then aze:=mdrayon; if s='mdsourceponctuelle' then aze:=mdsourceponctuelle; if s='mdondeplane' then aze:=mdondeplane; if s='mdpolycercle' then aze:=mdpolycercle; if s='mdsphere' then aze:=mdsphere; if s='mdprisme' then aze:=mdprisme; listegroupe[-1+i].add(aze,papa); end; {de la boucle chacha} end; {de la boucle nombregroupe} goto 12345; end; if s1='couleur fond simulation' then begin litdansstring_couleur(couleurfondsimulation); goto 12345; end; if s1='empennage' then begin litdansstring_string(s); litdansstring_entier(positionempennage); litdansstring_string(s); litdansstring_entier(tailleempennage); goto 12345; end; 12345: end; {du while not(eof(f))} rapportactuel:=(yymax-yymin)/(xxmax-xxmin); afficherlagrille1.checked:=tracergrille; attractiondelagrille1.Checked:=attractiongrille; cochegrille.checked:=tracergrille; cocheattraction.Checked:=attractiongrille; N7.checked:=optionnormale; cochenormale.checked:=optionnormale; Afficherlesangles1.checked:=optionangles; cocheangles.checked:=optionangles; Rafraichit; form1.Caption:=Format(rsEspaceDeTrav2, [floattostr(xxmin), floattostr(xxmax), floattostr(yymin), floattostr(yymax)]); end; procedure sauvevirtuel; var i,j:integer; TempStream : TMemoryStream; procedure ecritdanststring(s:string); begin etatactuel[nombre_etats_sauvegardes].Add(s); end; procedure ecritdanststring_couleur(s:tcolor); begin etatactuel[nombre_etats_sauvegardes].Add(inttostr(s)); end; procedure ecritdanststring_entier(s:integer); begin etatactuel[nombre_etats_sauvegardes].Add(inttostr(s)); end; procedure ecritdanststring_reel(s:extended); begin etatactuel[nombre_etats_sauvegardes].Add(floattostr(s)); end; procedure ecritdanststring_boolean(s:boolean); begin if s then etatactuel[nombre_etats_sauvegardes].Add('TRUE') else etatactuel[nombre_etats_sauvegardes].add('FALSE'); end; begin form1.refaire1.enabled:=false; if nombre_etats_sauvegardes=maxannulation then for i:=2 to maxannulation do begin TempStream := TMemoryStream.Create; etatactuel[i].SaveToStream(TempStream); TempStream.Position := 0; etatactuel[i-1].LoadFromStream( TempStream); TempStream.Free; end else begin inc(nombre_etats_sauvegardes); end; niveau_max_sauvegarde:=nombre_etats_sauvegardes; if nombre_etats_sauvegardes>=2 then form1.rtablir1.enabled:=true; etatactuel[nombre_etats_sauvegardes].Clear; ecritdanststring('NE PAS MODIFIER CE FICHIER'); ecritdanststring('VERSION'); ecritdanststring_entier(versionprogramme); { so on modifie le format des fichiers, il faut modifier le numero de version du programme; lors de la lecture des fichiuers, il faut adapter la lecture au numero de version, de facon que les anciens fichiers puissent etre relus avec les nouvelles versions de programme} ecritdanststring_reel(xxmin); ecritdanststring_reel(xxmax); ecritdanststring_reel(yymin); ecritdanststring_reel(yymax); ecritdanststring_boolean(respectrapport); ecritdanststring('UNITE'); ecritdanststring(unitelongueur); ecritdanststring('OPTIONS GRILLE'); ecritdanststring_boolean(tracergrille); ecritdanststring_boolean(attractiongrille); ecritdanststring_reel(grillex); ecritdanststring_reel(grilley); ecritdanststring('OPTIONS NORMALES'); ecritdanststring_boolean(optionnormale); ecritdanststring_boolean(optionangles); ecritdanststring_reel(pourcentagenormale); ecritdanststring_couleur(couleurnormale); ecritdanststring_entier(epaisseurnormale); ecritdanststring_entier(decimalesangles); ecritdanststring('OPTIONS SEGMENTS FANTOMES'); ecritdanststring_boolean(fantomespresents); ecritdanststring(listefantomes); ecritdanststring('NOMBRE POINTS TRACE SURFACE ONDE'); ecritdanststring_entier(maxrayonsrecherchesurfacesonde); ecritdanststring('INDICES PAR DEFAUT'); ecritdanststring_reel(indice_vert_par_defaut); ecritdanststring_reel(indice_bleu_par_defaut); ecritdanststring_reel(indice_rouge_par_defaut); ecritdanststring('LAMBDA'); ecritdanststring_reel(longueur_donde_red); ecritdanststring_reel(longueur_donde_blue); ecritdanststring_reel(longueur_donde_green); ecritdanststring('Nombre de miroirs plans:'); ecritdanststring_entier(nombremiroirplan); if nombremiroirplan>0 then for i:=1 to nombremiroirplan do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listemiroirplan[-1+i].a1x); ecritdanststring_reel(listemiroirplan[-1+i].a1y); ecritdanststring_reel(listemiroirplan[-1+i].a2x); ecritdanststring_reel(listemiroirplan[-1+i].a2y); ecritdanststring_entier(listemiroirplan[-1+i].epaisseur); ecritdanststring_couleur(listemiroirplan[-1+i].couleur); ecritdanststring_boolean(listemiroirplan[-1+i].hachures); end; ecritdanststring('Nombre de reseaux:'); ecritdanststring_entier(nombreReseau); if nombreReseau>0 then for i:=1 to nombreReseau do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listeReseau[-1+i].a1x); ecritdanststring_reel(listeReseau[-1+i].a1y); ecritdanststring_reel(listeReseau[-1+i].a2x); ecritdanststring_reel(listeReseau[-1+i].a2y); ecritdanststring_entier(listeReseau[-1+i].epaisseur); ecritdanststring_couleur(listeReseau[-1+i].couleur); ecritdanststring_reel(listeReseau[-1+i].pas); ecritdanststring_boolean(listeReseau[-1+i].entransmission); ecritdanststring_boolean(listeReseau[-1+i].hachures); ecritdanststring_entier(listeReseau[-1+i].ordre_min); ecritdanststring_entier(listeReseau[-1+i].ordre_max); end; ecritdanststring('Nombre de miroirs concaves paraxiaux:'); ecritdanststring_entier(nombremscopa); if nombremscopa>0 then for i:=1 to nombremscopa do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listemscopa[-1+i].a1x); ecritdanststring_reel(listemscopa[-1+i].a1y); ecritdanststring_reel(listemscopa[-1+i].a2x); ecritdanststring_reel( listemscopa[-1+i].a2y); ecritdanststring_reel(listemscopa[-1+i].focale); ecritdanststring_entier(listemscopa[-1+i].epaisseur); ecritdanststring_couleur(listemscopa[-1+i].couleur); ecritdanststring_couleur( listemscopa[-1+i].couleuraxe); ecritdanststring_boolean(listemscopa[-1+i].hachures); ecritdanststring_boolean(listemscopa[-1+i].axefocal); ecritdanststring_boolean(listemscopa[-1+i].trou); ecritdanststring_reel(listemscopa[-1+i].diametretrou); end; ecritdanststring('Nombre de miroirs convexes paraxiaux:'); ecritdanststring_entier(nombremscepa); if nombremscepa>0 then for i:=1 to nombremscepa do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listemscepa[-1+i].a1x); ecritdanststring_reel(listemscepa[-1+i].a1y); ecritdanststring_reel(listemscepa[-1+i].a2x); ecritdanststring_reel( listemscepa[-1+i].a2y); ecritdanststring_reel(listemscepa[-1+i].focale); ecritdanststring_entier( listemscepa[-1+i].epaisseur); ecritdanststring_couleur(listemscepa[-1+i].couleur); ecritdanststring_couleur( listemscepa[-1+i].couleuraxe); ecritdanststring_boolean(listemscepa[-1+i].hachures); ecritdanststring_boolean(listemscepa[-1+i].axefocal); ecritdanststring_boolean(listemscepa[-1+i].trou); ecritdanststring_reel(listemscepa[-1+i].diametretrou); end; ecritdanststring('Nombre de miroirs concaves reels:'); ecritdanststring_entier(nombremscore); if nombremscore>0 then for i:=1 to nombremscore do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listemscore[-1+i].a1x); ecritdanststring_reel(listemscore[-1+i].a1y); ecritdanststring_reel(listemscore[-1+i].a2x); ecritdanststring_reel(listemscore[-1+i].a2y); ecritdanststring_reel(listemscore[-1+i].rayoncourbure); ecritdanststring_entier(listemscore[-1+i].epaisseur); ecritdanststring_couleur(listemscore[-1+i].couleur); ecritdanststring_couleur( listemscore[-1+i].couleuraxe); ecritdanststring_boolean(listemscore[-1+i].hachures); ecritdanststring_boolean(listemscore[-1+i].axefocal); ecritdanststring_boolean(listemscore[-1+i].aigu); ecritdanststring_boolean(listemscore[-1+i].trou); ecritdanststring_reel(listemscore[-1+i].diametretrou); end; ecritdanststring('Nombre de miroirs convexes reels:'); ecritdanststring_entier(nombremscere); if nombremscere>0 then for i:=1 to nombremscere do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listemscere[-1+i].a1x); ecritdanststring_reel(listemscere[-1+i].a1y); ecritdanststring_reel(listemscere[-1+i].a2x); ecritdanststring_reel(listemscere[-1+i].a2y); ecritdanststring_reel(listemscere[-1+i].rayoncourbure); ecritdanststring_entier(listemscere[-1+i].epaisseur); ecritdanststring_couleur(listemscere[-1+i].couleur); ecritdanststring_couleur(listemscere[-1+i].couleuraxe); ecritdanststring_boolean(listemscere[-1+i].hachures); ecritdanststring_boolean(listemscere[-1+i].axefocal); ecritdanststring_boolean(listemscere[-1+i].aigu); ecritdanststring_boolean(listemscere[-1+i].trou); ecritdanststring_reel(listemscere[-1+i].diametretrou); end; ecritdanststring('Nombre de lentiles minces convergentes:'); ecritdanststring_entier(nombrelmc); if nombrelmc>0 then for i:=1 to nombrelmc do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listelmc[-1+i].a1x); ecritdanststring_reel(listelmc[-1+i].a1y); ecritdanststring_reel(listelmc[-1+i].a2x); ecritdanststring_reel(listelmc[-1+i].a2y); ecritdanststring_reel(listelmc[-1+i].focale); ecritdanststring_entier(listelmc[-1+i].epaisseur); ecritdanststring_couleur(listelmc[-1+i].couleur); ecritdanststring_couleur(listelmc[-1+i].couleuraxe); ecritdanststring_boolean(listelmc[-1+i].axefocal); end; ecritdanststring('Nombre de lentiles minces divergentes:'); ecritdanststring_entier(nombrelmd); if nombrelmd>0 then for i:=1 to nombrelmd do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listelmd[-1+i].a1x); ecritdanststring_reel(listelmd[-1+i].a1y); ecritdanststring_reel(listelmd[-1+i].a2x); ecritdanststring_reel( listelmd[-1+i].a2y); ecritdanststring_reel(listelmd[-1+i].focale); ecritdanststring_entier(listelmd[-1+i].epaisseur); ecritdanststring_couleur(listelmd[-1+i].couleur); ecritdanststring_couleur(listelmd[-1+i].couleuraxe); ecritdanststring_boolean(listelmd[-1+i].axefocal); end; ecritdanststring('Nombre de rayons:'); ecritdanststring_entier(nombrerayon); if nombrerayon>0 then for i:=1 to nombrerayon do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listerayon[-1+i].ax); ecritdanststring_reel(listerayon[-1+i].ay); ecritdanststring_reel(listerayon[-1+i].kx); ecritdanststring_reel(listerayon[-1+i].ky); ecritdanststring_couleur(listerayon[-1+i].couleur); ecritdanststring_entier(listerayon[-1+i].epaisseur); ecritdanststring_entier(listerayon[-1+i].nombremaxenfant); ecritdanststring(listerayon[-1+i].vav); ecritdanststring(listerayon[-1+i].vaa); ecritdanststring('Nombre maximal de segments:'); ecritdanststring_entier(listerayon[-1+i].maxsegment); end; ecritdanststring('Nombre de sources ponctuelles:'); ecritdanststring_entier(nombresourceponctuelle); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_entier(listesourceponctuelle[-1+i].nombrederayon); ecritdanststring_reel(listesourceponctuelle[-1+i].sx); ecritdanststring_reel( listesourceponctuelle[-1+i].sy); ecritdanststring_reel( listesourceponctuelle[-1+i].a1x); ecritdanststring_reel(listesourceponctuelle[-1+i].a1y); ecritdanststring_reel(listesourceponctuelle[-1+i].a2x); ecritdanststring_reel(listesourceponctuelle[-1+i].a2y); ecritdanststring_couleur( listesourceponctuelle[-1+i].couleur); ecritdanststring_entier( listesourceponctuelle[-1+i].epaisseur); ecritdanststring_entier( listesourceponctuelle[-1+i].maxenfantparrayon); ecritdanststring(listesourceponctuelle[-1+i].vav); ecritdanststring(listesourceponctuelle[-1+i].vaa); ecritdanststring_boolean(listesourceponctuelle[-1+i].sourcevirtuelle); ecritdanststring_boolean(listesourceponctuelle[-1+i].tracersurfacesonde); ecritdanststring(listesourceponctuelle[-1+i].listechemins); ecritdanststring('Nombre maximal de segments par rayon:'); ecritdanststring_entier(listesourceponctuelle[-1+i].maxsegment); end; ecritdanststring('Nombre d''ondes planes:'); ecritdanststring_entier(nombreondeplane); if nombreondeplane>0 then for i:=1 to nombreondeplane do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_entier(listeondeplane[-1+i].nombrederayon); ecritdanststring_reel( listeondeplane[-1+i].sx); ecritdanststring_reel( listeondeplane[-1+i].sy); ecritdanststring_reel(listeondeplane[-1+i].a1x); ecritdanststring_reel(listeondeplane[-1+i].a1y); ecritdanststring_reel(listeondeplane[-1+i].a2x); ecritdanststring_reel(listeondeplane[-1+i].a2y); ecritdanststring_couleur(listeondeplane[-1+i].couleur); ecritdanststring_entier( listeondeplane[-1+i].epaisseur); ecritdanststring_entier( listeondeplane[-1+i].maxenfantparrayon); ecritdanststring(listeondeplane[-1+i].vav); ecritdanststring(listeondeplane[-1+i].vaa); ecritdanststring_boolean(listeondeplane[-1+i].tracersurfacesonde); ecritdanststring(listeondeplane[-1+i].listechemins); ecritdanststring('Nombre maximal de segments par rayon:'); ecritdanststring_entier(listeondeplane[-1+i].maxsegment); end; ecritdanststring('Nombre d''ecrans:'); ecritdanststring_entier(nombreecran); if nombreecran>0 then for i:=1 to nombreecran do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listeecran[-1+i].a1x); ecritdanststring_reel(listeecran[-1+i].a1y); ecritdanststring_reel(listeecran[-1+i].a2x); ecritdanststring_reel(listeecran[-1+i].a2y); ecritdanststring_entier(listeecran[-1+i].epaisseur); ecritdanststring_couleur(listeecran[-1+i].couleur); end; ecritdanststring('Nombre de diaphragmes:'); ecritdanststring_entier(nombrediaphragme); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listediaphragme[-1+i].cx); ecritdanststring_reel(listediaphragme[-1+i].cy); ecritdanststring_reel(listediaphragme[-1+i].anglepolaire); ecritdanststring_reel(listediaphragme[-1+i].rint); ecritdanststring_reel(listediaphragme[-1+i].rext); ecritdanststring_entier(listediaphragme[-1+i].epaisseur); ecritdanststring_couleur(listediaphragme[-1+i].couleur); end; ecritdanststring('Nombre de lames semi reflechissantes:'); ecritdanststring_entier(nombrelsr); if nombrelsr>0 then for i:=1 to nombrelsr do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listelsr[-1+i].a1x); ecritdanststring_reel(listelsr[-1+i].a1y); ecritdanststring_reel(listelsr[-1+i].a2x); ecritdanststring_reel(listelsr[-1+i].a2y); ecritdanststring_entier(listelsr[-1+i].epaisseur); ecritdanststring_couleur(listelsr[-1+i].couleur); end; ecritdanststring('Nombre de polyhedres:'); ecritdanststring_entier(nombrepolyhedre); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_entier(listepolyhedre[-1+i].nombresommet); for j:=1 to listepolyhedre[-1+i].nombresommet do begin ecritdanststring_reel(listepolyhedre[-1+i].messommets[j].ax); ecritdanststring_reel(listepolyhedre[-1+i].messommets[j].ay); end; ecritdanststring_reel(listepolyhedre[-1+i].indicerouge); ecritdanststring_reel(listepolyhedre[-1+i].indicebleu); ecritdanststring_reel(listepolyhedre[-1+i].indicevert); ecritdanststring_couleur(listepolyhedre[-1+i].couleurbord); ecritdanststring_couleur(listepolyhedre[-1+i].couleurfond); case listepolyhedre[-1+i].reflechientrant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; case listepolyhedre[-1+i].reflechisortant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; end; ecritdanststring('Nombre de prismes:'); ecritdanststring_entier(nombreprisme); if nombreprisme>0 then for i:=1 to nombreprisme do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listeprisme[-1+i].gx); ecritdanststring_reel(listeprisme[-1+i].gy); ecritdanststring_reel(listeprisme[-1+i].ax); ecritdanststring_reel(listeprisme[-1+i].ay); ecritdanststring_reel(listeprisme[-1+i].bx); ecritdanststring_reel(listeprisme[-1+i].by); ecritdanststring_reel(listeprisme[-1+i].indicerouge); ecritdanststring_reel(listeprisme[-1+i].indicebleu); ecritdanststring_reel(listeprisme[-1+i].indicevert); ecritdanststring_couleur(listeprisme[-1+i].couleurbord); ecritdanststring_couleur(listeprisme[-1+i].couleurfond); case listeprisme[-1+i].reflechientrant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; case listeprisme[-1+i].reflechisortant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; end; ecritdanststring('Nombre de polycercles:'); ecritdanststring_entier(nombrepolycercle); if nombrepolycercle>0 then for i:=1 to nombrepolycercle do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_entier(listepolycercle[-1+i].nombresommet); for j:=1 to listepolycercle[-1+i].nombresommet do begin ecritdanststring_reel(listepolycercle[-1+i].messommets[j].ax); ecritdanststring_reel(listepolycercle[-1+i].messommets[j].ay); end; for j:=1 to listepolycercle[-1+i].nombresommet do begin ecritdanststring_reel(listepolycercle[-1+i].mess[j].ax); ecritdanststring_reel(listepolycercle[-1+i].mess[j].ay); end; for j:=1 to listepolycercle[-1+i].nombresommet do ecritdanststring_boolean(listepolycercle[-1+i].rectiligne[j]); ecritdanststring_reel(listepolycercle[-1+i].indicerouge); ecritdanststring_reel(listepolycercle[-1+i].indicebleu); ecritdanststring_reel(listepolycercle[-1+i].indicevert); ecritdanststring_couleur(listepolycercle[-1+i].couleurbord); ecritdanststring_couleur(listepolycercle[-1+i].couleurfond); case listepolycercle[-1+i].reflechientrant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; case listepolycercle[-1+i].reflechisortant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; end; ecritdanststring('Nombre de spheres:'); ecritdanststring_entier(nombresphere); if nombresphere>0 then for i:=1 to nombresphere do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listesphere[-1+i].cx); ecritdanststring_reel(listesphere[-1+i].cy); ecritdanststring_reel(listesphere[-1+i].rayon); ecritdanststring_reel(listesphere[-1+i].indicerouge); ecritdanststring_reel(listesphere[-1+i].indicebleu); ecritdanststring_reel(listesphere[-1+i].indicevert); ecritdanststring_couleur(listesphere[-1+i].couleurbord); ecritdanststring_couleur(listesphere[-1+i].couleurfond); case listesphere[-1+i].reflechientrant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; case listesphere[-1+i].reflechisortant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; end; ecritdanststring('Nombre de miroirs coniques:'); ecritdanststring_entier(nombremiroirconique); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listemiroirconique[-1+i].fx); ecritdanststring_reel(listemiroirconique[-1+i].fy); ecritdanststring_reel(listemiroirconique[-1+i].excentricite); ecritdanststring_reel(listemiroirconique[-1+i].parametre); ecritdanststring_reel(listemiroirconique[-1+i].theta0); ecritdanststring_reel(listemiroirconique[-1+i].theta1); ecritdanststring_reel(listemiroirconique[-1+i].theta2); ecritdanststring_couleur(listemiroirconique[-1+i].couleur); ecritdanststring_couleur(listemiroirconique[-1+i].couleuraxe); ecritdanststring_boolean(listemiroirconique[-1+i].hachures); ecritdanststring_boolean(listemiroirconique[-1+i].axefocal); ecritdanststring_boolean(listemiroirconique[-1+i].concave); end; ecritdanststring('Nombre de textes:'); ecritdanststring_entier(nombretexte); if nombretexte>0 then for i:=1 to nombretexte do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring(listetexteaffiche[-1+i].texteluimeme); ecritdanststring_reel(listetexteaffiche[-1+i].x); ecritdanststring_reel(listetexteaffiche[-1+i].y); ecritdanststring_entier(listetexteaffiche[-1+i].policecharset); ecritdanststring_couleur(listetexteaffiche[-1+i].policecolor); ecritdanststring(listetexteaffiche[-1+i].policename); ecritdanststring_entier(listetexteaffiche[-1+i].policesize); if listetexteaffiche[-1+i].policefsbold then ecritdanststring('fsbold') else ecritdanststring('no'); if listetexteaffiche[-1+i].policefsitalic then ecritdanststring('fsitalic') else ecritdanststring('no'); if listetexteaffiche[-1+i].policefsunderline then ecritdanststring('fsunderline') else ecritdanststring('no'); if listetexteaffiche[-1+i].policefsstrikeout then ecritdanststring('fsstrikeout') else ecritdanststring('no'); if listetexteaffiche[-1+i].policepitch=fpDefault then ecritdanststring('fpDefault'); if listetexteaffiche[-1+i].policepitch=fpVariable then ecritdanststring('fpVariable'); if listetexteaffiche[-1+i].policepitch=fpFixed then ecritdanststring('fpFixed'); end; ecritdanststring('Nombre de lentilles epaisses:'); ecritdanststring_entier(nombrelec); if nombrelec>0 then for i:=1 to nombrelec do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listelec[-1+i].s1x); ecritdanststring_reel(listelec[-1+i].s1y); ecritdanststring_reel(listelec[-1+i].s2x); ecritdanststring_reel(listelec[-1+i].s2y); ecritdanststring_reel(listelec[-1+i].r1); ecritdanststring_reel(listelec[-1+i].r2); ecritdanststring_reel(listelec[-1+i].diametre); ecritdanststring_couleur(listelec[-1+i].couleurfond); ecritdanststring_couleur(listelec[-1+i].couleuraxe); ecritdanststring_boolean(listelec[-1+i].axefocal); ecritdanststring_reel(listelec[-1+i].indicerouge); ecritdanststring_reel(listelec[-1+i].indicebleu); ecritdanststring_reel(listelec[-1+i].indicevert); case listelec[-1+i].reflechientrant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; case listelec[-1+i].reflechisortant of toujoursreflechi: ecritdanststring('1'); jamaisreflechi: ecritdanststring('2'); reflechisirefracte:ecritdanststring('3'); reflechisipasrefracte:ecritdanststring('4'); end; end; ecritdanststring('Nombre d''angles:'); ecritdanststring_reel(nombreangle); if nombreangle>0 then for i:=1 to nombreangle do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listeangle[-1+i].cx); ecritdanststring_reel(listeangle[-1+i].cy); ecritdanststring_reel(listeangle[-1+i].a1x); ecritdanststring_reel(listeangle[-1+i].a1y); ecritdanststring_reel(listeangle[-1+i].a2x); ecritdanststring_reel(listeangle[-1+i].a2y); end; { a partir de la version 3} ecritdanststring('Nombre de traits:'); ecritdanststring_entier(nombrefleche); if nombrefleche>0 then for i:=1 to nombrefleche do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listefleche[-1+i].a1x); ecritdanststring_reel(listefleche[-1+i].a1y); ecritdanststring_reel(listefleche[-1+i].a2x); ecritdanststring_reel(listefleche[-1+i].a2y); ecritdanststring_entier(listefleche[-1+i].epaisseur); ecritdanststring_couleur(listefleche[-1+i].couleur); case listefleche[-1+i].ext1 of trien: ecritdanststring('trien'); ttrait: ecritdanststring('ttrait'); tffleche: ecritdanststring('tffleche'); trond: ecritdanststring('trond'); tcroix: ecritdanststring('tcroix'); tcroixx: ecritdanststring('tcroixx'); tdisque: ecritdanststring('tdisque'); end; case listefleche[-1+i].ext2 of trien: ecritdanststring('trien'); ttrait: ecritdanststring('ttrait'); tffleche: ecritdanststring('tffleche'); trond: ecritdanststring('trond'); tcroix: ecritdanststring('tcroix'); tcroixx: ecritdanststring('tcroixx'); tdisque: ecritdanststring('tdisque'); end; case listefleche[-1+i].styletrait of pssolid: ecritdanststring('pssolid'); psdot:ecritdanststring('psdot'); psdash: ecritdanststring('psdash'); psdashdot: ecritdanststring('psdashdot'); psdashdotdot: ecritdanststring('psdashdotdot'); end; ecritdanststring_reel(listefleche[-1+i].taille1); ecritdanststring_reel(listefleche[-1+i].taille2); end; { a partir de a version 4} ecritdanststring('Nombre d''oeils:'); ecritdanststring_entier(nombreoeil); if nombreoeil>0 then for i:=1 to nombreoeil do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listeoeil[-1+i].cx); ecritdanststring_reel(listeoeil[-1+i].cy); ecritdanststring_reel(listeoeil[-1+i].ax); ecritdanststring_reel(listeoeil[-1+i].ay); ecritdanststring_entier(listeoeil[-1+i].epaisseur); ecritdanststring_couleur(listeoeil[-1+i].couleur); end; { a partir de la version 5} ecritdanststring('Nombre de mesures de distances'); ecritdanststring_entier(nombremetre); if nombremetre>0 then for i:=1 to nombremetre do begin ecritdanststring('Numero '+inttostr(i)); ecritdanststring_reel(listemetre[-1+i].a1x); ecritdanststring_reel(listemetre[-1+i].a1y); ecritdanststring_reel(listemetre[-1+i].a2x); ecritdanststring_reel(listemetre[-1+i].a2y); end; ecritdanststring('Nombre de groupes:'); ecritdanststring_entier(nombregroupe); if nombregroupe>0 then for i:=1 to nombregroupe do begin ecritdanststring('Numero groupe'+inttostr(i)); ecritdanststring_entier(listegroupe[-1+i].nombreelements); for j:=1 to listegroupe[-1+i].nombreelements do begin ecritdanststring_entier(listegroupe[-1+i].listeelements[j].indiceelement); case listegroupe[-1+i].listeelements[j].typeelementgroupe of mdoeil: ecritdanststring('mdoeil'); mddiaphragme: ecritdanststring('mddiaphragme'); mdtexteaffiche: ecritdanststring('mdtexteaffiche'); mdmiroirconique: ecritdanststring('mdmiroirconique'); mdlec: ecritdanststring('mdlec'); mdfleche:ecritdanststring('mdfleche'); mdmiroirplan: ecritdanststring('mdmiroirplan'); mdecran: ecritdanststring('mdecran'); mdangle: ecritdanststring('mdangle'); mdmetre: ecritdanststring('mdmetre'); mdlsr: ecritdanststring('mdlsr'); mdmscopa: ecritdanststring('mdmscopa'); mdlmc: ecritdanststring('mdlmc'); mdlmd: ecritdanststring('mdlmd'); mdmscepa: ecritdanststring('mdmscepa'); mdmscore: ecritdanststring('mdmscore'); mdmscere: ecritdanststring('mdmscere'); mdpolyhedre: ecritdanststring('mdpolyhedre'); mdrayon: ecritdanststring('mdrayon'); mdsourceponctuelle: ecritdanststring('mdsourceponctuelle'); mdondeplane: ecritdanststring('mdondeplane'); mdpolycercle: ecritdanststring('mdpolycercle'); mdsphere: ecritdanststring('mdsphere'); mdprisme: ecritdanststring('mdprisme'); else ecritdanststring('mdneant'); end; end; end; ecritdanststring('couleur fond simulation'); ecritdanststring_couleur(couleurfondsimulation); ecritdanststring('empennage'); ecritdanststring('position'); ecritdanststring_entier(positionempennage); ecritdanststring('taille'); ecritdanststring_entier(tailleempennage); end; procedure TForm1.Sauver1Click(Sender: TObject); begin sauvevirtuel; end; procedure TForm1.Rtablir1Click(Sender: TObject); begin form1.charge_virtuel; refaire1.Enabled:=true; end; procedure TForm1.Refaire1Click(Sender: TObject); begin if nombre_etats_sauvegardes>=niveau_max_sauvegarde-1 then refaire1.Enabled:=false; if nombre_etats_sauvegardes<=niveau_max_sauvegarde-1 then begin inc(nombre_etats_sauvegardes,2); form1.charge_virtuel; end; rtablir1.Enabled:=true; end; procedure TForm1.Dfinirlerpertoirepersonnel1Click(Sender: TObject); var fc:textfile; begin with form16 do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; form16.rep1.text:=repertoireexecutable; form16.rep1.Enabled:=false; form16.directoryedit1.Directory:=repertoire_exemples; form16.directoryedit2.Directory:=repertoire_config_perso; form16.directoryedit3.Directory:=repertoire_simul_perso; form16.directoryedit1.enabled:=true; form16.directoryedit2.enabled:=false; form16.directoryedit3.enabled:=true; form16.showmodal; repertoire_simul_perso:=form16.directoryedit3.Directory; repertoire_exemples:=form16.directoryedit1.Directory; if not(directoryexistsutf8(repertoire_simul_perso)) then try forcedirectories(UTF8ToSys(repertoire_simul_perso)); except end; if not(directoryexistsUTF8(repertoire_simul_perso)) then begin application.messagebox(pchar(rsJeNeParviens4), pchar(rsMaisEuh), mb_ok); repertoire_simul_perso:=repertoire_simul_perso_par_defaut; end; if not(directoryexistsUTF8(repertoire_exemples)) then try forcedirectories(UTF8ToSys(repertoire_exemples)); except end; if not(directoryexistsUTF8(repertoire_exemples)) then begin application.messagebox(pchar(rsJeNeParviens4), pchar(rsMaisEuh), mb_ok); repertoire_exemples:=repertoire_exemples_par_defaut; end; try AssignFile(Fc,UTF8ToSys(nom_fichier_config_optgeo)); rewrite(fc); writeln(fc,'repertoire exemples'); writeln(fc,repertoire_exemples); writeln(fc,'repertoire simulation perso'); writeln(fc,repertoire_simul_perso); writeln(fc,'repertoire config perso'); writeln(fc,repertoire_config_perso); closefile(fc); except end; saisiepreferences.BitBtn2Click(Sender); end; procedure TForm1.dudernierrpertoireutilis1Click(Sender: TObject); begin form1.Ouvrirsimulation(sender,repertoire_actuel); end; procedure TForm1.LicenseGPL1Click(Sender: TObject); begin formgpl:=tformgpl.create(self); with formgpl do begin if screen.width>width then left:=(screen.width-width) div 2 else left:=0; if screen.height>height then top:=(screen.height-height) div 2 else top:=0; end; formgpl.Memogpl.Clear; formgpl.Memogpl.Lines.LoadFromFile(utf8tosys(repertoireexecutable+'gpl.txt')); formgpl.ShowModal; end; procedure TForm1.SpeedButton2Click(Sender: TObject); var i:integer; begin if not(nombretotalsegment)>0 then exit; fiche_coordonnees_segments:=tfiche_coordonnees_segments.create(self); fiche_coordonnees_segments.Memo1.Lines.Clear; if nombretotalsegment>0 then for i:=1 to nombretotalsegment do if not (fantomespresents and fantomes[i]) then fiche_coordonnees_segments.Memo1.Lines.Add('('+floattostr(listesegment[-1+i].a1x)+' ; '+floattostr(listesegment[-1+i].a1y)+ ') ; ('+floattostr(listesegment[-1+i].a2x)+' ; '+floattostr(listesegment[-1+i].a2y)+' )') else fiche_coordonnees_segments.Memo1.Lines.Add('('+floattostr(listesegment[-1+i].a1x)+' ; '+floattostr(listesegment[-1+i].a1y)+ ') ; ('+floattostr(listesegment[-1+i].a2x)+' ; '+floattostr(listesegment[-1+i].a2y)+' )...fantôme !'); fiche_coordonnees_segments.ShowModal; end; Function MyGetAppConfigDirUTF8: String; {il est necessaire de modifier GetAppConfigDir acr sur les systemes windows renvoie local setting\application data au lieu de application data} var I: Integer; EnvVars: TStringList; begin {$ifndef windows} result:=systoutf8(SysUtils.GetAppConfigDir(false)); {$endif} {$ifdef windows} EnvVars := TStringList.Create; try for I := 0 to GetEnvironmentVariableCount - 1 do EnvVars.Add(GetEnvironmentString(I)); result:=systoutf8(AppendPathDelim(EnvVars.Values['APPDATA'])+'optgeo\'); finally EnvVars.Free; end; {$endif} end; Function ExpandEnvironmentString(s: String): String; Var i, k: Integer; sl: TStringList; s2: String; bP, bD: Boolean; Begin Result := s; bP := Pos('%', s) > 0; bD := Pos('$', s) > 0; If Not(bP Or bD) Then Exit; // Nichts zu konvertieren sl := TStringList.Create; sl.Sorted := bD; For i := GetEnvironmentVariableCount - 1 DownTo 0 Do // Alle Variablen in eine Liste merken Begin s2 := GetEnvironmentStringUTF8(i); If Length(s2) >= 2 Then If s2[1] <> '=' Then // Bei Windows kommt sowas auch vor, daher wegoptimieren sl.Add(s2); end; k := 0; Repeat // Durchlaufe so oft bis alle Env-Variablen aufgelöst sind s2 := Result; For i := sl.Count - 1 DownTo 0 Do Begin If bP Then Begin Result := StringReplace(Result, '%' + sl.Names[i] + '%', sl.ValueFromIndex[i], [rfReplaceAll, rfIgnoreCase]); If Pos('%', Result) = 0 Then bP := False; end; If bD Then Begin Result := StringReplace(Result, '$' + sl.Names[i], sl.ValueFromIndex[i], [rfReplaceAll]); If Pos('$', Result) = 0 Then bD := False; end; If Not(bP Or bD) Then Break; end; If Not(bP Or bD) Then Break; If SameText(s2, Result) Then Break; // % $ nicht konvertierbar, da im System nicht vorhanden Inc(k); If k > sl.Count - 2 Then Break; // Max Durchläufe Until True; sl.Free; end; {$ifdef windows} Function MyGetMesDocumentsUTF8: String; var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\' + 'Explorer\User Shell Folders\', False); result:=ExpandEnvironmentString(Reg.ReadString('Personal')); finally Reg.Free; end; end; {$endif} initialization {$i ray1.lrs} fermeture:=false; creation:=true; modepage:=true; versionprogramme:=220; repertoireexecutable:=AppendPathDelim(extractfilepath(Application.ExeName)); repertoire_config_perso:=AppendPathDelim(MyGetAppConfigDirUTF8); nom_fichier_config_optgeo:=repertoire_config_perso+'optgeo.cfg'; {$ifdef windows} repertoire_simul_perso:=AppendPathDelim(AppendPathDelim(MyGetMesDocumentsUTF8)+'MesSimulations'); {$endif} {$ifndef windows} repertoire_simul_perso:=AppendPathDelim(getuserdir+'MesSimulations'); {$endif} nom_fichier_config_perso:=repertoire_config_perso+'perso.cfg'; nom_ini_file:=repertoire_config_perso+'optgeo.ini'; repertoire_simul_perso_par_defaut:=repertoire_simul_perso; repertoire_exemples:=AppendPathDelim(repertoireexecutable+'exemples'); repertoire_exemples_par_defaut:=repertoire_exemples; repertoire_actuel:=repertoire_exemples; nomexecutable:=extractfilename(Application.ExeName); {$IFDEF WINDOWS}parametrelignecommande:=(paramcount>0);{$ELSE} parametrelignecommande:=false; {$ENDIF} nombre_etats_sauvegardes:=0; niveau_max_sauvegarde:=0; liste_langues:=tstringlist.create; chemin_po:=AppendPathDelim(repertoireexecutable+'lang'); If FindFirstutf8(Chemin_po+'optgeo.*.po',faAnyFile,Search)=0 Then Begin Repeat if (Search.Name='.') or (Search.Name='..') or (Search.Name='') then continue; { liste_langues.Add(copy(Search.name,length(Search.name)-4,2)); } ID_lang:=copy(Search.name,length('optgeo.')+1, length(Search.Name)-length('optgeo..po')); if (ID_lang<>'') and (Pos('.',ID_lang)<1) and (liste_langues.IndexOf(ID_lang)<0) then liste_langues.Add(ID_lang); Until FindNextutf8(Search)<>0; FindCloseutf8(Search); End; lang:=''; FallbackLang:=''; if not(fileexistsutf8(nom_ini_file)) then begin GetLanguageIDs(lang,FallbackLang); if ((liste_langues.indexof(uppercase(lang))=-1) and (liste_langues.indexof(uppercase(FallbackLang))=-1)) then begin Lang:='fr_FR'; FallbackLang:='fr'; end; goto 1888; end; assignfile(f_ini,UTF8ToSys(nom_ini_file)); reset(f_ini); readln(f_ini,lang); readln(f_ini,FallbackLang); closefile(f_ini); 1888: PODirectory:=IncludeTrailingPathDelimiter( IncludeTrailingPathDelimiter( ExtractFilePath(Application.ExeName))+'lang'); Translations.TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang); Translations.TranslateUnitResourceStrings('UChaines', PODirectory + 'optgeo.%s.po', Lang, FallbackLang); end. optgeo-2.21/saisiesphere.pas0000750000175000017500000001424112247333133016323 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiesphere; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin, ExtCtrls,unit222,Unit8,ColorBox, LResources,LCLType,UnitScaleFont,UChaines; type { Tsaisiesph } Tsaisiesph = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Colorgrid1: TColorBox; radiosortant: TRadioGroup; radioentrant: TRadioGroup; GroupBox2: TGroupBox; StaticText2: TLabel; StaticText3: TLabel; StaticText4: TLabel; editnrouge: TEdit; editnvert: TEdit; editnbleu: TEdit; GroupBox3: TGroupBox; StaticText5: TLabel; StaticText6: TLabel; editx: TEdit; edity: TEdit; boutonsup: TBitBtn; GroupBox1: TGroupBox; editrayon: TEdit; StaticText1: TLabel; GroupBox4: TGroupBox; log1: TLabel; log2: TLabel; log3: TLabel; StaticText7: TLabel; combomateriaux: TComboBox; procedure BitBtn1Click(Sender: TObject); procedure combomateriauxChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiesph: Tsaisiesph; nrouge,nvert,nbleu:extended; tentr,tsort:treflechipolyhedre; xsp,ysp,rsp:extended; implementation procedure Tsaisiesph.BitBtn1Click(Sender: TObject); begin try rsp:=strtofloat(editrayon.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce), pchar(rsAttention), mb_ok); exit; end; end; rsp:=abs(rsp); try xsp:=strtofloat(editx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce2), pchar(rsAttention),mb_ok); exit; end; end; try ysp:=strtofloat(edity.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce3), pchar(rsAttention),mb_ok); exit; end; end; case radioentrant.ItemIndex of 0: tentr:=toujoursreflechi; 1: tentr:=jamaisreflechi; 2: tentr:=reflechisirefracte; 3: tentr:=reflechisipasrefracte; end; case radiosortant.ItemIndex of 0: tsort:=toujoursreflechi; 1: tsort:=jamaisreflechi; 2: tsort:=reflechisirefracte; 3: tsort:=reflechisipasrefracte; end; try nrouge:=strtofloat(editnrouge.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce4), pchar(rsAttention),mb_ok); exit; end; end; try nvert:=strtofloat(editnvert.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce5), pchar(rsAttention),mb_ok); exit; end; end; try nbleu:=strtofloat(editnbleu.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce6), pchar(rsAttention),mb_ok); exit; end; end; ReTaillePsphere(Listesphere,nombresphere,nombresphere+1); inc(nombresphere); if not (Listesphere[-1+nombresphere].create(xsp,ysp,rsp,nrouge,nbleu,nvert,clblack,colorgrid1.selected, tentr,tsort)) then begin ReTaillePsphere(Listesphere,nombresphere,nombresphere-1); dec(nombresphere); application.messagebox(pchar(rsPointsAberra), pchar(rsAttention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisiesph.combomateriauxChange(Sender: TObject); begin if combomateriaux.itemindex=0 then exit; editnrouge.text:=listenrouge.strings[combomateriaux.itemindex]; editnvert.text:=listenvert.strings[combomateriaux.itemindex]; editnbleu.text:=listenbleu.strings[combomateriaux.itemindex]; end; procedure Tsaisiesph.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet; CAPTION :=rsPropriTSDeCe; if decimalseparator=',' then EDITNBLEU.TEXT :=rs17 else EDITNBLEU.TEXT :=rs17b; if decimalseparator=',' then EDITNROUGE.TEXT :=rs15 else EDITNROUGE.TEXT :=rs15b; if decimalseparator=',' then EDITNVERT.TEXT :=rs16 else EDITNVERT.TEXT :=rs16b; GROUPBOX1.CAPTION :=rsRayonDeCourb; GROUPBOX2.CAPTION :=rsIndiceDeRFra; GROUPBOX3.CAPTION :=rsCoordonnEsDu; GROUPBOX4.CAPTION :=rsCouleurLCran; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; RADIOENTRANT.CAPTION :=rsRayonRFlChiS; RADIOSORTANT.CAPTION :=rsRayonRFlChiS2; STATICTEXT1.CAPTION :=rsR; STATICTEXT2.CAPTION :=rsPourLeRouge; STATICTEXT3.CAPTION :=rsPourLeVert; STATICTEXT4.CAPTION :=rsPourLeBleu; STATICTEXT5.CAPTION :=rsX; STATICTEXT6.CAPTION :=rsY; STATICTEXT7.CAPTION :=rsMatRiau; radioentrant.Items[0]:=rsToujours; radioentrant.Items[1]:=rsJamais; radioentrant.Items[2]:=rsSeulementSiL; radioentrant.Items[3]:=rsSeulementSiL6; radiosortant.Items[0]:=rsToujours; radiosortant.Items[1]:=rsJamais; radiosortant.Items[2]:=rsSeulementSiL; radiosortant.Items[3]:=rsSeulementSiL7; end; procedure Tsaisiesph.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiesphere.lrs} end. optgeo-2.21/saisiedia.lfm0000750000175000017500000004524712247333133015577 0ustar georgeskgeorgeskobject saisiediaphragme: Tsaisiediaphragme Left = 200 Height = 240 Top = 108 Width = 576 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un diaphragme' ClientHeight = 240 ClientWidth = 576 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 000000000000000080000080000000808000800000008000800080800000C0C0 C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF FFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF000FFFFF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFF0FFF0FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF000FFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF000FFFFFF F00000FFFFF000000FFFF000000FFFF00FFF00000FFFFF0000000FFFFF000000 0FFFFF000000FFFFF000000F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF000FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFF FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFF FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFF0FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF000FFFFFFFFFFFF00FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF FF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF00FFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF000FF0FFFF00FFFFF00FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0FF0FFF00FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F0FF00FFFFFFF0FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF000F0FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F00F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000F000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 97 Top = 0 Width = 192 Caption = 'Centre C' ClientHeight = 79 ClientWidth = 188 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 6 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 126 Height = 14 Top = 57 Width = 21 Caption = 'log2' ParentColor = False end object editcx: TEdit Left = 24 Height = 21 Top = 9 Width = 97 TabOrder = 0 end object editcy: TEdit Left = 22 Height = 21 Top = 50 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 129 Top = 104 Width = 160 Caption = 'Couleur du diaphragme' ClientHeight = 111 ClientWidth = 156 TabOrder = 1 object ColorGrid1: TColorBox Left = 22 Height = 22 Top = 40 Width = 75 ItemHeight = 16 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 504 Height = 185 Top = 7 Width = 65 Caption = 'OK' Default = True Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 3333333333333333333333330000333333333333333333333333F33333333333 00003333344333333333333333388F3333333333000033334224333333333333 338338F3333333330000333422224333333333333833338F3333333300003342 222224333333333383333338F3333333000034222A22224333333338F338F333 8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224 33333338F83338F338F33333000033A33333A222433333338333338F338F3333 0000333333333A222433333333333338F338F33300003333333333A222433333 333333338F338F33000033333333333A222433333333333338F338F300003333 33333333A222433333333333338F338F00003333333333333A22433333333333 3338F38F000033333333333333A223333333333333338F830000333333333333 333A333333333333333338330000333333333333333333333333333333333333 0000 } ModalResult = 1 NumGlyphs = 2 OnClick = BitBtn1Click TabOrder = 2 end object GroupBox6: TGroupBox Left = 296 Height = 49 Top = 0 Width = 201 Caption = 'Rayon intérieur' ClientHeight = 31 ClientWidth = 197 TabOrder = 3 object StaticText5: TLabel Left = 6 Height = 14 Top = 8 Width = 28 Caption = 'Rint=' ParentColor = False end object log3: TLabel Left = 134 Height = 14 Top = 8 Width = 21 Caption = 'log3' ParentColor = False end object editrint: TEdit Left = 38 Height = 21 Top = 8 Width = 89 TabOrder = 0 end end object boutonsup: TBitBtn Left = 384 Height = 33 Top = 200 Width = 185 Caption = 'Supprimer ce diaphragme' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 4 end object GroupBox2: TGroupBox Left = 296 Height = 49 Top = 48 Width = 198 Caption = 'Rayon extérieur' ClientHeight = 31 ClientWidth = 194 TabOrder = 5 object StaticText3: TLabel Left = 2 Height = 14 Top = 8 Width = 32 Caption = 'Rext=' ParentColor = False end object log4: TLabel Left = 136 Height = 14 Top = 8 Width = 21 Caption = 'log4' ParentColor = False end object editrext: TEdit Left = 38 Height = 21 Top = 8 Width = 89 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 176 Height = 73 Top = 104 Width = 201 Caption = 'Angle polaire du diaphragme' ClientHeight = 55 ClientWidth = 197 TabOrder = 6 object StaticText4: TLabel Left = 8 Height = 14 Top = 24 Width = 13 Caption = 't=' ParentColor = False end object StaticText10: TLabel Left = 144 Height = 14 Top = 24 Width = 17 Caption = 'rad' ParentColor = False end object editt: TEdit Left = 32 Height = 21 Top = 24 Width = 105 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 176 Height = 57 Top = 176 Width = 201 Caption = 'Epaisseur du trait' ClientHeight = 39 ClientWidth = 197 TabOrder = 7 object SpinEdit1: TSpinEdit Left = 40 Height = 21 Top = 8 Width = 41 MaxValue = 5 MinValue = 1 TabOrder = 0 Value = 1 end end object BitBtn2: TBitBtn Left = 384 Height = 89 Top = 104 Width = 110 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 8 end end optgeo-2.21/unit18.pas0000750000175000017500000000447312247333133014775 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit18; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, LResources,UnitScaleFont,UChaines; type { Tsaisiecouleurrayondefaut } Tsaisiecouleurrayondefaut = class(TForm) BitBtn1: TBitBtn; RadioGroup1: TRadioGroup; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiecouleurrayondefaut: Tsaisiecouleurrayondefaut; implementation { Tsaisiecouleurrayondefaut } procedure Tsaisiecouleurrayondefaut.BitBtn1Click(Sender: TObject); begin end; procedure Tsaisiecouleurrayondefaut.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; CAPTION:=rsCouleurParDF; RADIOGROUP1.CAPTION:=rsCouleur2; radiogroup1.Items[0]:=rsRouge; radiogroup1.Items[1]:=rsVert; radiogroup1.Items[2]:=rsBleu; radiogroup1.Items[3]:=rsBlanc; end; procedure Tsaisiecouleurrayondefaut.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit18.lrs} end. optgeo-2.21/saisieec.pas0000750000175000017500000001151512247333133015425 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisieec; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, Colorbox, ExtCtrls, Buttons,unit222, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisieecran } Tsaisieecran = class(TForm) BitBtn2: TBitBtn; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; GroupBox3: TGroupBox; editepaisseur: TSpinEdit; GroupBox4: TGroupBox; StaticText1: TLabel; editx1: TEdit; StaticText2: TLabel; edity1: TEdit; GroupBox5: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; BitBtn1: TBitBtn; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisieecran: Tsaisieecran; mp_epaisseurecran:integer; mp_couleurecran:tcolor; mp_x1,mp_x2,mp_y1,mp_y2:extended; implementation procedure Tsaisieecran.BitBtn1Click(Sender: TObject); begin mp_epaisseurecran:=editepaisseur.Value; mp_couleurecran:=colorgrid1.selected; try mp_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsAttention), mb_ok); exit; end; end; if ((mp_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsAttention),mb_ok); exit; end; try mp_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsAttention),mb_ok); exit; end; end; if ((mp_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsAttention),mb_ok); exit; end; try mp_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsAttention),mb_ok); exit; end; end; if ((mp_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsAttention),mb_ok); exit; end; try mp_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsAttention),mb_ok); exit; end; end; if ((mp_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsAttention),mb_ok); exit; end; ReTaillePecran(Listeecran,nombreecran,nombreecran+1); inc(nombreecran); if not (Listeecran[-1+nombreecran].create(mp_x1,mp_y1,mp_x2,mp_y2, mp_epaisseurecran, mp_couleurecran)) then begin ReTaillePecran(Listeecran,nombreecran,nombreecran-1); dec(nombreecran); application.messagebox(pchar(rsTailleDuMiro2), pchar(rsAttention),mb_ok); end else self.modalresult:=mrOk; Rafraichit; end; procedure Tsaisieecran.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK2; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet2; CAPTION :=rsAjoutDUnCran2; GROUPBOX1.CAPTION :=rsCouleurLCran3; GROUPBOX3.CAPTION :=rsEpaisseurTra; GROUPBOX4.CAPTION :=rsPoint1; GROUPBOX5.CAPTION :=rsPoint2; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; STATICTEXT1.CAPTION :=rsX; STATICTEXT2.CAPTION :=rsY; STATICTEXT3.CAPTION :=rsX; STATICTEXT4.CAPTION :=rsY; end; procedure Tsaisieecran.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisieec.lrs} end. optgeo-2.21/saisielmd.pas0000750000175000017500000001225612247333133015615 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisielmd; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisielentillemd } Tsaisielentillemd = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; gridaxe: TColorBox; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; GroupBox3: TGroupBox; GroupBox4: TGroupBox; editepaisseur: TSpinEdit; GroupBox5: TGroupBox; cocheaxe: TCheckBox; GroupBox6: TGroupBox; StaticText5: TLabel; editfocale: TEdit; GroupBox7: TGroupBox; boutonsup: TBitBtn; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisielentillemd: Tsaisielentillemd; lmd_axe:boolean; lmd_epaisseur:integer; lmd_couleur,lmd_couleuraxe:tcolor; lmd_x1,lmd_x2,lmd_y1,lmd_y2,lmd_focale:extended; implementation uses unit222; procedure Tsaisielentillemd.BitBtn1Click(Sender: TObject); begin lmd_axe:=cocheaxe.Checked; lmd_epaisseur:=editepaisseur.Value; lmd_couleur:=colorgrid1.selected; lmd_couleuraxe:=gridaxe.selected; try lmd_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; try lmd_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; try lmd_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; try lmd_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; try lmd_focale:=strtofloat(editfocale.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce24), pchar(rsattention),mb_ok); exit; end; end; if (lmd_focale=0) then begin application.messagebox(pchar(rsLaFocaleDoit), pchar(rsattention),mb_ok); exit; end; lmd_focale:=abs(lmd_focale); ReTaillePLmd(ListeLmd,nombrelmd,nombrelmd+1); inc(nombrelmd); if not (Listelmd[-1+nombrelmd].create2(lmd_x1,lmd_y1,lmd_x2,lmd_y2, lmd_focale,lmd_epaisseur, lmd_couleur,lmd_couleuraxe,lmd_axe)) then begin ReTaillePLmd(ListeLmd,nombrelmd,nombrelmd-1); dec(nombrelmd); application.messagebox(pchar(rsDonnEsAberra2), pchar(rsattention),mb_ok); end else self.ModalResult:=mrok; Rafraichit; end; procedure Tsaisielentillemd.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION :=rsOK; BITBTN2.CAPTION :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet5; CAPTION :=rsAjoutDUneLen6; COCHEAXE.CAPTION :=rsAxeOptique; GROUPBOX1.CAPTION :=rsPoint1; GROUPBOX2.CAPTION :=rsPoint2; GROUPBOX3.CAPTION :=rsCouleurDeLaL; GROUPBOX4.CAPTION :=rsEpaisseurTra4; GROUPBOX5.CAPTION :=rsAspect; GROUPBOX6.CAPTION :=rsFocaleValeur; GROUPBOX7.CAPTION :=rsCouleurDeLAx2; LOG1.CAPTION :=rsLog1; LOG2.CAPTION :=rsLog2; LOG3.CAPTION :=rsLog3; LOG4.CAPTION :=rsLog4; LOG5.CAPTION :=rsLog5; STATICTEXT1.CAPTION :=rsX; STATICTEXT2.CAPTION :=rsY; STATICTEXT3.CAPTION :=rsX; STATICTEXT4.CAPTION :=rsY; STATICTEXT5.CAPTION :=rsF; end; procedure Tsaisielentillemd.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisielmd.lrs} end. optgeo-2.21/saisieop1.pas0000750000175000017500000002104212247333133015531 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisieop1; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,unit222, Buttons, Spin, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisieop } Tsaisieop = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox9: TGroupBox; Image1: TImage; GroupBox1: TGroupBox; Spinmaxsegment: TSpinEdit; StaticText1: TLabel; StaticText18: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; radiocouleur: TRadioGroup; GroupBox3: TGroupBox; editepaisseur: TSpinEdit; GroupBox4: TGroupBox; GroupBox5: TGroupBox; StaticText5: TLabel; StaticText6: TLabel; editsx: TEdit; editsy: TEdit; GroupBox6: TGroupBox; spinnombrerayons: TSpinEdit; boutonsup: TBitBtn; GroupBox7: TGroupBox; StaticText7: TLabel; Spinmaxenfant: TSpinEdit; StaticText8: TLabel; StaticText9: TLabel; StaticText10: TLabel; StaticText11: TLabel; StaticText12: TLabel; editvav: TEdit; editvaa: TEdit; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; log6: TLabel; GroupBox8: TGroupBox; StaticText14: TLabel; StaticText13: TLabel; StaticText15: TLabel; StaticText16: TLabel; StaticText17: TLabel; editlistechemins: TEdit; cochesurfaces: TCheckBox; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisieopp: Tsaisieop; ra_couleur:tcolor; ra_epaisseur,ra_nombrerayons,ra_maxenfant,ra_maxsegment:integer; ra_x1,ra_x2,ra_y1,ra_y2,ra_sx,ra_sy:extended; ra_virtuelavant,ra_virtuelarriere:boolean; implementation procedure Tsaisieop.BitBtn1Click(Sender: TObject); begin ra_epaisseur:=editepaisseur.value; ra_maxsegment:=spinmaxsegment.value; ra_nombrerayons:=spinnombrerayons.value; ra_maxenfant:=spinmaxenfant.value; case radiocouleur.ItemIndex of 0: ra_couleur:=clred; 1: ra_couleur:=clgreen; 2: ra_couleur:=clblue; 3: ra_couleur:=clblack; end; try ra_sx:=strtofloat(editsx.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce34), pchar(rsattention),mb_ok); exit; end; end; if ((ra_sxxxmax)) then begin application.messagebox(pchar(rsValeurInacce34), pchar(rsattention),mb_ok); exit; end; try ra_sy:=strtofloat(editsy.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce35), pchar(rsattention),mb_ok); exit; end; end; if ((ra_syyymax)) then begin application.messagebox(pchar(rsValeurInacce35), pchar(rsattention),mb_ok); exit; end; try ra_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; if ((ra_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try ra_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((ra_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try ra_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try ra_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((ra_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; ReTaillePondeplane(Listeondeplane,nombreondeplane,nombreondeplane+1); inc(nombreondeplane); if not (ListeOndePlane[-1+nombreOndePlane].create(ra_nombrerayons, ra_sx,ra_sy,ra_x1,ra_y1,ra_x2,ra_y2, ra_couleur,ra_epaisseur,editvav.text,editvaa.text,ra_maxenfant, cochesurfaces.checked,editlistechemins.text,ra_maxsegment)) then begin ReTaillePondeplane(Listeondeplane,nombreondeplane,nombreondeplane-1); dec(nombreOndePlane); application.messagebox(pchar(rsValeursEntrE), pchar(rsattention),mb_ok); end else self.ModalResult:=mrok; Rafraichit; end; procedure Tsaisieop.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEOP.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEOP.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION :=rsSupprimerCet7; CAPTION :=rsSaisieDUneOn; COCHESURFACES.CAPTION // msgctxt ';TSAISIEOP.COCHESURFACES.CAPTION'; :=rsTracer; GROUPBOX1.CAPTION // msgctxt ';TSAISIEOP.GROUPBOX1.CAPTION'; :=rsPoint1; GROUPBOX2.CAPTION // msgctxt ';TSAISIEOP.GROUPBOX2.CAPTION'; :=rsPoint2; GROUPBOX3.CAPTION :=rsEpaisseurLCr; GROUPBOX4.CAPTION :=rsTracerEnPoin; GROUPBOX5.CAPTION :=rsExtrMitRayon; GROUPBOX6.CAPTION :=rsNombreDeRayo3; GROUPBOX7.CAPTION :=rsPourChaqueRa; GROUPBOX8.CAPTION :=rsTracerDesSur; GROUPBOX9.CAPTION :=rsNombreMaxDeS; LOG1.CAPTION // msgctxt ';TSAISIEOP.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEOP.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEOP.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIEOP.LOG4.CAPTION'; :=rsLog4; LOG5.CAPTION // msgctxt ';TSAISIEOP.LOG5.CAPTION'; :=rsLog5; LOG6.CAPTION // msgctxt ';TSAISIEOP.LOG6.CAPTION'; :=rsLog6; RADIOCOULEUR.CAPTION :=rsCouleurDesRa; STATICTEXT1.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT10.CAPTION :=rsListeDesSegm; STATICTEXT11.CAPTION :=rsEntreParenth; STATICTEXT12.CAPTION :=rsEtSansEspace; STATICTEXT13.CAPTION :=rsDOndeSParezC; STATICTEXT14.CAPTION :=rsDonnerLesVal; STATICTEXT15.CAPTION :=rsExemple12014; STATICTEXT16.CAPTION :=rsRemarqueSiLa; STATICTEXT17.CAPTION :=rsNePeutTreEtN; STATICTEXT18.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT18.CAPTION'; :=rsNombreMaxima35; STATICTEXT2.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT4.CAPTION'; :=rsY; STATICTEXT5.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT5.CAPTION'; :=rsX; STATICTEXT6.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT6.CAPTION'; :=rsY; STATICTEXT7.CAPTION // msgctxt ';TSAISIEOP.STATICTEXT7.CAPTION'; :=rsNombreMaxima35; STATICTEXT8.CAPTION :=rsVersLAvant; STATICTEXT9.CAPTION :=rsVersLArriRe; radiocouleur.Items[0]:=rsRouge; radiocouleur.Items[1]:=rsVert; radiocouleur.Items[2]:=rsBleu; radiocouleur.Items[3]:=rsLumiReBlanch; end; procedure Tsaisieop.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisieop1.lrs} end. optgeo-2.21/Unit10.lfm0000750000175000017500000000745312247333133014721 0ustar georgeskgeorgeskobject saisietexte2: Tsaisietexte2 Left = 200 Height = 191 Top = 108 Width = 603 BorderIcons = [] BorderStyle = bsDialog Caption = 'Saisir le texte à afficher' ClientHeight = 191 ClientWidth = 603 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object SpeedButton1: TSpeedButton Left = 304 Height = 97 Top = 88 Width = 97 Caption = 'Police' Color = clBtnFace NumGlyphs = 0 OnClick = SpeedButton1Click end object GroupBox1: TGroupBox Left = 8 Height = 65 Top = 8 Width = 392 Caption = 'Texte' ClientHeight = 47 ClientWidth = 388 TabOrder = 0 object Edit1: TEdit Left = 8 Height = 21 Top = 16 Width = 369 TabOrder = 0 end end object GroupBox2: TGroupBox Left = 8 Height = 105 Top = 80 Width = 289 Caption = 'Coordonnées du point supérieur gauche du texte' ClientHeight = 87 ClientWidth = 285 TabOrder = 1 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 198 Height = 14 Top = 24 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 200 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editx: TEdit Left = 24 Height = 21 Top = 16 Width = 161 TabOrder = 1 end object edity: TEdit Left = 24 Height = 21 Top = 56 Width = 161 TabOrder = 0 end end object boutonsup: TBitBtn Left = 419 Height = 33 Top = 152 Width = 169 Caption = 'Supprimer ce texte' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 2 end object BitBtn1: TBitBtn Left = 408 Height = 132 Top = 16 Width = 96 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 3 end object BitBtn2: TBitBtn Left = 520 Height = 128 Top = 15 Width = 68 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 4 end object FontDialog1: TFontDialog Font.Height = -11 MinFontSize = 0 MaxFontSize = 0 left = 216 top = 256 end end optgeo-2.21/saisiemscere.pas0000750000175000017500000001721512247333133016317 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiemscere; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiemiroirscere } Tsaisiemiroirscere = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; gridaxe: TColorBox; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; GroupBox3: TGroupBox; GroupBox4: TGroupBox; editepaisseur: TSpinEdit; GroupBox5: TGroupBox; cochehachures: TCheckBox; cocheaxe: TCheckBox; GroupBox6: TGroupBox; StaticText5: TLabel; GroupBox7: TGroupBox; editrayoncourbure: TEdit; GroupBox8: TGroupBox; Checkobtu: TCheckBox; boutonsup: TBitBtn; GroupBox9: TGroupBox; cochetrou: TCheckBox; editdiametretrou: TEdit; StaticText6: TLabel; StaticText7: TLabel; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; StaticText8: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiemiroirscere: Tsaisiemiroirscere; mscere_hachures,mscere_axe,mscere_aigu,mscere_trou:boolean; mscere_epaisseur:integer; mscere_couleur,mscere_couleuraxe:tcolor; mscere_x1,mscere_x2,mscere_y1,mscere_y2,mscere_rayoncourbure,mscere_diametretrou:extended; implementation uses unit222; procedure Tsaisiemiroirscere.BitBtn1Click(Sender: TObject); begin mscere_aigu:=not(checkobtu.checked); mscere_hachures:=cochehachures.Checked; mscere_axe:=cocheaxe.Checked; mscere_epaisseur:=editepaisseur.Value; mscere_couleur:=colorgrid1.selected; mscere_couleuraxe:=gridaxe.selected; mscere_trou:=cochetrou.checked; if not(mscere_trou) then mscere_diametretrou:=0 else try mscere_diametretrou:=strtofloat(editdiametretrou.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce32), pchar(rsattention),mb_ok); exit; end; end; try mscere_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; try mscere_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; try mscere_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; try mscere_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; try mscere_rayoncourbure:=strtofloat(editrayoncourbure.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce33), pchar(rsattention),mb_ok); exit; end; end; if (mscere_rayoncourbure=0) then begin application.messagebox(pchar(rsLeRayonDeCou), pchar(rsattention),mb_ok); exit; end; mscere_rayoncourbure:=abs(mscere_rayoncourbure); ReTaillePMscere(ListeMscere,nombreMscere,nombreMscere+1); inc(nombremscere); if not (Listemscere[-1+nombremscere].create2(mscere_x1,mscere_y1,mscere_x2,mscere_y2, mscere_rayoncourbure,mscere_epaisseur, mscere_couleur,mscere_couleuraxe,mscere_hachures,mscere_axe,mscere_aigu,mscere_trou,mscere_diametretrou)) then begin ReTaillePMscere(ListeMscere,nombreMscere,nombreMscere-1); dec(nombremscere); application.messagebox(pchar(rsTailleDuMiro7), pchar(rsattention),mb_ok); end else self.modalresult:=mrok; Rafraichit; end; procedure Tsaisiemiroirscere.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.BOUTONSUP.CAPTION'; :=rsSupprimerCeM; CAPTION :=rsAjoutDUnMiro10; CHECKOBTU.CAPTION :=rsObtu; COCHEAXE.CAPTION :=rsAxeDeSymTrie; COCHEHACHURES.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.COCHEHACHURES.CAPTION'; :=rsHachures; COCHETROU.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.COCHETROU.CAPTION'; :=rsTrouer; GROUPBOX1.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX1.CAPTION'; :=rsPoint1; GROUPBOX2.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX2.CAPTION'; :=rsPoint2; GROUPBOX3.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX3.CAPTION'; :=rsCouleurDuMir; GROUPBOX4.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX4.CAPTION'; :=rsEpaisseurTra7; GROUPBOX5.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX5.CAPTION'; :=rsAspect; GROUPBOX6.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX6.CAPTION'; :=rsRayonDeCourb; GROUPBOX7.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX7.CAPTION'; :=rsCouleurDeLAx5; GROUPBOX8.CAPTION :=rsAngleDOuvert; GROUPBOX9.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.GROUPBOX9.CAPTION'; :=rsTrouerLeMiro; LOG1.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.LOG4.CAPTION'; :=rsLog4; LOG5.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.LOG5.CAPTION'; :=rsLog5; STATICTEXT1.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT2.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.STATICTEXT4.CAPTION'; :=rsY; STATICTEXT5.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.STATICTEXT5.CAPTION'; :=rsR; STATICTEXT6.CAPTION :=rsDiamTreAngul; STATICTEXT7.CAPTION :=rsVuDepuisLeCe; STATICTEXT8.CAPTION // msgctxt ';TSAISIEMIROIRSCERE.STATICTEXT8.CAPTION'; :=rsRad; end; procedure Tsaisiemiroirscere.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiemscere.lrs} end. optgeo-2.21/saisieptssurfaceonde.pas0000750000175000017500000000440612247333133020064 0ustar georgeskgeorgesk { This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisieptssurfaceonde; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin,unit222, LResources,UnitScaleFont,UChaines; type { Tsaisiepointssurfaceonde } Tsaisiepointssurfaceonde = class(TForm) BitBtn1: TBitBtn; StaticText1: TLabel; spinpoints: TSpinEdit; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiepointssurfaceonde: Tsaisiepointssurfaceonde; implementation procedure Tsaisiepointssurfaceonde.BitBtn1Click(Sender: TObject); begin maxrayonsrecherchesurfacesonde:=spinpoints.value; end; procedure Tsaisiepointssurfaceonde.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; CAPTION:=rsPourLeTracDe; STATICTEXT1.CAPTION:=rsNombreDePoin; end; procedure Tsaisiepointssurfaceonde.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisieptssurfaceonde.lrs} end. optgeo-2.21/saisiemscore.pas0000750000175000017500000002125312247333133016326 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit saisiemscore; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Spin,ColorBox, LResources,LCLType,UnitScaleFont, UChaines; type { Tsaisiemiroirscore } Tsaisiemiroirscore = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; gridaxe: TColorBox; Colorgrid1: TColorBox; Image1: TImage; GroupBox1: TGroupBox; StaticText1: TLabel; StaticText2: TLabel; editx1: TEdit; edity1: TEdit; GroupBox2: TGroupBox; StaticText3: TLabel; StaticText4: TLabel; editx2: TEdit; edity2: TEdit; GroupBox3: TGroupBox; GroupBox4: TGroupBox; editepaisseur: TSpinEdit; GroupBox5: TGroupBox; cochehachures: TCheckBox; cocheaxe: TCheckBox; GroupBox6: TGroupBox; StaticText5: TLabel; GroupBox7: TGroupBox; editrayoncourbure: TEdit; GroupBox8: TGroupBox; Checkobtu: TCheckBox; boutonsup: TBitBtn; GroupBox9: TGroupBox; cochetrou: TCheckBox; editdiametretrou: TEdit; StaticText6: TLabel; StaticText7: TLabel; log1: TLabel; log2: TLabel; log3: TLabel; log4: TLabel; log5: TLabel; StaticText13: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiemiroirscore: Tsaisiemiroirscore; mscore_hachures,mscore_axe,mscore_aigu,mscore_trou:boolean; mscore_epaisseur:integer; mscore_couleur,mscore_couleuraxe:tcolor; mscore_x1,mscore_x2,mscore_y1,mscore_y2,mscore_rayoncourbure,mscore_diametretrou:extended; implementation uses unit222; procedure Tsaisiemiroirscore.BitBtn1Click(Sender: TObject); begin mscore_aigu:=not(checkobtu.checked); mscore_hachures:=cochehachures.Checked; mscore_axe:=cocheaxe.Checked; mscore_epaisseur:=editepaisseur.Value; mscore_couleur:=colorgrid1.selected; mscore_couleuraxe:=gridaxe.selected; mscore_trou:=cochetrou.checked; if not(mscore_trou) then mscore_diametretrou:=0 else try mscore_diametretrou:=strtofloat(editdiametretrou.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce32), pchar(rsattention),mb_ok); exit; end; end; try mscore_x1:=strtofloat(editx1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; end; if ((mscore_x1xxmax)) then begin application.messagebox(pchar(rsValeurInacce13), pchar(rsattention),mb_ok); exit; end; try mscore_x2:=strtofloat(editx2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; end; if ((mscore_x2xxmax)) then begin application.messagebox(pchar(rsValeurInacce14), pchar(rsattention),mb_ok); exit; end; try mscore_y1:=strtofloat(edity1.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; end; if ((mscore_y1yymax)) then begin application.messagebox(pchar(rsValeurInacce15), pchar(rsattention),mb_ok); exit; end; try mscore_y2:=strtofloat(edity2.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; end; if ((mscore_y2yymax)) then begin application.messagebox(pchar(rsValeurInacce16), pchar(rsattention),mb_ok); exit; end; try mscore_rayoncourbure:=strtofloat(editrayoncourbure.text); except on EConvertError do begin application.messagebox(pchar(rsValeurInacce33), pchar(rsattention),mb_ok); exit; end; end; if (mscore_rayoncourbure=0) then begin application.messagebox(pchar(rsLeRayonDeCou), pchar(rsattention),mb_ok); exit; end; mscore_rayoncourbure:=abs(mscore_rayoncourbure); if sqrt(sqr(mscore_x2-mscore_x1)+sqr(mscore_y2-mscore_y1))> 2*mscore_rayoncourbure then begin application.messagebox(pchar(rsLaDistanceEn), pchar(rsattention),mb_ok); exit; end; ReTaillePMscore(ListeMscore,nombreMscore,nombreMscore+1); inc(nombremscore); if not (Listemscore[-1+nombremscore].create2(mscore_x1,mscore_y1,mscore_x2,mscore_y2, mscore_rayoncourbure,mscore_epaisseur, mscore_couleur,mscore_couleuraxe,mscore_hachures,mscore_axe,mscore_aigu,mscore_trou,mscore_diametretrou)) then begin ReTaillePMscore(ListeMscore,nombreMscore,nombreMscore-1); dec(nombremscore); application.messagebox(pchar(rsTailleDuMiro8), pchar(rsattention),mb_ok); end else self.modalresult:=mrok; Rafraichit; end; procedure Tsaisiemiroirscore.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.BITBTN1.CAPTION'; :=rsOK; BITBTN2.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.BITBTN2.CAPTION'; :=rsAnnuler; BOUTONSUP.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.BOUTONSUP.CAPTION'; :=rsSupprimerCeM; CAPTION :=rsAjoutDUnMiro12; CHECKOBTU.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.CHECKOBTU.CAPTION'; :=rsObtu; COCHEAXE.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.COCHEAXE.CAPTION'; :=rsAxeDeSymTrie; COCHEHACHURES.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.COCHEHACHURES.CAPTION'; :=rsHachures; COCHETROU.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.COCHETROU.CAPTION'; :=rsTrouer; GROUPBOX1.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX1.CAPTION'; :=rsPoint1; GROUPBOX2.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX2.CAPTION'; :=rsPoint2; GROUPBOX3.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX3.CAPTION'; :=rsCouleurDuMir; GROUPBOX4.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX4.CAPTION'; :=rsEpaisseurTra9; GROUPBOX5.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX5.CAPTION'; :=rsAspect; GROUPBOX6.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX6.CAPTION'; :=rsRayonDeCourb; GROUPBOX7.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX7.CAPTION'; :=rsCouleurDeLAx7; GROUPBOX8.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX8.CAPTION'; :=rsAngleDOuvert2; GROUPBOX9.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.GROUPBOX9.CAPTION'; :=rsTrouerLeMiro; LOG1.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.LOG1.CAPTION'; :=rsLog1; LOG2.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.LOG2.CAPTION'; :=rsLog2; LOG3.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.LOG3.CAPTION'; :=rsLog3; LOG4.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.LOG4.CAPTION'; :=rsLog4; LOG5.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.LOG5.CAPTION'; :=rsLog5; STATICTEXT1.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT1.CAPTION'; :=rsX; STATICTEXT13.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT13.CAPTION'; :=rsRad; STATICTEXT2.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT2.CAPTION'; :=rsY; STATICTEXT3.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT3.CAPTION'; :=rsX; STATICTEXT4.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT4.CAPTION'; :=rsY; STATICTEXT5.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT5.CAPTION'; :=rsR; STATICTEXT6.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT6.CAPTION'; :=rsDiamTreAngul; STATICTEXT7.CAPTION // msgctxt ';TSAISIEMIROIRSCORE.STATICTEXT7.CAPTION'; :=rsVuDepuisLeCe; end; procedure Tsaisiemiroirscore.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i saisiemscore.lrs} end. optgeo-2.21/Unit8.lfm0000750000175000017500000000231512247333133014640 0ustar georgeskgeorgeskobject saisienombresommet: Tsaisienombresommet Left = 200 Height = 104 Top = 103 Width = 317 BorderIcons = [] BorderStyle = bsDialog Caption = 'Nombre de sommets' ClientHeight = 104 ClientWidth = 317 Color = clAqua Font.Height = -11 OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.30' object GroupBox1: TGroupBox Left = 8 Height = 81 Top = 8 Width = 177 Caption = 'Sommets de ce polyhèdre' ClientHeight = 63 ClientWidth = 173 TabOrder = 0 object StaticText1: TLabel Left = 16 Height = 14 Top = 31 Width = 42 Caption = 'Nombre:' ParentColor = False end object SpinEdit1: TSpinEdit Left = 70 Height = 21 Top = 24 Width = 41 AutoSize = False Font.Height = -11 Font.Style = [fsBold] MaxValue = 50 MinValue = 2 ParentFont = False TabOrder = 0 Value = 4 end end object BitBtn1: TBitBtn Left = 200 Height = 73 Top = 16 Width = 99 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 1 end end optgeo-2.21/unit5.pas0000750000175000017500000000426212247333133014705 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit5; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin, LResources,UnitScaleFont,UChaines; type { Tsaisienombrerayons } Tsaisienombrerayons = class(TForm) BitBtn1: TBitBtn; StaticText1: TLabel; SpinEdit1: TSpinEdit; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisienombrerayons: Tsaisienombrerayons; nbsaisie:integer; implementation procedure Tsaisienombrerayons.BitBtn1Click(Sender: TObject); begin nbsaisie:=spinedit1.value; end; procedure Tsaisienombrerayons.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; CAPTION:=rsNombreDeRayo3; STATICTEXT1.CAPTION:=rsNombreDeRayo4; end; procedure Tsaisienombrerayons.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit5.lrs} end. optgeo-2.21/unit15.pas0000750000175000017500000000430312247333133014762 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit Unit15; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, LResources,UnitScaleFont,UChaines; type { Tsaisiejoindre } Tsaisiejoindre = class(TForm) BitBtn1: TBitBtn; RadioGroup1: TRadioGroup; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiejoindre: Tsaisiejoindre; rere:boolean; implementation procedure Tsaisiejoindre.BitBtn1Click(Sender: TObject); begin rere:=radiogroup1.ItemIndex=1; end; procedure Tsaisiejoindre.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION:=rsOK; CAPTION:=rsRelierLesPoi2; RADIOGROUP1.CAPTION:=rsJoindreLesPo; radiogroup1.Items[0]:=rsUnArcDeCercl; radiogroup1.Items[1]:=rsUnSegmentDeD; end; procedure Tsaisiejoindre.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i Unit15.lrs} end. optgeo-2.21/curseurs.lrs0000750000175000017500000011204212247333133015525 0ustar georgeskgeorgeskLazarusResources.Add('ancre','CUR',[ #0#0#2#0#1#0' '#2#0#15#0#1#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#127#128#1#255'|'#0#0#127'p'#28#254#30#0#252#255 +#134#7#252#255#226#31#252#255#240#7#252#255#248#255#252#255#254#255#252#255 +#224#255#252#255#255#255#252#255#255#255#252#255#255#255#252#255#255#255#252 +#255#255#255#252#255#255#255#252#255#255#255#252#255#255#255#252#255#255#255 +#252#255#255#255#252#255#255#255#252#255#255#255#252#255#255#255#252#255#255 +#255#252#255#255#255#252#255#255#255#252#255#255#255#252#255#255#255#252#255 +#255#255#248#127#255#255#247#191#255#255#247#191#255#255#248#127#255 ]); LazarusResources.Add('centre','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#252'sh'#231#251#173'j'#219#247#175'j'#223#247#225 +'j'#195#247#237'*['#247#179'P'#167#251#191#251#255#252#127#251#255#255#255 +#255#255#255#255#255#255#255#255#243#255#255#255#227#255#255#255#199#255#255 +#255#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255#248#255#255 +#255#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255#255#31#255 +#255#254'?'#255#255#252#127#255#255'x'#255#255#255'q'#255#255#255'c'#255#255 +#255'G'#255#255#255#15#255#255#255#31#255#255#255#1#255#255#255 ]); LazarusResources.Add('centre1','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#231'*3'#223#219 +#234#175#223#222'*'#163#223#222#170#171#223#219'`'#23#159#231#254#255#223#255 +#255#255#255#255#255#255#255#255#255#243#255#255#255#227#255#255#255#199#255 +#255#255#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255#248#255 +#255#255#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255#255#31 +#255#255#254'?'#255#255#252#127#255#255'x'#255#255#255'q'#255#255#255'c'#255 +#255#255'G'#255#255#255#15#255#255#255#31#255#255#255#1#255#255#255 ]); LazarusResources.Add('centre2','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#206'Tg'#31#181#213 +'_'#127#188'UG'#191#189'UW'#223#182#192'/_'#207#253#255#191#255#255#255#255 +#255#255#255#255#255#255#243#255#255#255#227#255#255#255#199#255#255#255#143 +#255#255#255#31#255#255#254'?'#255#255#252#127#255#255#248#255#255#255#241 +#255#255#255#227#255#255#255#199#255#255#255#143#255#255#255#31#255#255#254 +'?'#255#255#252#127#255#255'x'#255#255#255'q'#255#255#255'c'#255#255#255'G' +#255#255#255#15#255#255#255#31#255#255#255#1#255#255#255 ]); LazarusResources.Add('centreG','CUR',[ #0#0#2#0#1#0' '#0#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 +#254#31#255#255#253#239#255#255#251#247#255#255#251#247#255#255#251#135#255 +#255#251#255#255#255#251#255#255#255#251#247#243#255#253#239#227#255#254#31 +#199#255#255#255#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255 +#248#255#255#255#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255 +#255#31#255#255#254'?'#255#255#252#127#255#255'x'#255#255#255'q'#255#255#255 +'c'#255#255#255'G'#255#255#255#15#255#255#255#31#255#255#255#1#255#255#255 ]); LazarusResources.Add('curseur30','CUR',[ #0#0#2#0#1#0' '#2#0#7#0#1#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#254#0#0#0#254#0#0#1#254#0#0#1#255#0#0#3#255#0#0#3#255#128#0#7 +#255#128#0#7#255#192#0#13#255#192#0#29#255#192#0#25#254#192#0#1#182#192#0#1 +#182#192#0#1#182#0#0#1#176#0#0#1#128#0#0#1#128#0#0#1#128#0#0#1#128#0#0#0#0#0 +#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#1#255 +#255#254#0#255#255#254#0#255#255#254#0#255#255#254#0#255#255#252#0#255#255 +#252#0#127#255#248#0#127#255#248#0'?'#255#240#0'?'#255#240#0#31#255#224#0#31 +#255#192#0#31#255#192#0#31#255#196#0#31#255#252#0#31#255#252#1'?'#255#252#9 +#255#255#252#15#255#255#252'?'#255#255#252'?'#255#255#252'?'#255#255#254#127 +#255#255#255#255#255#255 ]); LazarusResources.Add('curseur31','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#10#168#0#0#0#0#0#0#13'X'#0#0#14#184#0#0#7'p'#0#0#3'`'#0#0#1 +#192#0#0#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#2#160#0#0#5'P'#0#0#15#168#0#0#15 +#248#0#0#0#0#0#0#10#168#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255 +#255#239#255#255#231#24#255#255#218#155#255#255#246#219#255#255#238#219#255 +#255#218#219#255#255#231';'#255#255#255#255#255#255#255#255#255#255#192#1#255 +#255#192#1#255#255#224#3#255#255#224#3#255#255#224#3#255#255#240#7#255#255 +#248#15#255#255#252#31#255#255#254'?'#255#255#254'?'#255#255#254'?'#255#255 +#252#31#255#255#248#15#255#255#240#7#255#255#224#3#255#255#224#3#255#255#224 +#3#255#255#192#1#255#255#192#1#255#255#255#255#255#255#255#255#255#255#255 +#255#255 ]); LazarusResources.Add('curseur32','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#31#240#0#0#0'0'#0#0#255#176#0#0#1#176#0#7#253#176 +#0#7#253#176#0#7#253#176#0#7#253#176#0#7#253#176#0#7'='#176#0#6#221#176#0#6 +#221#128#0#5#189#128#0#5#188#0#0#3'|'#0#0'C'#0#0#0'f'#0#0#0'v'#0#0#0'~'#0#0#0 +#127#192#0#0#127#128#0#0#127#0#0#0'~'#0#0#0'|'#0#0#0'x'#0#0#0'p'#0#0#0'`'#0#0 +#0'@'#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#192#7#255#255#192#7 +#255#254#0#7#255#254#0#7#255#240#0#7#255#240#0#7#255#240#0#7#255#240#0#7#255 +#240#0#7#255#240#0#7#255#240#0#7#255#240#0#7#255#240#0#7#255#240#0'?'#255'p' +#0'?'#255'0'#1#255#255#16#1#255#255#0#255#255#255#0#255#255#255#0#15#255#255 +#0#31#255#255#0'?'#255#255#0#127#255#255#0#255#255#255#1#255#255#255#3#255 +#255#255#7#255#255#255#15#255#255#255#31#255#255#255'?'#255#255#255 ]); LazarusResources.Add('curseur33','CUR',[ #0#0#2#0#1#0' '#2#0#14#0#12#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#255#255#255 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#2#0#0#0#5#0#0#0#8#128#0#0#16'@'#0#0' '#0#0'='#224#0#0#5#0#0#3#255 +#254#0#2#0#2#0#3#255#254#0#2#0#2#0#3#255#254#0#0#5#0#0#0'='#224#0#0' '#0#0 +#16'@'#0#0#8#128#0#0#5#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#253 +#255#255#255#248#255#255#255#240#127#255#255#224'?'#255#255#192#31#255#255 +#192#31#255#255#248#255#255#252#0#1#255#252#0#1#255#252#0#1#255#252#0#1#255 +#252#0#1#255#255#248#255#255#255#192#31#255#255#192#31#255#255#224'?'#255#255 +#240#127#255#255#248#255#255#255#253#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255 ]); LazarusResources.Add('curseur34','CUR',[ #0#0#2#0#1#0' '#2#0#16#0#14#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#3#224#0#0#2#160#0#0#2#160#0#0#2#160#0#0#26#172#0#0'*'#170#0#0'J'#169#0#0#142 +#184#128#1#2#160'@'#0#142#184#128#0'J'#169#0#0'*'#170#0#0#26#172#0#0#2#160#0 +#0#2#160#0#0#2#160#0#0#3#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#252#31#255#255#252#31#255#255#252#31#255#255#252#31#255#255#228#19#255#255 +#196#17#255#255#132#16#255#255#0#0#127#254#0#0'?'#255#0#0#127#255#132#16#255 +#255#196#17#255#255#228#19#255#255#252#31#255#255#252#31#255#255#252#31#255 +#255#252#31#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255 ]); LazarusResources.Add('curseur35','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#7#252#0#0#7#252#0#0 +#7#252#0#0#7#252#0#0#7#252#0#0#7'<'#0#0#6#220#0#0#6#220#0#0#5#188#0#0#5#188#0 +#0#3'|'#0#0'C'#0#0#0'f'#0#0#0'v'#0#0#0'~'#0#0#0#127#192#0#0#127#128#0#0#127#0 +#0#0'~'#0#0#0'|'#0#0#0'x'#0#0#0'p'#0#0#0'`'#0#0#0'@'#0#0#0#0#0#0#0#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#240#1#255#255#240#1#255#255#240#1#255#255#240#1#255#255#240#1 +#255#255#240#1#255#255#240#1#255#255#240#1#255#255#240#1#255#255#240#1#255 +#255'p'#1#255#255'0'#1#255#255#16#1#255#255#0#255#255#255#0#255#255#255#0#15 +#255#255#0#31#255#255#0'?'#255#255#0#127#255#255#0#255#255#255#1#255#255#255 +#3#255#255#255#7#255#255#255#15#255#255#255#31#255#255#255'?'#255#255#255 ]); LazarusResources.Add('curseur36','CUR',[ #0#0#2#0#1#0' '#2#0#2#0#2#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#224#0#0#12'8'#0#0#24#12#0#0'8' +#6#0#0','#2#0#0'F'#3#0#0'C'#1#0#0'A'#129#0#0'@'#193#0#0'@a'#0#0'`1'#0#0' '#26 +#0#0'0'#14#0#0#24#12#0#0#14#24#0#0#3#224#0#0#0#0#0#0#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#252#31#255#255#240#7#255#255 +#224#3#255#255#195#193#255#255#131#240#255#255#129#248#255#255#16#248#127#255 +#24'|'#127#255#28'<'#127#255#30#28#127#255#31#12#127#255#15#132#127#255#143 +#192#255#255#135#224#255#255#193#225#255#255#224#3#255#255#240#7#255#255#252 +#31#255#255 ]); LazarusResources.Add('debut','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#199#154#234#127#219'iR'#255#221'{Z'#255#221#11'Z' +#255#221'iZ'#255#221#154#216#127#219#251#254#255#199#187#254#255#255#223#225 +#255#255#255#193#255#255#255#129#255#255#255#1#255#255#254#1#255#255#252#3 +#255#255#248#7#255#255#240#15#255#255#224#31#255#255#192'?'#255#255#128#127 +#255#255#0#255#255'~'#1#255#255'|'#3#255#255'x'#7#255#255'p'#15#255#255'`'#31 +#255#255'@?'#255#255#0#127#255#255#0#255#255#255#1#255#255#255#3#255#255#255 +#7#255#255#255#0#15#255#255 ]); LazarusResources.Add('depcentre','CUR',[ #0#0#2#0#1#0' '#2#0#15#0#11#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#248#230#209#207#247'Z'#213#183 +#239'^'#213#191#239#194#213#135#239#218'T'#183#239'f'#161'O'#247#127#247#255 +#248#255#247#255#255#255#248#31#249#255#255#31#248#255#254#31#248#127#252'_' +#250'?'#248#255#255#31#241#255#255#143#227#255#255#199#199#255#255#227#143 +#255#255#241#31#255#255#248'?'#255#255#252#127#255#255#248'?'#255#255#241#31 +#255#255#227#143#255#255#199#199#255#255#143#227#255#253#31#241#127#252'?' +#248#127#252#127#252#127#252'?'#240#127#255#255#255#255#255#255#255#255 ]); LazarusResources.Add('depfoyer','CUR',[ #0#0#2#0#1#0' '#2#0#15#0#11#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#127#255#255#255#191#255#251#231#188#223 +#251#219#187'_'#251#219'['#223#251#219'X_'#248#219'[O'#251#230#236#215#251 +#255#255#255#248#255#248#31#249#255#255#31#248#255#254#31#248#127#252'_'#250 +'?'#248#255#255#31#241#255#255#143#227#255#255#199#199#255#255#227#143#255 +#255#241#31#255#255#248'?'#255#255#252#127#255#255#248'?'#255#255#241#31#255 +#255#227#143#255#255#199#199#255#253#143#227#255#252#31#241#127#252'?'#248 +#127#252#127#252#127#252'?'#240#127#255#255#255#255#255#255#255#255 ]); LazarusResources.Add('depla','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#191#255#255#255#191#255 +#240#241#166#223#247'n'#154#255#247#175#186#255#247#160#186#255#247#174#154 +#255#247#177#166#255#247#127#254#255#240#251#254#255#255#253#255#255#255#255 +#255#255#255#254#31#255#255#252#31#255#255#248#31#255#255#240'?'#255#255#224 +#127#255#255#192#255#255#255#129#255#255#255#3#255#255#254#7#255#255#252#15 +#255#255#248#31#255#255#248'?'#255#255#0#127#255#255'<'#255#255#255'U'#255 +#255#255'm'#255#255#255'U'#255#255#255'9'#255#255#255#1#255#255#255 ]); LazarusResources.Add('deplacement','CUR',[ #0#0#2#0#1#0' '#2#0#15#0#15#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#252#255#192#31#248#127#248#15#244#191#240'G' +#236#223#226#163#252#255#198#177#252#255#142#184#252#255#30#252'|'#254'?'#254 +'<'#252#127#255#28#248#255#255#140#241#255#255#196#227#255#255#224#199#255 +#239#240#143#247#223#248#31#251#191#248'?'#253#0#0#0#0#0#0#0#0#191#240#15#253 +#223#224#199#251#239#196#227#247#255#140#241#255#255#28#248#255#254'<'#252 +#127#252'|'#254'?'#248#252#255#31'q'#252#255#143'c'#252#255#198'G'#236#223 +#226#15#244#191#240#31#248#127#248#7#252#255#224 ]); LazarusResources.Add('depsommet','CUR',[ #0#0#2#0#1#0' '#2#0#15#0#11#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#199'6'#214#219#186#214#214#223#186#214#214#223 +#250#214#214#223#198#210'R_'#191'5'#149#159#187#255#255#255#199#255#255#255 +#255#255#255#255#255#255#248#31#249#255#255#31#248#255#254#31#248#127#252'_' +#250'?'#248#255#255#31#241#255#255#143#227#255#255#199#199#255#255#227#143 +#255#255#241#31#255#255#248'?'#255#255#252#127#255#255#248'?'#255#255#241#31 +#255#255#227#143#255#255#199#199#255#255#143#227#255#253#31#241#127#252'?' +#248#127#252#127#252#127#252'?'#240#127#255#255#255#255#255#255#255#255 ]); LazarusResources.Add('direction','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#29's'#152#205'mmj'#181'uoz'#181'u' +'az'#181'u-j'#180'uS'#144#205'o'#255#251#255#29#255#250#255#255#255#255#255 +#255#255#255#255#255#255#231#255#255#255#199#255#255#255#143#255#255#255#31 +#255#255#254'?'#255#255#252#127#255#255#248#255#255#255#241#255#255#255#227 +#255#255#255#199#255#255#255#143#255#255#255#31#255#255#254'?'#255#255#252 +#127#255#255'x'#255#255#255'q'#255#255#255'c'#255#255#255'G'#255#255#255#15 +#255#255#255#31#255#255#255#1#255#255#255 ]); LazarusResources.Add('dupliquer','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#239#254#255#255#239#254#255#30 +#171'Z'#214'm%T'#167'u'#173'V'#183'u'#173'V'#183'u'#165'T'#183'u'#171'Z'#183 +'o'#255#127#255#31#255'C'#255#255#255#195#255#255#255#135#255#255#255#15#255 +#255#254#31#255#255#252'?'#255#255#248#127#255#255#240#255#255#255#225#255 +#255#255#195#255#255#255#135#255#255#255#15#255#255#254#31#255#255#252'?'#255 +#255'x'#127#255#255'p'#255#255#255'a'#255#255#255'C'#255#255#255#7#255#255 +#255#15#255#255#255#31#255#255#255#0#255#255#255 ]); LazarusResources.Add('fin','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#253#235#127#255#253#235#127#255#253#235#127#255 +#253#235#127#255#252'i'#127#255#253#234#255#255#253#255#255#255#252'/'#240 +#127#255#255#224#127#255#255#192#127#255#255#128#127#255#255#0#255#255#254#1 +#255#255#252#3#255#255#248#7#255#255#240#15#255#255#224#31#255#255#192'?'#255 +#255#128#127#255#255#0#255#255'~'#1#255#255'|'#3#255#255'x'#7#255#255'p'#15 +#255#255'`'#31#255#255'@?'#255#255#0#127#255#255#0#255#255#255#1#255#255#255 +#3#255#255#255#7#255#255#255#0#15#255#255 ]); LazarusResources.Add('foyer','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#223#255#253#243#222'o'#253#237#221#175#253 +#237#173#239#253#237#172'/'#252'm'#173#167#253#243'vk'#253#255#255#255#252'?' +#255#255#255#255#255#255#255#255#243#255#255#255#227#255#255#255#199#255#255 +#255#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255#248#255#255 +#255#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255#255#31#255 +#255#254'?'#255#255'|'#127#255#255'x'#255#255#255'q'#255#255#255'c'#255#255 +#255'G'#255#255#255#15#255#255#255#31#255#255#255#0#255#255#255 ]); LazarusResources.Add('groupe','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#239#255#255#191#174'<3'#191#173#219#183#223'm' +#219#183#192'm'#219#183#238#237#219#183#238#237#219#183#245#238';'#163#245 +#255#255#247#245#255#255#247#251#239#255#255#255#255#255#255#255#255#255#255 +#255#254#31#255#255#252#31#255#255#248#31#255#255#240'?'#255#255#224#127#255 +#255#192#255#255#255#129#255#255#255#3#255#255#254#7#255#255#252#15#255#255 +#248#31#255#255#248'?'#255#255#0#127#255#255'8'#255#255#255'U'#255#255#255'm' +#255#255#255'U'#255#255#255'9'#255#255#255#1#255#255#255 ]); LazarusResources.Add('info','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255''';'#230#179'Z'#223#218#173'_'#191#222#175'C'#127#222#175'Z' +#223#218#173'&;'#230#179#127#255#254#255'o'#255#254#191#247#253#255#255#255 +#253#255#255'}'#205'm'#159'}'#180#173'o}'#181#173'y'#13#181#173#15't'#180#165 +'ouMi'#159'w'#255#255#255#15#31#253#191#254#31#255#223#252'?'#255#255#248#127 +#255#255'p'#255#255#255'a'#255#255#255'C'#255#255#255#7#255#255#255#15#255 +#255#255#31#255#255#255#1#255#255#255 ]); LazarusResources.Add('marteau','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#31#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#31#255#255#0#31#255#255#0#31#255#255#0#31#255 +#255#0#31#255#255#0#31#255#255#0#31#255#255#0#31#255#255#0#31#255#255#0#31 +#255#255#0#31#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#31#255#255#0#31#255#255#0#31#255#255#0#31#255#255#0#31#255#255#0#31#255 +#255#0'?'#255#255#0#127#255#255#0#255#255#255#1#255#255#255#3#255#255#255#7 +#255#255#255#15#255#255#255#31#255#255#255 ]); LazarusResources.Add('point1','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#223#154#211#239#223'j'#215#239#223 +'j'#215#239#195'j'#215#239#221'jW'#239#221#154#163#175#221#255#247#207#195 +#251#247#239#255#255#255#255#255#255#227#255#255#255#195#255#255#255#135#255 +#255#255#15#255#255#254#31#255#255#252'?'#255#255#248#127#255#255#240#255#255 +#255#225#255#255#255#195#255#255#255#135#255#255#255#15#255#255#254#31#255 +#255#252'?'#255#255'x'#127#255#255'p'#255#255#255'a'#255#255#255'C'#255#255 +#255#7#255#255#255#15#255#255#255#31#255#255#255#0#255#255#255 ]); LazarusResources.Add('point2','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#223#154#211#135#223'j'#215#191#223 +'j'#215#223#195'j'#215#239#221'jW'#247#221#154#163#247#221#255#247#183#195 +#251#247#207#255#255#255#255#255#255#227#255#255#255#195#255#255#255#135#255 +#255#255#15#255#255#254#31#255#255#252'?'#255#255#248#127#255#255#240#255#255 +#255#225#255#255#255#195#255#255#255#135#255#255#255#15#255#255#254#31#255 +#255#252'?'#255#255'x'#127#255#255'p'#255#255#255'a'#255#255#255'C'#255#255 +#255#7#255#255#255#15#255#255#255#31#255#255#255#0#255#255#255 ]); LazarusResources.Add('prop','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#223#255#255#255#223#255 +#247#220#215#127#247#219'K'#255#247#219'['#255#240#219'['#255#247'KK'#255#247 +'T'#215#255#247#127#255#255#240#255#255#255#255#255#255#255#255#255#255#255 +#255#254#31#255#255#252#31#255#255#248#31#255#255#240'?'#255#255#224#127#255 +#255#192#255#255#255#129#255#255#255#3#255#255#254#7#255#255#252#15#255#255 +#248#31#255#255#248'?'#255#255#0#127#255#255'8'#255#255#255'U'#255#255#255'm' +#255#255#255'U'#255#255#255'9'#255#255#255#1#255#255#255 ]); LazarusResources.Add('rotation','CUR',[ #0#0#2#0#1#0' '#2#0#16#0#8#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#189'2#6'#186#213#170#214#182#213#170#214#174#214 +'*'#214#134#215#170#210#187' C5'#187#247#239#255#135#247#235#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#192 +#1#255#223#0#0'}'#220#31#252#29#216#127#255#13#225#255#255#195#227#255#255 +#227#224#127#255#243#255#255#255#3#255#255#255#255#255#254#191#255#231#255 +#127#255#193#254#191#227#198#127#255#145#179#255#255'e'#177#255#255#198#248 +#127#255#15#252#31#252#31#255#0#0#127#255#192#1#255 ]); LazarusResources.Add('sommet','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#142'm'#173#183'u' +#173#173#191'u'#173#173#191#245#173#173#191#141#164#164#191'~k+?w'#255#255 +#255#143#255#255#255#255#255#243#255#255#255#227#255#255#255#199#255#255#255 +#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255#248#255#255#255 +#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255#255#31#255#255 +#254'?'#255#255#252#127#255#255#248#255#255#255'q'#255#255#255'c'#255#255#255 +'G'#255#255#255#15#255#255#255#31#255#255#255#3#255#255#255 ]); LazarusResources.Add('sommet1','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#157#170#172#157'j' +#170#171#189#234#170#168#189#154#170#170#189'}'#130#13#25#143#255#255#189#255 +#255#255#255#255#255#255#255#255#255#243#255#255#255#227#255#255#255#199#255 +#255#255#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255#248#255 +#255#255#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255#255#31 +#255#255#254'?'#255#255#252#127#255#255#248#255#255#255'q'#255#255#255'c'#255 +#255#255'G'#255#255#255#15#255#255#255#31#255#255#255#3#255#255#255 ]); LazarusResources.Add('sommet2','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#157#170#172#152'j' +#170#171#191#234#170#168#189#154#170#170#190'}'#130#13#26#143#255#255#189#255 +#255#255#255#255#255#255#255#255#255#243#255#255#255#227#255#255#255#199#255 +#255#255#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255#248#255 +#255#255#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255#255#31 +#255#255#254'?'#255#255#252#127#255#255#248#255#255#255'q'#255#255#255'c'#255 +#255#255'G'#255#255#255#15#255#255#255#31#255#255#255#3#255#255#255 ]); LazarusResources.Add('source','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 +#199':'#185#207#186#212#182#183#186#214#183#191#250#214#183#135#198#214#150 +#183#191'6'#169#207#187#255#255#255#199#255#243#255#255#255#227#255#255#255 +#199#255#255#255#143#255#255#255#31#255#255#254'?'#255#255#252#127#255#255 +#248#255#255#255#241#255#255#255#227#255#255#255#199#255#255#255#143#255#255 +#255#31#255#255#254'?'#255#255#252#127#255#255#248#255#255#255'q'#255#255#255 +'c'#255#255#255'G'#255#255#255#15#255#255#255#31#255#255#255#3#255#255#255 ]); LazarusResources.Add('suivant','CUR',[ #0#0#2#0#1#0' '#2#0#0#0#0#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 +#185#129'QY'#187'e%['#139#213'!['#177'5#'#17#179'o'#255#251#139#31#127#251 +#255#255#255#255#255#255#227#255#255#255#195#255#255#255#135#255#255#255#15 +#255#255#254#31#255#255#252'?'#255#255#248#127#255#255#240#255#255#255#225 +#255#255#255#195#255#255#255#135#255#255#255#15#255#255#254#31#255#255#252'?' +#255#255'x'#127#255#255'p'#255#255#255'a'#255#255#255'C'#255#255#255#7#255 +#255#255#15#255#255#255#31#255#255#255#0#255#255#255 ]); LazarusResources.Add('taille','CUR',[ #0#0#2#0#1#0' '#2#0#16#0#11#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#251#197'Y'#255#251#181'V'#255#251#181'W'#255#251 +#197'P'#255#251#245'V'#255#251#141'Y'#255#251#255'_'#255#224#253'_'#255#255 +#255#255#255#255#255#255#255#252#15#248#31#225#255#255#199#224#255#255#135 +#232'?'#254#7#244#31#252#23#247#15#248'w'#247#131#224#247#247#193#193#255#255 +#240#135#255#255#248#15#255#255#252#31#255#255#248#15#255#255#224#135#255#255 +#193#195#255#255#135#224#247#190#15#240'w'#188#31#252'7'#184#127#254#7#160 +#255#255#7#129#255#255#199#135#255#254#7#192#255#255#255 ]); LazarusResources.Add('texte','CUR',[ #0#0#2#0#1#0' '#2#0#2#0#2#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#207#255#255 +#255#207#255#255#255#207#255#255#255#207#255#255#255#207#255#255#255#207#255 +#255#255#207#255#255#255#207#255#255#255#203#228#231'/'#203#227'Z'#207#205 +#215'^'#239#204#23'^'#239#205#215'^'#239#206#179'Z'#207#206#180#231'/'#206 +#183#255#239#207'w'#255#239#207#255#255#255#207#255#255#255#207#255#255#255 +#207#255#255#255#192#0#0#0#192#0#0#0#255#255#255#255#255#255#255#255 ]); LazarusResources.Add('translation','CUR',[ #0#0#2#0#1#0' '#2#0#15#0#11#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1 +#0#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 +#221#197#179'c'#221#181#173'['#221#181#187'['#221#197#183'c'#220#244#173'{' +#221#13'cG'#223#255#255#127#7#254#255#127#255#252#127#255#255#248'?'#255#255 +#244'_'#255#255#252#127#255#255#252#127#255#255#252#127#255#255'|~'#255#254 +#252#127#127#252#3#128'?'#248#3#128#31#252#3#128'?'#254#252#127#127#255'|~' +#255#255#252#127#255#255#252#127#255#255#252#127#255#255#252#127#255#255#244 +'_'#255#255#248'?'#255#255#252#127#255#255#254#255#255 ]); LazarusResources.Add('viseur','CUR',[ #0#0#2#0#1#0' '#2#0#3#0#3#0'0'#1#0#0#22#0#0#0'('#0#0#0' '#0#0#0'@'#0#0#0#1#0 +#1#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255'm'#157'U'#155'UjUkUkU{UkU'#11'UjUi9'#157'A'#154'9'#255'w' +#255'}'#255'Q'#255#255#255#255#255#255#254#31#255#255#252#31#255#255#248#31 +#255#255#240'?'#255#255#224#127#255#255#192#255#255#255#129#255#255#255#3#255 +#255#254#7#255#255#252#15#255#255#248#31#255#255#248'?'#255#255#0#127#255#255 +'8'#255#255#255'U'#255#255#255'm'#255#255#255'U'#255#255#255'9'#255#255#255#1 +#255#255#255 ]); optgeo-2.21/saisieoe.lfm0000750000175000017500000004135112247333133015435 0ustar georgeskgeorgeskobject saisieoeil: Tsaisieoeil Left = 247 Height = 240 Top = 160 Width = 457 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un oeil' ClientHeight = 240 ClientWidth = 457 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000000000 000000000000000080000080000000808000800000008000800080800000C0C0 C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 000000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF000000000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF00000000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000F FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF000000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 0F00000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000FFF000000FFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF00000000000FFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFF00000 0FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF000000000000FFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFF000000FFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 000000000000FFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFF FFFFF000000FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000FF FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFF000 00000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFF FFFFFFFFFFFF000F00000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF F00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F00000FFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF0000000000000000000FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFF00000FFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFF000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00FFF00000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFF000000000000000000 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFF00000FFFFFFFFFF FFFFFFFF0000FFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF000FFF00000FFFFFFFFFFFFFFFFFF0000FFFFF0000000 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFF FF0000FFFFFFFFFFFFFFFFFF0000FFFFF000000000000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF0000FFFFFFFFFFFFFFFFFF 0000FFFFF0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF000FFFFF00000FF000000FFFFFFFFF0000FFFFF000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFF00000F FF0FFFFFFFFFFFFF0000FFFFFFFF00000000000000000FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF00000FFFF0FFFFFFFFFFFF0000FFFF FFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF00FFFFFF00000FFFFF0FFFFFFFFFFF0000FFFFFFFFFFFFFF00000000000000 000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF0000FFFFFF0FF FFFFFFFF0000FFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000FFFFF00000FFFFFFF0FFFFFFFFF0000FFFFFFF0FFFF FFFFFFFFF00000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFF FF00000FFFFFFF0FFFFFFFFF0000FFFFFFF0FFFFFFFFFFFFFFF0000000000000 00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF00000FFFFFFF0FFFFFFFFF 0000FFFFFFF0FFFFFFFFFFFFFFFFFFF00000000000000000FFFFFFFFFFFFFFFF FFFFFFFFFFF00FFFFF00000FF0FFFF0FFFFFFFFF0000FFFFFFF0FFFFFFFFFFFF FFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF0000FF FF0000FFFFFFFFFF0000FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 0000FFFFFFFFFFFFFFFFFFFFFFF000FFF00000FFFFFFFFFFFFFFFFFF0000FFFF FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFF FFF000FFF00000FFFFFFFFFFFFFFFFFF0000FFFFFFF0FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFF00FFF00000FFFFFFFFFF FFFFFFFF0000FFFFF0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 00FFFFFFFFFFFFFFFFFF00FFF00000FFFFFFFFFFFFFFFFFF0000FFFFFF00FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFF000F 00000FFFFFFFFFFFFFFFFFFF0000FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF00000000000FFFFFFFFFFFFFF000F00000FFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000F FFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFF00000000FFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF000000000FFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF FFFFFF000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFF00000FFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF00000000FFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF000 00FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 0000000FFFFF000000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFF000000FFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF000000000F000000FFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 00000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000FFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000F FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000000FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 00000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000F FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 8 Height = 115 Top = 118 Width = 129 Caption = 'Couleur de l''oeil' ClientHeight = 97 ClientWidth = 125 TabOrder = 0 object Colorgrid1: TColorBox Left = 11 Height = 22 Top = 30 Width = 92 ItemHeight = 16 TabOrder = 0 end end object GroupBox3: TGroupBox Left = 144 Height = 65 Top = 118 Width = 185 Caption = 'Epaisseur trait à l''écran' ClientHeight = 47 ClientWidth = 181 TabOrder = 1 object editepaisseur: TSpinEdit Left = 24 Height = 21 Top = 8 Width = 49 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox4: TGroupBox Left = 104 Height = 113 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 95 ClientWidth = 157 TabOrder = 2 object StaticText1: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 1 end object edity1: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 0 end end object GroupBox5: TGroupBox Left = 272 Height = 113 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 95 ClientWidth = 157 TabOrder = 3 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 56 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 56 Width = 97 TabOrder = 1 end end object boutonsup: TBitBtn Left = 144 Height = 41 Top = 192 Width = 121 Caption = 'Supprimer cet oeil' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 4 end object BitBtn2: TBitBtn Left = 271 Height = 41 Top = 192 Width = 165 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 5 end object BitBtn1: TBitBtn Left = 336 Height = 60 Top = 123 Width = 97 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 6 end end optgeo-2.21/Unit19.lfm0000750000175000017500000000305612247333133014725 0ustar georgeskgeorgeskobject saisieempennage: Tsaisieempennage Left = 200 Height = 211 Top = 104 Width = 377 BorderIcons = [] BorderStyle = bsDialog Caption = 'Propriétés de l''empennage des rayons' ClientHeight = 211 ClientWidth = 377 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Label2: TLabel Left = 8 Height = 14 Top = 24 Width = 193 Caption = 'Position de l''empennage sur le segment:' ParentColor = False end object Label1: TLabel Left = 120 Height = 14 Top = 56 Width = 178 Caption = '(en 1000éme de la taille du segment)' ParentColor = False end object Label3: TLabel Left = 16 Height = 14 Top = 96 Width = 107 Caption = 'Taille de l''empennage:' ParentColor = False end object Label4: TLabel Left = 64 Height = 14 Top = 128 Width = 247 Caption = '(en 1000éme de la diagonale de l''espace de travail)' ParentColor = False end object spinposition: TSpinEdit Left = 224 Height = 21 Top = 24 Width = 57 MaxValue = 1000 TabOrder = 0 Value = 500 end object SpinEdit1: TSpinEdit Left = 144 Height = 21 Top = 88 Width = 57 MaxValue = 1000 TabOrder = 1 Value = 10 end object BitBtn1: TBitBtn Left = 8 Height = 57 Top = 153 Width = 362 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 OnClick = BitBtn1Click TabOrder = 2 end end optgeo-2.21/modif_espace_travail.lfm0000750000175000017500000000527412247333133020000 0ustar georgeskgeorgeskobject saisieretailleespace: Tsaisieretailleespace Left = 200 Height = 290 Top = 108 Width = 275 ActiveControl = Edit_xxmin_m BorderIcons = [] BorderStyle = bsDialog Caption = 'Modifier l''espace de travail' ClientHeight = 290 ClientWidth = 275 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Label1: TLabel Left = 8 Height = 14 Top = 8 Width = 69 Caption = 'Abscisse min.:' ParentColor = False end object Label2: TLabel Left = 8 Height = 14 Top = 48 Width = 73 Caption = 'Abscisse max.:' ParentColor = False end object Label3: TLabel Left = 8 Height = 14 Top = 80 Width = 76 Caption = 'Ordonnée min.:' ParentColor = False end object Label4: TLabel Left = 8 Height = 14 Top = 120 Width = 80 Caption = 'Ordonnée max.:' ParentColor = False end object log1: TLabel Left = 179 Height = 14 Top = 16 Width = 1 ParentColor = False end object log2: TLabel Left = 179 Height = 14 Top = 48 Width = 1 ParentColor = False end object log3: TLabel Left = 179 Height = 14 Top = 88 Width = 1 ParentColor = False end object log4: TLabel Left = 179 Height = 14 Top = 128 Width = 1 ParentColor = False end object Label5: TLabel Left = 6 Height = 14 Top = 176 Width = 254 Caption = 'pour avoir un repère approximativement orthonormé' ParentColor = False end object Edit_xxmin_m: TEdit Left = 88 Height = 21 Top = 8 Width = 89 TabOrder = 0 end object edit_xxmax_m: TEdit Left = 88 Height = 21 Top = 40 Width = 89 TabOrder = 1 end object Edit_yymin_m: TEdit Left = 88 Height = 21 Top = 80 Width = 89 TabOrder = 2 end object Edit_yymax_m: TEdit Left = 88 Height = 21 Top = 120 Width = 89 TabOrder = 3 end object cocherespect_m: TCheckBox Left = 16 Height = 17 Top = 152 Width = 236 Caption = 'Respecter rapport hauteur/largeur de l''écran' TabOrder = 4 end object BitBtn1: TBitBtn Left = 6 Height = 49 Top = 200 Width = 254 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 5 end object BitBtn2: TBitBtn Left = 9 Height = 24 Top = 256 Width = 251 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 6 end end optgeo-2.21/saisielec.lfm0000750000175000017500000005032112247333133015572 0ustar georgeskgeorgeskobject saisielentille: Tsaisielentille Left = 217 Height = 527 Top = 144 Width = 614 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''une lentille épaisse' ClientHeight = 527 ClientWidth = 614 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 8 Height = 100 Top = 0 Width = 100 AutoSize = True Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFF0FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF0FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFF FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFF FFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFF FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF0FFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000FFFFF0FFFFF0FFFFFFFFFFFFF FFFFFFF0FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFF0FFF0FF0F0FFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFF000FFFF0FF 0FFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0FFFFF0FF00FFF FF0FFFFFFFFFFFFFFFFFFFF0FFFFF0FFF0FFFF00FFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFF0FFFF0FFFFFFFFFFFFFFFFFFFFFF 0FFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFF0FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFF0FFFFF0FFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFF0FFFFFF FFFFFFFFFFFFFFFF0FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFF00 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0FFFFF 0FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFF0FFFFFFFFFFFFFF FFFFFFFF0FFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFF0FFF0FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFF0FFFFF0FFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFF0FFFF0FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF 0FFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000000FF00000FFFFF0000000 FFFFFFF0000FFFFF000000FFFFF000000FFFF00000000FFFF000000FFFF00000 000FFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF FFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0FFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFF FFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF0FFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFF FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF0FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFF0FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 8 Height = 177 Top = 136 Width = 273 Caption = 'Coordonnées des sommets des faces' ClientHeight = 159 ClientWidth = 269 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 48 Width = 54 Caption = 'Sommet S1' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 120 Width = 54 Caption = 'Sommet S2' ParentColor = False end object StaticText3: TLabel Left = 72 Height = 14 Top = 32 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 72 Height = 14 Top = 56 Width = 15 Caption = 'y=' ParentColor = False end object StaticText5: TLabel Left = 72 Height = 14 Top = 112 Width = 15 Caption = 'x=' ParentColor = False end object StaticText6: TLabel Left = 72 Height = 14 Top = 144 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 176 Height = 14 Top = 32 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 176 Height = 14 Top = 56 Width = 21 Caption = 'log2' ParentColor = False end object log3: TLabel Left = 176 Height = 14 Top = 104 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 176 Height = 14 Top = 136 Width = 21 Caption = 'log4' ParentColor = False end object edits1x: TEdit Left = 88 Height = 21 Top = 32 Width = 81 TabOrder = 0 end object edits1y: TEdit Left = 88 Height = 21 Top = 56 Width = 81 TabOrder = 1 end object edits2x: TEdit Left = 88 Height = 21 Top = 104 Width = 81 TabOrder = 2 end object edits2y: TEdit Left = 88 Height = 21 Top = 136 Width = 81 TabOrder = 3 end end object GroupBox2: TGroupBox Left = 8 Height = 137 Top = 320 Width = 345 Caption = 'Rayons de courbure des faces' ClientHeight = 119 ClientWidth = 341 TabOrder = 1 object StaticText7: TLabel Left = 8 Height = 14 Top = 8 Width = 228 Caption = 'Signe + si centre de courbure Ci à gauche de Si' ParentColor = False end object StaticText8: TLabel Left = 8 Height = 14 Top = 32 Width = 218 Caption = 'sur l''axe orienté de S1 vers S2, signe - sinon.' ParentColor = False end object StaticText9: TLabel Left = 40 Height = 14 Top = 63 Width = 22 Caption = 'R1=' ParentColor = False end object StaticText10: TLabel Left = 40 Height = 14 Top = 96 Width = 22 Caption = 'R2=' ParentColor = False end object log6: TLabel Left = 168 Height = 14 Top = 56 Width = 21 Caption = 'log6' ParentColor = False end object log7: TLabel Left = 168 Height = 14 Top = 96 Width = 21 Caption = 'log7' ParentColor = False end object editr1: TEdit Left = 72 Height = 21 Top = 56 Width = 89 TabOrder = 0 end object editr2: TEdit Left = 72 Height = 21 Top = 88 Width = 89 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 65 Top = 456 Width = 344 Caption = 'Diamètre' ClientHeight = 47 ClientWidth = 340 TabOrder = 2 object StaticText11: TLabel Left = 48 Height = 14 Top = 24 Width = 16 Caption = 'D=' ParentColor = False end object log5: TLabel Left = 160 Height = 14 Top = 16 Width = 21 Caption = 'log5' ParentColor = False end object editdiametre: TEdit Left = 80 Height = 21 Top = 16 Width = 73 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 296 Height = 177 Top = 136 Width = 305 Caption = 'Indice de réfraction du verre' ClientHeight = 159 ClientWidth = 301 TabOrder = 3 object StaticText12: TLabel Left = 16 Height = 14 Top = 32 Width = 69 Caption = 'Pour le rouge:' ParentColor = False end object StaticText13: TLabel Left = 24 Height = 14 Top = 64 Width = 61 Caption = 'Pour le vert:' ParentColor = False end object StaticText14: TLabel Left = 24 Height = 14 Top = 96 Width = 61 Caption = 'Pour le bleu:' ParentColor = False end object StaticText15: TLabel Left = 8 Height = 14 Top = 136 Width = 47 Caption = 'Matériau:' ParentColor = False end object editnrouge: TEdit Left = 88 Height = 21 Top = 32 Width = 81 TabOrder = 3 Text = '1,5' end object editnvert: TEdit Left = 88 Height = 21 Top = 64 Width = 81 TabOrder = 0 Text = '1,6' end object editnbleu: TEdit Left = 88 Height = 21 Top = 96 Width = 81 TabOrder = 1 Text = '1,7' end object combomateriaux: TComboBox Left = 56 Height = 21 Top = 136 Width = 177 ItemHeight = 13 OnChange = combomateriauxChange Style = csDropDownList TabOrder = 2 end end object boutonsup: TBitBtn Left = 112 Height = 25 Top = 104 Width = 489 Caption = 'Supprimer cette lentille' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 4 end object GroupBox5: TGroupBox Left = 368 Height = 201 Top = 320 Width = 233 Caption = 'Couleur à l''écran' ClientHeight = 183 ClientWidth = 229 TabOrder = 5 object Colorgrid1: TColorBox Left = 38 Height = 22 Top = 72 Width = 117 ItemHeight = 16 TabOrder = 0 end end object BitBtn1: TBitBtn Left = 117 Height = 47 Top = 6 Width = 483 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 6 end object BitBtn2: TBitBtn Left = 115 Height = 34 Top = 61 Width = 485 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 7 end end optgeo-2.21/unit1_palette.pas0000750000175000017500000002736712247333133016432 0ustar georgeskgeorgeskunit Unit1_palette; {$mode objfpc} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Buttons,LCLType, ExtCtrls,UnitScaleFont,UChaines; type { Tform_palette } Tform_palette = class(TForm) boutondeplacement: TSpeedButton; boutondupliquer: TSpeedButton; boutonprop: TSpeedButton; boutonsuppression: TSpeedButton; boutongroupe: TSpeedButton; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton7: TSpeedButton; procedure boutondeplacementClick(Sender: TObject); procedure boutondupliquerClick(Sender: TObject); procedure boutonpropClick(Sender: TObject); procedure boutonsuppressionClick(Sender: TObject); procedure boutongroupeClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure SpeedButton1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure SpeedButton1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); private encreation, debut_deplacement :boolean; { private declarations } public { public declarations } end; var form_palette: Tform_palette; MouseX ,MouseY:integer; implementation uses ray1,unit222; { Tform_palette } procedure Tform_palette.FormCreate(Sender: TObject); begin encreation :=true; debut_deplacement:=false; BOUTONDEPLACEMENT.CAPTION:=rsDPlacer; BOUTONDEPLACEMENT.HINT:= rsDPlacerUnLMe; BOUTONDUPLIQUER.CAPTION:= rsDupliquer; BOUTONDUPLIQUER.HINT:=rsDupliquerUnL; BOUTONGROUPE.CAPTION:=rsGrouper; BOUTONGROUPE.HINT :=rsGrouperDesLM2; BOUTONPROP.CAPTION:=rsPropriTS; BOUTONPROP.HINT:=rsPropriTSDUnL; BOUTONSUPPRESSION.CAPTION:=rsSupprimer; BOUTONSUPPRESSION.HINT :=rsSupprimerUnL; CAPTION:=rsActions; SPEEDBUTTON1.HINT:=rsPourDPlacerC; SPEEDBUTTON2.CAPTION :=rsExportPS; SPEEDBUTTON2.HINT:=rsExporterLaSi2; SPEEDBUTTON3.CAPTION :=rsImprimer; SPEEDBUTTON3.HINT:=rsImprimerLaSi; SPEEDBUTTON4.CAPTION:=rsExportPNG; SPEEDBUTTON4.HINT:=rsExporterLaSi; SPEEDBUTTON5.CAPTION:=rsExportJPG; SPEEDBUTTON5.HINT:=rsExportDeLaSi; SPEEDBUTTON6.CAPTION:=rsCopier; SPEEDBUTTON6.HINT:=rsCopierSimula; SPEEDBUTTON7.CAPTION:=rsGrouperTout; SPEEDBUTTON7.HINT:=rsCrErUnGroupe; end; procedure Tform_palette.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; procedure Tform_palette.SpeedButton1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin debut_deplacement:=true; MouseX := X; MouseY := Y; end; procedure Tform_palette.SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var P : TPoint; begin if debut_deplacement then begin P := ClientToScreen(Point(X, Y)); SetBounds(P.X-MouseX, P.Y-MouseY, Width, Height); end; end; procedure Tform_palette.SpeedButton1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin debut_deplacement:=false; end; procedure Tform_palette.SpeedButton2Click(Sender: TObject); begin Form1.MenuItem8Click(Sender); end; procedure Tform_palette.SpeedButton3Click(Sender: TObject); begin Form1.Imprimer1Click(Sender); end; procedure Tform_palette.SpeedButton4Click(Sender: TObject); begin Form1.MenuItem3Click(Sender); end; procedure Tform_palette.SpeedButton5Click(Sender: TObject); begin Form1.MenuItem4Click(Sender); end; procedure Tform_palette.SpeedButton6Click(Sender: TObject); begin Form1.Copier1Click(Sender); end; procedure Tform_palette.SpeedButton7Click(Sender: TObject); var i:integer; begin if form1.nombrequelquechose<2 then begin application.MessageBox(pchar('Impossible de grouper moins de 2 éléments'), pchar('Hélas...'),mb_ok); exit; end; retaillepgroupe(listegroupe,nombregroupe,nombregroupe+1); nombregroupe:=nombregroupe+1; listegroupe[-1+nombregroupe].create; if nombremiroirplan>0 then for i:=1 to nombremiroirplan do listegroupe[-1+nombregroupe].add(mdmiroirplan,i); if nombreReseau>0 then for i:=1 to nombreReseau do listegroupe[-1+nombregroupe].add(mdReseau,i); if nombremscopa>0 then for i:=1 to nombremscopa do listegroupe[-1+nombregroupe].add(mdmscopa,i); if nombremscepa>0 then for i:=1 to nombremscepa do listegroupe[-1+nombregroupe].add(mdmscepa,i); if nombremscore>0 then for i:=1 to nombremscore do listegroupe[-1+nombregroupe].add(mdmscore,i); if nombremscere>0 then for i:=1 to nombremscere do listegroupe[-1+nombregroupe].add(mdmscere,i); if nombrelmc>0 then for i:=1 to nombrelmc do listegroupe[-1+nombregroupe].add(mdlmc,i); if nombrelmd>0 then for i:=1 to nombrelmd do listegroupe[-1+nombregroupe].add(mdlmd,i); if nombrerayon>0 then for i:=1 to nombrerayon do listegroupe[-1+nombregroupe].add(mdrayon,i); if nombrelsr>0 then for i:=1 to nombrelsr do listegroupe[-1+nombregroupe].add(mdlsr,i); if nombresourceponctuelle>0 then for i:=1 to nombresourceponctuelle do listegroupe[-1+nombregroupe].add(mdsourceponctuelle,i); if nombreondeplane>0 then for i:=1 to nombreondeplane do listegroupe[-1+nombregroupe].add(mdondeplane,i); if nombreecran>0 then for i:=1 to nombreecran do listegroupe[-1+nombregroupe].add(mdecran,i); if nombrepolyhedre>0 then for i:=1 to nombrepolyhedre do listegroupe[-1+nombregroupe].add(mdpolyhedre,i); if nombresphere>0 then for i:=1 to nombresphere do listegroupe[-1+nombregroupe].add(mdsphere,i); if nombremiroirconique>0 then for i:=1 to nombremiroirconique do listegroupe[-1+nombregroupe].add(mdmiroirconique,i); if nombretexte>0 then for i:=1 to nombretexte do listegroupe[-1+nombregroupe].add(mdtexteaffiche,i); if nombrediaphragme>0 then for i:=1 to nombrediaphragme do listegroupe[-1+nombregroupe].add(mddiaphragme,i); if nombrelec>0 then for i:=1 to nombrelec do listegroupe[-1+nombregroupe].add(mdlec,i); if nombrepolycercle>0 then for i:=1 to nombrepolycercle do listegroupe[-1+nombregroupe].add(mdpolycercle,i); if nombreangle>0 then for i:=1 to nombreangle do listegroupe[-1+nombregroupe].add(mdangle,i); if nombrefleche>0 then for i:=1 to nombrefleche do listegroupe[-1+nombregroupe].add(mdfleche,+i); if nombreoeil>0 then for i:=1 to nombreoeil do listegroupe[-1+nombregroupe].add(mdoeil,i); if nombremetre>0 then for i:=1 to nombremetre do listegroupe[-1+nombregroupe].add(mdmetre,i); if nombreprisme>0 then for i:=1 to nombreprisme do listegroupe[-1+nombregroupe].add(mdprisme,i); application.MessageBox(pchar(rsUnNouveauGro2), pchar(rsCrAtionRUssi), mb_ok); end; procedure Tform_palette.boutondeplacementClick(Sender: TObject); begin if (form1.nombrequelquechose=0) then exit; if boutondeplacement.caption=rsDPlacer then begin boutondeplacement.OnClick:=nil; form1.image1.Cursor:=crdepla; modemodif:=true; modifencours:=false; application.ProcessMessages; boutondeplacement.OnClick:=@boutondeplacementclick; form1.desactiveboutons; boutondeplacement.Enabled:=true; boutondeplacement.caption:=rsFinDPl; Rafraichit; end else begin form1.activeboutons; modemodif:=false; modifencours:=false; boutondeplacement.caption:=rsDPlacer; form1.image1.Cursor:=crDefault; form1.StatusBar1.Panels[2].text:=''; form1.StatusBar1.Panels[3].text:=''; Rafraichit; end; end; procedure Tform_palette.boutondupliquerClick(Sender: TObject); begin if (form1.nombrequelquechose=0) then exit; if boutondupliquer.caption=rsDupliquer then begin boutondupliquer.OnClick:=nil; form1.image1.Cursor:=crdefault; modeduplication:=true; modeinfo:=true; application.ProcessMessages; form1.desactiveboutons; boutondupliquer.Enabled:=true; boutondupliquer.caption:=rsFinDupl; boutondupliquer.OnClick:=@boutondupliquerclick; Rafraichit; end else begin form1.activeboutons; modeduplication:=false; modeinfo:=false; boutondupliquer.caption:=rsDupliquer; form1.image1.Cursor:=crDefault; form1.StatusBar1.Panels[2].text:=''; form1.StatusBar1.Panels[3].text:=''; Rafraichit; end; end; procedure Tform_palette.boutonpropClick(Sender: TObject); begin if boutonprop.caption=rsPropriTS then begin boutonprop.OnClick:=nil; form1.image1.Cursor:=crprop; modeinfo:=true; application.ProcessMessages; boutonprop.OnClick:=@boutonpropclick; form1.desactiveboutons; boutonprop.Enabled:=true; boutonprop.caption:=rsFinProp; Rafraichit; end else begin form1.activeboutons; modeinfo:=false; boutonprop.caption:=rsPropriTS; form1.image1.Cursor:=crDefault; form1.StatusBar1.Panels[2].text:=''; form1.StatusBar1.Panels[3].text:=''; Rafraichit; end; end; procedure Tform_palette.boutonsuppressionClick(Sender: TObject); begin if (form1.nombrequelquechose=0) then exit; if boutonsuppression.caption=rsSupprimer then begin boutonsuppression.OnClick:=nil; form1.image1.Cursor:=crdefault; form1.desactiveboutons; modesuppression:=true; boutonsuppression.Enabled:=true; boutonsuppression.caption:=rsFinSup; application.ProcessMessages; boutonsuppression.OnClick:=@boutonsuppressionclick; Rafraichit; end else begin form1.activeboutons; modesuppression:=false; boutonsuppression.caption:=rsSupprimer; form1.image1.Cursor:=crDefault; form1.StatusBar1.Panels[2].text:=''; form1.StatusBar1.Panels[3].text:=''; Rafraichit; end; end; procedure Tform_palette.boutongroupeClick(Sender: TObject); var ii:integer; begin if boutongroupe.caption=rsGrouper then begin if form1.Nombrequelquechose<2 then begin application.MessageBox(pchar(rsImpossibleDe2), pchar(rsAttention3), mb_ok); exit; end; if Nombregroupe=maxgroupe then begin application.MessageBox(pchar(rsNombreMaxima), pchar(rsAttention3), mb_ok); exit; end; boutongroupe.caption:=rsFinGroupemen; boutongroupe.Hint:=rsFinDeLaCrAti; boutongroupe.OnClick:=nil; form1.image1.Cursor:=crPoint1; form1.StatusBar1.Panels[2].text:=rsCliquezSurLe; modegroupement:=true; groupeprovisoire.create; Rafraichit; application.ProcessMessages; boutongroupe.OnClick:=@boutongroupeclick; form1.desactiveboutons; boutongroupe.enabled:=true; end else begin if groupeprovisoire.nombreelements>1 then begin retaillepgroupe(listegroupe,nombregroupe,nombregroupe+1); inc(nombregroupe); listegroupe[-1+nombregroupe].create; for ii:=1 to groupeprovisoire.nombreelements do listegroupe[-1+nombregroupe].add(groupeprovisoire.listeelements[ii].typeelementgroupe, groupeprovisoire.listeelements[ii].indiceelement); application.MessageBox(pchar(Format(rsLeGroupeNVie, [inttostr(nombregroupe)])), pchar(rsFait), mb_ok); end; boutongroupe.caption:=rsGrouper; boutongroupe.Hint:=rsGrouperDesLM; form1.activeboutons; modegroupement:=false; Rafraichit; form1.StatusBar1.Panels[2].text:=''; form1.image1.Cursor:=crdefault; end; end; procedure Tform_palette.FormCloseQuery(Sender: TObject; var CanClose: boolean); begin canclose:=false; end; initialization {$I unit1_palette.lrs} end. optgeo-2.21/unit12.pas0000750000175000017500000000475512247333133014772 0ustar georgeskgeorgesk{ This file is part of OptGeo, optical simulation software Copyright (C) 2004 Jean-Marie Biansan Contact: jeanmarie.biansan@free.fr Web site: http://jeanmarie.biansan.free.fr/logiciel.html From version 1.25, OptGeo is distribued under the terms of the GNU General Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA} unit unit12; {$mode objfpc}{$H+} interface uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, LResources,LCLType,UnitScaleFont,UChaines; type { Tsaisiediametre } Tsaisiediametre = class(TForm) BitBtn1: TBitBtn; GroupBox1: TGroupBox; StaticText1: TLabel; editdia: TEdit; log1: TLabel; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private encreation:boolean; { Déclarations privées } public { Déclarations publiques } end; var saisiediametre: Tsaisiediametre; diadia:extended; implementation procedure Tsaisiediametre.BitBtn1Click(Sender: TObject); begin try diadia:=strtofloat(editdia.text); except application.messagebox(pchar(rsCeciNEstPasU), pchar(rsAttention2), mb_ok); modalresult:=mrcancel; exit; end; end; procedure Tsaisiediametre.FormCreate(Sender: TObject); begin encreation:=true; BITBTN1.CAPTION // msgctxt ';TSAISIEDIAMETRE.BITBTN1.CAPTION'; :=rsOK; CAPTION :=rsSaissezLeDia; GROUPBOX1.CAPTION :=rsSaisissez; LOG1.CAPTION // msgctxt ';TSAISIEDIAMETRE.LOG1.CAPTION'; :=rsLog1; STATICTEXT1.CAPTION :=rsDiamTre2; end; procedure Tsaisiediametre.FormShow(Sender: TObject); begin if encreation then begin scalefont(self); encreation:=false; end; end; initialization {$i unit12.lrs} end. optgeo-2.21/saisiemscore.lfm0000750000175000017500000004734112247333133016327 0ustar georgeskgeorgeskobject saisiemiroirscore: Tsaisiemiroirscore Left = 188 Height = 461 Top = 148 Width = 535 BorderIcons = [] BorderStyle = bsDialog Caption = 'Ajout d''un miroir sphérique concave réel' ClientHeight = 461 ClientWidth = 535 Color = clAqua OnCreate = FormCreate OnShow = FormShow LCLVersion = '0.9.29' object Image1: TImage Left = 0 Height = 100 Top = 0 Width = 100 Picture.Data = { 07544269746D6170C6140000424DC61400000000000076000000280000006400 0000640000000100040000000000501400000000000000000000100000001000 0000000000000000800000800000008080008000000080008000808000008080 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF0000FFF00FFFFFFFFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0FFFFFFFFFF00000000FFFFFFFF00FFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF00000 000FFFFFFF000FFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFF0000000000FFFFF00FFFFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0FFFFFFFFFFFFF00000000FFF00FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0000000F 000FFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0FFFFFFF FFFFFFFFFFF0000000FFFFFFF00FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFF0000000FFFFF 000FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0FFFFFFFFFFFFFFFFFFFFF000000FF0000FFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF FFFFFFF00000F0000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFF00FFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F000000FFFFFFF0000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFF0000FFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF00000FFFF000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 0F0000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF000000FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF FFF00FFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFF0000FFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF00000FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF0000FFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0000F0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FF FFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00000000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF00000FFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0000000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFF FFFFFFFFFFFF0000FFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFF00000F000000 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFF00FFFFFFFFFFFFFFFFFFFFFFFF FFFFF000000FFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFF FFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF000 0FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFF FFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFF FFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFFF0FFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF 0000FFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000F0000FFFFFFFFFFFFF0FFFFF0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000F00000F0000FFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFF FFFFFFFFF0FFFFFFFFFFFFFFF00000000000FFFF0000000FFFF00000000000FF FF000000FFF00000000000000FFFFFFF0000FFFFFFFFFFFFF0FFFFFFFFFFFFFF F00000000000FFFF0000000FFFF00000000000FFFF000000FFF0000000000000 0FFFFFFF0000FFFFFFFFFFFFF0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000F0000FFFFFFFFFFFF F0FFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF0000000000F0000FFFFFFFFFFFFFF0FFF0FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF 0000FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000F0000FF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF0000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000F0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF000000000000F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF0000000FFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF00000FF0000FFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0000FFFF000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF000000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000F0000FFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF00000FFF0000FFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFF000FFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000 0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F0000FFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF00000FF0000FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFF000 FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00FFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F000000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00000F0000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF00000FFFF 0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFF0000FFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF FFFF00000000FFFFFFF00FFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFF00000000000FFFFFFFFFF FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F FFFFFFFFFFFFFFFFFF0000000FF0000FFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF0000000F FFFFF0000FFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFF000000000FFFFFFF0000FFFFFFFFFFFFFF 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF FFFFFF0000000000FFFFFFFF00FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFF0FFFFFFFFFFFFF00000FFF0000FFFFFF FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0FFF0FFFFFFFFFFFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFFF0000FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFF FFFFFFFFF00FFFFFFFFFFFFFFFFFFFFF0000 } end object GroupBox1: TGroupBox Left = 104 Height = 120 Top = 0 Width = 161 Caption = 'Point 1' ClientHeight = 102 ClientWidth = 157 TabOrder = 0 object StaticText1: TLabel Left = 8 Height = 14 Top = 24 Width = 15 Caption = 'x=' ParentColor = False end object StaticText2: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log1: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log1' ParentColor = False end object log2: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log2' ParentColor = False end object editx1: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity1: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox2: TGroupBox Left = 272 Height = 105 Top = 0 Width = 161 Caption = 'Point 2' ClientHeight = 87 ClientWidth = 157 TabOrder = 1 object StaticText3: TLabel Left = 8 Height = 14 Top = 16 Width = 15 Caption = 'x=' ParentColor = False end object StaticText4: TLabel Left = 8 Height = 14 Top = 64 Width = 15 Caption = 'y=' ParentColor = False end object log3: TLabel Left = 128 Height = 14 Top = 16 Width = 21 Caption = 'log3' ParentColor = False end object log4: TLabel Left = 128 Height = 14 Top = 64 Width = 21 Caption = 'log4' ParentColor = False end object editx2: TEdit Left = 24 Height = 21 Top = 16 Width = 97 TabOrder = 0 end object edity2: TEdit Left = 24 Height = 21 Top = 64 Width = 97 TabOrder = 1 end end object GroupBox3: TGroupBox Left = 8 Height = 105 Top = 128 Width = 129 Caption = 'Couleur du miroir' ClientHeight = 87 ClientWidth = 125 TabOrder = 2 object Colorgrid1: TColorBox Left = 12 Height = 22 Top = 24 Width = 91 ItemHeight = 16 TabOrder = 0 end end object GroupBox4: TGroupBox Left = 8 Height = 97 Top = 240 Width = 185 Caption = 'Epaisseur trait à l''écran' ClientHeight = 79 ClientWidth = 181 TabOrder = 3 object editepaisseur: TSpinEdit Left = 40 Height = 21 Top = 24 Width = 41 MaxValue = 20 MinValue = 1 TabOrder = 0 Value = 1 end end object GroupBox5: TGroupBox Left = 200 Height = 97 Top = 240 Width = 129 Caption = 'Aspect' ClientHeight = 79 ClientWidth = 125 TabOrder = 4 object cochehachures: TCheckBox Left = 16 Height = 17 Top = 16 Width = 65 Caption = 'Hachures' Checked = True State = cbChecked TabOrder = 0 end object cocheaxe: TCheckBox Left = 16 Height = 17 Top = 48 Width = 98 Caption = 'Axe de symétrie' Checked = True State = cbChecked TabOrder = 1 end end object GroupBox6: TGroupBox Left = 280 Height = 64 Top = 112 Width = 153 Caption = 'Rayon de courbure' ClientHeight = 46 ClientWidth = 149 TabOrder = 5 object StaticText5: TLabel Left = 8 Height = 14 Top = 16 Width = 16 Caption = 'R=' ParentColor = False end object log5: TLabel Left = 120 Height = 14 Top = 16 Width = 21 Caption = 'log5' ParentColor = False end object editrayoncourbure: TEdit Left = 24 Height = 21 Top = 16 Width = 89 TabOrder = 0 end end object GroupBox7: TGroupBox Left = 144 Height = 105 Top = 128 Width = 129 Caption = 'Couleur de l''axe' ClientHeight = 87 ClientWidth = 125 TabOrder = 6 object gridaxe: TColorBox Left = 12 Height = 22 Top = 24 Width = 102 ItemHeight = 16 TabOrder = 0 end end object GroupBox8: TGroupBox Left = 280 Height = 41 Top = 184 Width = 153 Caption = 'Angle d''ouverture' ClientHeight = 23 ClientWidth = 149 TabOrder = 7 object Checkobtu: TCheckBox Left = 24 Height = 17 Top = 0 Width = 44 Caption = 'Obtu' TabOrder = 0 end end object boutonsup: TBitBtn Left = 8 Height = 25 Top = 432 Width = 425 Caption = 'Supprimer ce miroir' Enabled = False Glyph.Data = { DE010000424DDE01000000000000760000002800000024000000120000000100 0400000000006801000000000000000000001000000010000000000000000000 80000080000000808000800000008000800080800000C0C0C000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00388888888877 F7F787F8888888888333333F00004444400888FFF444448888888888F333FF8F 000033334D5007FFF4333388888888883338888F0000333345D50FFFF4333333 338F888F3338F33F000033334D5D0FFFF43333333388788F3338F33F00003333 45D50FEFE4333333338F878F3338F33F000033334D5D0FFFF43333333388788F 3338F33F0000333345D50FEFE4333333338F878F3338F33F000033334D5D0FFF F43333333388788F3338F33F0000333345D50FEFE4333333338F878F3338F33F 000033334D5D0EFEF43333333388788F3338F33F0000333345D50FEFE4333333 338F878F3338F33F000033334D5D0EFEF43333333388788F3338F33F00003333 4444444444333333338F8F8FFFF8F33F00003333333333333333333333888888 8888333F00003333330000003333333333333FFFFFF3333F00003333330AAAA0 333333333333888888F3333F00003333330000003333333333338FFFF8F3333F 0000 } ModalResult = 7 NumGlyphs = 2 TabOrder = 8 end object GroupBox9: TGroupBox Left = 8 Height = 80 Top = 344 Width = 425 Caption = 'Trouer le miroir en son centre' ClientHeight = 62 ClientWidth = 421 TabOrder = 9 object StaticText6: TLabel Left = 88 Height = 14 Top = 24 Width = 133 Caption = 'Diamètre angulaire du trou:' ParentColor = False end object StaticText7: TLabel Left = 88 Height = 14 Top = 40 Width = 110 Caption = '(vu depuis le centre C)' ParentColor = False end object StaticText13: TLabel Left = 390 Height = 14 Top = 24 Width = 17 Caption = 'rad' ParentColor = False end object cochetrou: TCheckBox Left = 16 Height = 17 Top = 24 Width = 52 Caption = 'Trouer' TabOrder = 0 end object editdiametretrou: TEdit Left = 238 Height = 21 Top = 24 Width = 145 TabOrder = 1 end end object BitBtn2: TBitBtn Left = 352 Height = 41 Top = 297 Width = 153 Cancel = True Caption = 'Annuler' Kind = bkCancel ModalResult = 2 NumGlyphs = 0 TabOrder = 10 end object BitBtn1: TBitBtn Left = 440 Height = 282 Top = 8 Width = 92 Caption = '&OK' Default = True Kind = bkOK ModalResult = 1 NumGlyphs = 0 OnClick = BitBtn1Click TabOrder = 11 end end