Draft CubicBezCurve/it: Difference between revisions

From FreeCAD Documentation
(Created page with "Per informazioni di carattere generale vedere Curva di Bézier. Una Bezier cubica viene creata passando l'opzione <code>degree=3</code> a {{incode|makeBe...")
No edit summary
 
(57 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{UnfinishedDocu}}

{{Docnav/it|[[Draft BezCurve/it|Curva di Bézier]]|[[Draft_Label/it|Etichetta]]|[[Draft_Module/it|Draft]]|IconL=Draft BezCurve.svg |IconC=Workbench_Draft.svg|IconR=Draft_Label.svg }}


{{Docnav/it
|[[Draft_BSpline/it|BSpline]]
|[[Draft_BezCurve/it|Curva di Bézier]]
|[[Draft_Workbench|Draft/it]]
|IconL=Draft_BSpline.svg
|IconR=Draft_BezCurve.svg
|IconC=Workbench_Draft.svg
}}


{{GuiCommand/it
{{GuiCommand/it
|Name=Draft CubicBezCurve
|Name=Draft CubicBezCurve
|Name/it=Curva di Bézier cubica
|Name/it=Curva di Bézier cubica
|MenuLocation=Drafting → Strumenti Bezier → Curva di Bézier cubica
|Workbenches=[[Draft Module/it|Draft]], [[Arch Module/it|Arch]]
|Workbenches=[[Draft_Workbench/it|Draft]], [[Arch_Workbench/it|Arch]]
|MenuLocation=Draft → Strumenti Bezier → Curva di Bézier cubica
|Version/it=0.19
|Shortcut=
|SeeAlso=[[Draft Wire/it|Polilinea]], [[Draft BSpline/it|B-spline]], [[Draft BezCurve/it|Curva di Bézier]]
|SeeAlso=[[Draft BezCurve/it|Curva di Bézier]], [[Draft BSpline/it|BSpline]]
}}
|Version/it=0.19}}


<span id="Description"></span>
==Descrizione==
==Descrizione==


