aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/notasP3D/cilindricos-y-conicos.md74
1 files changed, 68 insertions, 6 deletions
diff --git a/src/notasP3D/cilindricos-y-conicos.md b/src/notasP3D/cilindricos-y-conicos.md
index 6343d78..c395f60 100644
--- a/src/notasP3D/cilindricos-y-conicos.md
+++ b/src/notasP3D/cilindricos-y-conicos.md
@@ -39,14 +39,13 @@ void cono(float r, float h, int N){
// N: número de divisiones en la base
// variables auxiliares:
- float x,y,angulo;
+ float x,y;
beginShape(TRIANGLE_FAN);
vertex(0,0,h); // vértice de la punta
// ciclo para los vértices de la base
- for(int i=0;i<=N;i=i+1){
- angulo = i*TWO_PI/N;
+ for(float angulo=0; angulo<=TWO_PI; angulo=angulo+TWO_PI/N){
x = r*cos(angulo);
y = r*sin(angulo);
vertex(x,y,0);
@@ -55,6 +54,8 @@ void cono(float r, float h, int N){
}
```
+
+
## Cono con base aleatoria
![](/img/conos-aleatorios.png)
@@ -147,11 +148,10 @@ void cilindro(float r, float h, int N){
// N: número de divisiones en la base
// variables auxiliares
- float x,y,angulo;
+ float x,y;
beginShape(QUAD_STRIP);
- for(int i=0; i<=N; i=i+1){
- angulo = i*TWO_PI/N;
+ for(float angulo=0; angulo<=TWO_PI; angulo=angulo+TWO_PI/N){
x = r*cos(angulo);
y = r*sin(angulo);
// vértice en la base
@@ -163,6 +163,35 @@ void cilindro(float r, float h, int N){
}
```
+### Variación: Cilindro con rango de ángulo
+
+Esta función permite determinar el ángulo de inicio y fin del cilindro. Nota que los ángulos se especifican en radianes.
+
+```java
+void cilindro(float r, float h, int N, float anguloInicial, float anguloFinal){
+// dibuja un cilindro tradicional, en un rango específico de ángulo
+// r: radio de la base
+// h: altura
+// N: número de divisiones en la base
+// anguloInicial: a partir de qué ángulo empieza el cilindro (en radianes)
+// anguloFinal: en qué ángulo termina el cilindro (en radianes)
+
+ // variables auxiliares
+ float x,y;
+
+ beginShape(QUAD_STRIP);
+ for(float angulo=anguloInicial; angulo<=anguloFinal; angulo += (anguloFinal-anguloInicial)/N){
+ x = r*cos(angulo);
+ y = r*sin(angulo);
+ // vértice en la base
+ vertex(x,y,0);
+ // vértice en la tapa
+ vertex(x,y,h);
+ }
+ endShape();
+}
+```
+
## Cilindro con base/tapa aleatoria
![](/img/cilindros-aleatorios.png)
@@ -311,6 +340,39 @@ void cilindroCono(float r1, float r2, float h, int N){
}
```
+### Variación: rango de ángulos
+
+Esta versión de la función permite especificar el ángulo inicial y final de la figura. Nota que los ángulos son en radianes:
+
+```java
+void cilindroCono(float r1, float r2, float h, int N, float anguloInicial, float anguloFinal) {
+ // dibuja un cilindro con base y tapa de diferente radio
+ // r1: radio de la base
+ // r2: radio de la tapa
+ // h: altura
+ // N: número de divisiones en la base/tapa
+ // anguloInicial: a partir de qué ángulo empieza el cilindro (en radianes)
+ // anguloFinal: en qué ángulo termina el cilindro (en radianes)
+
+ // variables auxiliares
+ float x, y;
+
+ beginShape(QUAD_STRIP);
+ for (float angulo=anguloInicial; angulo<=anguloFinal; angulo += (anguloFinal-anguloInicial)/N) {
+ x = r1*cos(angulo);
+ y = r1*sin(angulo);
+ // vértice en la base
+ vertex(x, y, 0);
+
+ x = r2*cos(angulo);
+ y = r2*sin(angulo);
+ // vértice en la tapa
+ vertex(x, y, h);
+ }
+ endShape();
+}
+```
+
## Cono-cilindro 2
![](/img/cilindrocono-complejo.png)
Un proyecto texto-plano.xyz