Lo strumento [[Draft CubicBezCurve/it|Curva di Bézier cubica]] crea una[http://en.wikipedia.org/wiki/Bezier_curve Curva di Bézier] di terzo grado. Questa è una delle curve di Bezier più usate. Questo strumento consente di creare una grande spline composta da diversi segmenti Bezier di 3° grado, in un modo simile allo strumento Bezier in Inkscape. Una curva di Bezier di qualsiasi grado può essere creata con lo strumento [[Draft BezCurve/it|Curva di Bézier]].
Il comando [[Image:Draft_CubicBezCurve.svg|24px]] '''Curva di Bézier cubica''' crea una [http://en.wikipedia.org/wiki/Bezier_curve curva di Bézier] di terzo grado (quattro punti richiesti).


La curva di Bézier è una delle curve più utilizzate nella computer grafica. Questo comando consente di creare una spline continua composta da diversi segmenti Bézier di 3° grado, in modo simile allo strumento Bézier in [https://inkscape.org/Inkscape]. Una curva di Bézier generale di qualsiasi grado può essere creata con il comando [[Draft_BezCurve/it|Curva di Bézier]].
Gli strumenti [[Draft BezCurve/it|Curva di Bézier]] e [[Draft CubicBezCurve/it|Curva di Bézier cubica]] utilizzano i {{Emphasis|punti di controllo}} per definire la direzione della curva; invece lo strumento [[Draft BSpline/it|B-spline]] specifica i punti esatti attraverso i quali passa la curva.


I comandi [[Draft_BezCurve/it|Curva di Bézier]] e Curva di Bézier cubica utilizzano {{Emphasis|punti di controllo}} per definire la posizione e la curvatura della spline. Il comando [[Draft_BSpline/it|BSpline]], invece, specifica i {{Emphasis|punti esatti}} attraverso i quali passerà la curva.
[[Image:cub_bez_curve.png|263px]]


[[File:Draft_CubicBezCurve_example.png|500px]]
{{Caption|Curva di Bézier cubica definita da tre punti di controllo}}
{{Caption|Spline composta da tre segmenti cubici di Bézier. Il primo segmento è definito da quattro punti. I segmenti successivi riutilizzano due punti del segmento precedente e pertanto richiedono solo due punti aggiuntivi.}}


<span id="Usage"></span>
== Utilizzo ==
== Utilizzo ==


Vedere anche: [[Draft_Tray/it|Barra di Draft]], [[Draft_Snap/it|Aggancio]] e [[Draft_Constrain/it|Vincolare]].
# Premere il pulsante {{Button|[[Image:Draft_CubicBezCurve.svg|16px]] [[Draft CubicBezCurve/it|Curva di Bézier cubica]]}}.
# Fare clic su un primo punto nella vista 3D e tenere premuto il puntatore del mouse.
# Trascinare il puntatore su un altro punto della vista 3D e rilasciare il puntatore.
# Spostare il puntatore su un altro punto della vista 3D per regolare la curvatura della spline, fare clic e tenere premuto sul punto.
# Spostare il puntatore su un altro punto della vista 3D per regolare la curvatura finale della spline, quindi rilasciare il puntatore. Questo crea una curva di Bezier di 3° grado. Continuare a disegnare dall'ultimo punto.
# Ripetere il processo di fare clic, tenere premuto, trascinare e rilasciare per aggiungere punti e creare ulteriori segmenti Beziér di terzo grado.
# Premere {{KEY|Esc}} o il pulsante {{Button|Chiudi}} per completare l'edizione.


# Esistono diversi modi per invocare il comando:
#* Premere il pulsante {{Button|[[Image:Draft_CubicBezCurve.svg|16px]] [[Draft_CubicBezCurve|Curva di Bézier cubica]]}}.
#* Selezionare l'opzione {{MenuCommand|Drafting → Strumenti Bézier → [[Image:Draft_CubicBezCurve.svg|16px]] Curva di Bézier cubica}} dal menu.
# Si apre il pannello delle attività {{MenuCommand|Curva di Bézier cubica}}. Vedere [[#Options|Opzioni]] per maggiori informazioni.
# Non è possibile inserire i punti tramite il pannello delle attività.
# Per i seguenti [[Mouse_navigation/it|Modelli di navigazione con mouse]] è necessario tenere premuto un tasto della tastiera:
#* Se si sta utilizzando [[Mouse_navigation/it#Navigazione OpenInventor|Navigazione OpenInventor]], il tasto {{KEY|Ctrl}} deve essere tenuto premuto per tutta la durata del comando.
#* Se si sta utilizzando [[Mouse_navigation/it#Navigazione Gesture|Navigazione Gesture]] il tasto {{KEY|Alt}} deve essere tenuto premuto per ogni sequenza click-hold-release, ma è anche possibile tenere premuto questo tasto per tutta la durata del comando.
# Selezionare il primo punto nella [[3D_view/it|Vista 3D]] e tenere premuto il pulsante del mouse (1), questo è il primo punto finale.
# Trascinare il puntatore su un altro punto nella [[3D_view/it|Vista 3D]] e rilasciare il pulsante del mouse (2), questo è il primo punto di controllo.
# Spostare il puntatore su un altro punto nella [[3D_view/it|Vista 3D]], selezionare questo punto e tenere premuto il pulsante del mouse (3), questo è il secondo punto finale.
# Spostare il puntatore su un altro punto nella [[3D_view/it|Vista 3D]] per regolare la curvatura finale del segmento e rilasciare il pulsante del mouse (4), questo è il secondo punto di controllo.
# Ora si ha una curva di Bézier di 3° grado.
# Facoltativamente ripetere il processo di clic e tenere premuto (5) e trascinare e rilasciare (6) per aggiungere più segmenti.
# Ogni segmento successivo utilizzerà rispettivamente il secondo punto finale e il secondo punto di controllo del segmento precedente come primo punto finale e primo punto di controllo.
# Premere {{KEY|Esc}} o il pulsante {{Button|Chiudi}} per terminare il comando.

<span id="Options"></span>
== Opzioni ==
== Opzioni ==


Vedere [[Draft_BezCurve/it#Options|Curva di Bézier]].
== Proprietà ==


<span id="Notes"></span>
=== Dati ===
==Note==


* Una Curva di Bézier cubica può essere modificata con il comando [[Draft_Edit/it|Modifica]].
===Vista===


<span id="Properties"></span>
== Proprietà ==

Vedere [[Draft_BezCurve/it#Properietà|Curva di Bézier]].

<span id="Scripting"></span>
== Script ==
== Script ==


{{Emphasis|Vedere anche:}} [[Draft API/it|Draft API]] e [[FreeCAD Scripting Basics/it|Nozioni di base sugli script di FreeCAD]].
Vedere anche: [https://freecad.github.io/SourceDoc/ Autogenerated API documentation] e [[FreeCAD_Scripting_Basics/it|Script di base per FreeCAD]].


Per informazioni di carattere generale vedere [[Draft BezCurve/it|Curva di Bézier]]. Una Bezier cubica viene creata passando l'opzione <code>degree=3</code> a {{incode|makeBezCurve()}}.
Per informazioni di carattere generale vedere [[Draft_BezCurve/it|Curva di Bézier]]. Una Bézier cubica viene creata passando l'opzione <code>degree=3</code> a {{incode|makeBezCurve()}}.


Per ogni segmento di Bézier cubica devono essere utilizzati quattro punti, di cui i due punti estremi indicano dove passa la spline e i due punti intermedi sono punti di controllo.
For each cubic Bezier segment four points must be used, of which the two intermediate points are the control points.
* Se vengono assegnati solo 3 punti, viene invece creata una Bézier quadratica, con un solo punto di controllo..
* If only 3 points are given, it creates a quadratic Bezier instead.
* Se vengono assegnati solo 2 punti, viene creata una Bézier lineare, ovvero una linea retta.
* If only 2 points are given, it creates a linear Bezier, that is, a straight line.
* Se vengono assegnati 5 punti, i primi 4 creano un segmento di Béezier cubico; il quarto e il quinto punto vengono utilizzati per creare una linea retta.
* If 5 points are given, the first 4 create a cubic Bezier segment; the fourth and the fifth points are used to create a straight line.
* Se vengono assegnati 6 punti, i primi 4 creano un segmento cubico di Bézier; il quarto e gli altri due punti vengono utilizzati per creare un segmento quadratico di Bézier.
* If 6 points are given, the first 4 create a cubic Bezier segment; the fourth and the other two points are used to create a quadratic Bezier segment.
* Se vengono assegnati 7 punti, i primi 4 creano un segmento cubico di Bézier; il quarto e gli altri tre punti sono usati per creare un secondo segmento cubico di Bézier.
* If 7 points are given, the first 4 create a cubic Bezier segment; the fourth and the other three are used to create a second cubic Bezier segment.
* In generale, l'ultimo punto in un gruppo di quattro è condiviso al massimo con i seguenti tre punti per creare un altro segmento di Bézier.
* That is, whenever possible, the last point in a cubic Bezier is shared withe following points.
* * Per avere curve morbide, senza segmenti diritti, il numero di punti dovrebbe essere {{incode|3n + 1}} o {{incode|3n}}, dove {{incode|n}} è il numero di segmenti, per <code>n >= 1</code>.

[[File:Draft_CubicBezCurve_API_example.png|600px]]

{{Caption|Esempi di curve di Bézier prodotte utilizzando 2, 3, 4, 5, 6, 7 e 8 punti. Le linee continue indicano segmenti cubici di Bézier; le altre linee sono quadratiche o lineari.}}


Esempio:
Esempio:

{{Code|code=
{{Code|code=
import FreeCAD as App
import FreeCAD as App
import Draft
import Draft

doc = App.newDocument()


p1 = App.Vector(-3500, 0, 0)
p1 = App.Vector(-3500, 0, 0)
Line 69: Line 104:
p6 = App.Vector(3000, -1500, 0)
p6 = App.Vector(3000, -1500, 0)
p7 = App.Vector(5000, 0, 0)
p7 = App.Vector(5000, 0, 0)
p8 = App.Vector(6000, 1500, 0)
rot = App.Rotation()
rot = App.Rotation()


Draft.makeCircle(100, placement=App.Placement(p1, rot), face=False)
c1 = Draft.make_circle(100, placement=App.Placement(p1, rot), face=False)
c1.Label = "B1_E1"
Draft.makeCircle(50, placement=App.Placement(p2, rot), face=True)
Draft.makeCircle(50, placement=App.Placement(p3, rot), face=True)
c2 = Draft.make_circle(50, placement=App.Placement(p2, rot), face=True)
c2.Label = "B1_c1"
Draft.makeCircle(100, placement=App.Placement(p4, rot), face=False)
Draft.makeCircle(50, placement=App.Placement(p5, rot), face=True)
c3 = Draft.make_circle(50, placement=App.Placement(p3, rot), face=True)
c3.Label = "B1_c2"
Draft.makeCircle(50, placement=App.Placement(p6, rot), face=True)
Draft.makeCircle(100, placement=App.Placement(p7, rot), face=False)
c4 = Draft.make_circle(100, placement=App.Placement(p4, rot), face=False)
c4.Label = "B1_E2"
c5 = Draft.make_circle(50, placement=App.Placement(p5, rot), face=True)
c5.Label = "B2_c3"
c6 = Draft.make_circle(50, placement=App.Placement(p6, rot), face=True)
c6.Label = "B2_c4"
c7 = Draft.make_circle(100, placement=App.Placement(p7, rot), face=False)
c7.Label = "B2_E3"
c8 = Draft.make_circle(50, placement=App.Placement(p8, rot), face=True)
c8.Label = "B3_c5"


doc.recompute()
B1 = Draft.makeBezCurve([p1, p2], degree=3)

B1 = Draft.make_bezcurve([p1, p2], degree=3)
B1.Label = "B_lin"
B1.ViewObject.DrawStyle = "Dashed"
B1.ViewObject.DrawStyle = "Dashed"


B2 = Draft.makeBezCurve([p1, p2, p3], degree=3)
B2 = Draft.make_bezcurve([p1, p2, p3], degree=3)
B2.Label = "B_quad"
B1.ViewObject.DrawStyle = "Dotted"
B2.ViewObject.DrawStyle = "Dotted"


B = Draft.makeBezCurve([p1, p2, p3, p4], degree=3)
B3 = Draft.make_bezcurve([p1, p2, p3, p4], degree=3)
B3.Label = "B_cub"
B3 = Draft.makeBezCurve([p1, p2, p3, p4, p5, p6, p7], degree=3)
B3.ViewObject.LineWidth = 4
App.ActiveDocument.recompute()

B4 = Draft.make_bezcurve([p1, p2, p3, p4, p5], degree=3)
B4.Label = "B_cub+lin"
B4.ViewObject.DrawStyle = "Dashed"

B5 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6], degree=3)
B5.Label = "B_cub+quad"
B5.ViewObject.DrawStyle = "Dotted"

B6 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6, p7], degree=3)
B6.Label = "B_cub+cub"
B6.ViewObject.LineWidth = 2

B7 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6, p7, p8], degree=3)
B7.Label = "B_cub+cub+lin"
B7.ViewObject.DrawStyle = "Dashed"

doc.recompute()
}}
}}
{{Docnav/it|[[Draft BezCurve/it|Curva di Bézier]]|[[Draft_Label/it|Etichetta]]|[[Draft_Module/it|Draft]]|IconL=Draft BezCurve.svg |IconC=Workbench_Draft.svg|IconR=Draft_Label.svg}}


{{Draft Tools navi/it}}


{{Userdocnavi/it}}
{{Docnav/it
|[[Draft_BSpline/it|BSpline]]
|[[Draft_BezCurve/it|Curva di Bézier]]
|[[Draft_Workbench|Draft/it]]
|IconL=Draft_BSpline.svg
|IconR=Draft_BezCurve.svg
|IconC=Workbench_Draft.svg
}}


{{Draft Tools navi{{#translation:}}}}
{{clear}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 15:40, 8 December 2023

Curva di Bézier cubica

Posizione nel menu
Drafting → Strumenti Bezier → Curva di Bézier cubica
Ambiente
Draft, Arch
Avvio veloce
Nessuno
Introdotto nella versione
-
Vedere anche
Curva di Bézier, BSpline

Descrizione

Il comando Curva di Bézier cubica crea una curva di Bézier di terzo grado (quattro punti richiesti).

La curva di Bézier è una delle curve più utilizzate nella computer grafica. Questo comando consente di creare una spline continua composta da diversi segmenti Bézier di 3° grado, in modo simile allo strumento Bézier in [1]. Una curva di Bézier generale di qualsiasi grado può essere creata con il comando Curva di Bézier.

I comandi Curva di Bézier e Curva di Bézier cubica utilizzano punti di controllo per definire la posizione e la curvatura della spline. Il comando BSpline, invece, specifica i punti esatti attraverso i quali passerà la curva.

Spline composta da tre segmenti cubici di Bézier. Il primo segmento è definito da quattro punti. I segmenti successivi riutilizzano due punti del segmento precedente e pertanto richiedono solo due punti aggiuntivi.

Utilizzo

Vedere anche: Barra di Draft, Aggancio e Vincolare.

  1. Esistono diversi modi per invocare il comando:
    • Premere il pulsante Curva di Bézier cubica.
    • Selezionare l'opzione Drafting → Strumenti Bézier → Curva di Bézier cubica dal menu.
  2. Si apre il pannello delle attività Curva di Bézier cubica. Vedere Opzioni per maggiori informazioni.
  3. Non è possibile inserire i punti tramite il pannello delle attività.
  4. Per i seguenti Modelli di navigazione con mouse è necessario tenere premuto un tasto della tastiera:
    • Se si sta utilizzando Navigazione OpenInventor, il tasto Ctrl deve essere tenuto premuto per tutta la durata del comando.
    • Se si sta utilizzando Navigazione Gesture il tasto Alt deve essere tenuto premuto per ogni sequenza click-hold-release, ma è anche possibile tenere premuto questo tasto per tutta la durata del comando.
  5. Selezionare il primo punto nella Vista 3D e tenere premuto il pulsante del mouse (1), questo è il primo punto finale.
  6. Trascinare il puntatore su un altro punto nella Vista 3D e rilasciare il pulsante del mouse (2), questo è il primo punto di controllo.
  7. Spostare il puntatore su un altro punto nella Vista 3D, selezionare questo punto e tenere premuto il pulsante del mouse (3), questo è il secondo punto finale.
  8. Spostare il puntatore su un altro punto nella Vista 3D per regolare la curvatura finale del segmento e rilasciare il pulsante del mouse (4), questo è il secondo punto di controllo.
  9. Ora si ha una curva di Bézier di 3° grado.
  10. Facoltativamente ripetere il processo di clic e tenere premuto (5) e trascinare e rilasciare (6) per aggiungere più segmenti.
  11. Ogni segmento successivo utilizzerà rispettivamente il secondo punto finale e il secondo punto di controllo del segmento precedente come primo punto finale e primo punto di controllo.
  12. Premere Esc o il pulsante Chiudi per terminare il comando.

Opzioni

Vedere Curva di Bézier.

Note

  • Una Curva di Bézier cubica può essere modificata con il comando Modifica.

Proprietà

Vedere Curva di Bézier.

Script

Vedere anche: Autogenerated API documentation e Script di base per FreeCAD.

Per informazioni di carattere generale vedere Curva di Bézier. Una Bézier cubica viene creata passando l'opzione degree=3 a makeBezCurve().

Per ogni segmento di Bézier cubica devono essere utilizzati quattro punti, di cui i due punti estremi indicano dove passa la spline e i due punti intermedi sono punti di controllo.

  • Se vengono assegnati solo 3 punti, viene invece creata una Bézier quadratica, con un solo punto di controllo..
  • Se vengono assegnati solo 2 punti, viene creata una Bézier lineare, ovvero una linea retta.
  • Se vengono assegnati 5 punti, i primi 4 creano un segmento di Béezier cubico; il quarto e il quinto punto vengono utilizzati per creare una linea retta.
  • Se vengono assegnati 6 punti, i primi 4 creano un segmento cubico di Bézier; il quarto e gli altri due punti vengono utilizzati per creare un segmento quadratico di Bézier.
  • Se vengono assegnati 7 punti, i primi 4 creano un segmento cubico di Bézier; il quarto e gli altri tre punti sono usati per creare un secondo segmento cubico di Bézier.
  • In generale, l'ultimo punto in un gruppo di quattro è condiviso al massimo con i seguenti tre punti per creare un altro segmento di Bézier.
  • * Per avere curve morbide, senza segmenti diritti, il numero di punti dovrebbe essere 3n + 1 o 3n, dove n è il numero di segmenti, per n >= 1.

Esempi di curve di Bézier prodotte utilizzando 2, 3, 4, 5, 6, 7 e 8 punti. Le linee continue indicano segmenti cubici di Bézier; le altre linee sono quadratiche o lineari.

Esempio:

import FreeCAD as App
import Draft

doc = App.newDocument()

p1 = App.Vector(-3500, 0, 0)
p2 = App.Vector(-3000, 2000, 0)
p3 = App.Vector(-1100, 2000, 0)
p4 = App.Vector(0, 0, 0)

p5 = App.Vector(1500, -2000, 0)
p6 = App.Vector(3000, -1500, 0)
p7 = App.Vector(5000, 0, 0)
p8 = App.Vector(6000, 1500, 0)
rot = App.Rotation()

c1 = Draft.make_circle(100, placement=App.Placement(p1, rot), face=False)
c1.Label = "B1_E1"
c2 = Draft.make_circle(50, placement=App.Placement(p2, rot), face=True)
c2.Label = "B1_c1"
c3 = Draft.make_circle(50, placement=App.Placement(p3, rot), face=True)
c3.Label = "B1_c2"
c4 = Draft.make_circle(100, placement=App.Placement(p4, rot), face=False)
c4.Label = "B1_E2"
c5 = Draft.make_circle(50, placement=App.Placement(p5, rot), face=True)
c5.Label = "B2_c3"
c6 = Draft.make_circle(50, placement=App.Placement(p6, rot), face=True)
c6.Label = "B2_c4"
c7 = Draft.make_circle(100, placement=App.Placement(p7, rot), face=False)
c7.Label = "B2_E3"
c8 = Draft.make_circle(50, placement=App.Placement(p8, rot), face=True)
c8.Label = "B3_c5"

doc.recompute()

B1 = Draft.make_bezcurve([p1, p2], degree=3)
B1.Label = "B_lin"
B1.ViewObject.DrawStyle = "Dashed"

B2 = Draft.make_bezcurve([p1, p2, p3], degree=3)
B2.Label = "B_quad"
B2.ViewObject.DrawStyle = "Dotted"

B3 = Draft.make_bezcurve([p1, p2, p3, p4], degree=3)
B3.Label = "B_cub"
B3.ViewObject.LineWidth = 4

B4 = Draft.make_bezcurve([p1, p2, p3, p4, p5], degree=3)
B4.Label = "B_cub+lin"
B4.ViewObject.DrawStyle = "Dashed"

B5 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6], degree=3)
B5.Label = "B_cub+quad"
B5.ViewObject.DrawStyle = "Dotted"

B6 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6, p7], degree=3)
B6.Label = "B_cub+cub"
B6.ViewObject.LineWidth = 2

B7 = Draft.make_bezcurve([p1, p2, p3, p4, p5, p6, p7, p8], degree=3)
B7.Label = "B_cub+cub+lin"
B7.ViewObject.DrawStyle = "Dashed"

doc.recompute()