Matematici: una sfida
- Breston
- Membro
- Messaggi: 84
- Iscritto il: 21/08/2014, 15:51
- Specialità: Nothing
- Uso: GM:Studio 2
- Contatta:
Re: Matematici: una sfida
Il tuo, la direzione tra due punti che coincidono non è definita, è proprio un problema concettuale.
-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: Matematici: una sfida
Per questo l'ho scritto... Come hai detto tu non esiste una direzione tra due punti che coincidono.
♥♥♥♥♥♥

♥♥♥♥♥♥

♥♥♥♥♥♥
Spoiler
- Breston
- Membro
- Messaggi: 84
- Iscritto il: 21/08/2014, 15:51
- Specialità: Nothing
- Uso: GM:Studio 2
- Contatta:
Re: Matematici: una sfida
Esatto, ma è un problema prodotto dall'algoritmo, non dalla funzione: sei tu che devi assicurarti di restare dentro al suo dominio.
In sostanza il codice andrebbe ripensato per risolvere il problema. La strada semplice è aggiungere l'eccezione dei punti coincidenti con un controllo if, altrimenti è possibile cercare di calcolare le direzioni diversamente (ci si può anche limitare a l prossimo ma maggiore di 0, ma non è una soluzione da matematici..
)
In sostanza il codice andrebbe ripensato per risolvere il problema. La strada semplice è aggiungere l'eccezione dei punti coincidenti con un controllo if, altrimenti è possibile cercare di calcolare le direzioni diversamente (ci si può anche limitare a l prossimo ma maggiore di 0, ma non è una soluzione da matematici..

-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: Matematici: una sfida
Qui siamo programmatori!Breston ha scritto:(ci si può anche limitare a l prossimo ma maggiore di 0, ma non è una soluzione da matematici..)

Comunque ho usato questo approccio perché qui stiamo parlando di riprodurre una gif con un algoritmo, dato che l'occhio umano è facilmente ingannabile, ho dato per scontato che invece di collassare tutti i vertici in un solo punto questi rimanessero leggermente distaccati.
♥♥♥♥♥♥

♥♥♥♥♥♥

♥♥♥♥♥♥
Spoiler
- Wolfrost
- Membro super
- Messaggi: 692
- Iscritto il: 03/08/2014, 13:08
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Pro
- Località: Una galassia lontana lontana...
- Contatta:
Re: Matematici: una sfida
Per chi si vuole cimentare in una sfida più o meno simile:

Ricreare questa gif sempre come effetto di transizione (un po' alla 007 eh ahahahah
)
Un'altra sfida, ricreare questa gif:


Ricreare questa gif sempre come effetto di transizione (un po' alla 007 eh ahahahah

Un'altra sfida, ricreare questa gif:

- Breston
- Membro
- Messaggi: 84
- Iscritto il: 21/08/2014, 15:51
- Specialità: Nothing
- Uso: GM:Studio 2
- Contatta:
Re: Matematici: una sfida
Qualcosa di più difficile di quel frattale no?
-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
- Breston
- Membro
- Messaggi: 84
- Iscritto il: 21/08/2014, 15:51
- Specialità: Nothing
- Uso: GM:Studio 2
- Contatta:
Re: Matematici: una sfida
e va bene..

Per ricreare la gif è sufficiente richiamare drawFractal con valori di steps da 0 a 7 (nell'img è a 11).
Codice: Seleziona tutto
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.util.ArrayList;
import java.util.List;
public class main extends JPanel{
private class Point
{
public float x,y;
public Point(float x, float y)
{
this.x = x;
this.y = y;
}
}
private class Segment
{
public Point a,b;
public Segment(Point A, Point B)
{
a = A;
b = B;
}
public Segment(float xa, float ya, float xb, float yb)
{
a = new Point(xa,ya);
b = new Point(xb,yb);
}
}
private Segment[] subdivideSegment(Segment segment)
{
Segment[] segs = new Segment[3];
segs[0] = new Segment(0,0,0,0);
segs[1] = new Segment(0,0,0,0);
segs[2] = new Segment(0,0,0,0);
Point A = segment.a, B = segment.b;
Point C = new Point((A.x+B.x)/2.0f, (A.y+B.y)/2.0f);
Point E,D;
float l; // Segment length
if(A.x == B.x)
{
// Vertical segment
l = Math.abs(A.y-B.y);
D = new Point(C.x+l/2.0f,C.y);
E = new Point(C.x-l/2.0f,C.y);
}
else
{
// Horizontal segment
l = Math.abs(A.x-B.x);
D = new Point(C.x,C.y+l/2.0f);
E = new Point(C.x,C.y-l/2.0f);
}
segs[0].a = C;
segs[0].b = B;
segs[1].a = C;
segs[1].b = D;
segs[2].a = C;
segs[2].b = E;
return segs;
}
private void drawFractal(Graphics2D g, int steps, float length)
{
List<Segment> toBeDrawed = new ArrayList<Segment>();
List<Segment> toBeSubdivided = new ArrayList<Segment>();
float l = length; // Segment length
float x = g.getClipBounds().width / 2f;
float y = g.getClipBounds().height / 2f;
toBeDrawed.add(new Segment(x,y,x+l,y));
toBeDrawed.add(new Segment(x,y,x-l,y));
toBeDrawed.add(new Segment(x,y,x,y+l));
toBeDrawed.add(new Segment(x,y,x,y-l));
toBeSubdivided.add(new Segment(x,y,x+l,y));
toBeSubdivided.add(new Segment(x,y,x-l,y));
toBeSubdivided.add(new Segment(x,y,x,y+l));
toBeSubdivided.add(new Segment(x,y,x,y-l));
for(int i = 0; i < steps; i++)
{
// For each segment s in toBeSubdivided
// subdivide s to get 3 more segs
// add the 3 segs to toBeSubdivided
// add the 2 external segs to toBeDrawed
// remove s from toBeSubdivided
List<Segment> newToBeSubdivided = new ArrayList<Segment>();
for(Segment s : toBeSubdivided)
{
Segment[] segs = subdivideSegment(s);
newToBeSubdivided.add(segs[0]);
newToBeSubdivided.add(segs[1]);
newToBeSubdivided.add(segs[2]);
toBeDrawed.add(segs[1]);
toBeDrawed.add(segs[2]);
}
toBeSubdivided = newToBeSubdivided;
}
// Draw the fractal
for(Segment s : toBeDrawed)
g.drawLine((int)s.a.x, (int)s.a.y, (int)s.b.x, (int)s.b.y);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
drawFractal(g2, 11, 300f);
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.getContentPane().add(new main());
f.setSize(800, 800);
f.setVisible(true);
}
}

Per ricreare la gif è sufficiente richiamare drawFractal con valori di steps da 0 a 7 (nell'img è a 11).
Ultima modifica di Breston il 26/11/2015, 0:45, modificato 3 volte in totale.
- Breston
- Membro
- Messaggi: 84
- Iscritto il: 21/08/2014, 15:51
- Specialità: Nothing
- Uso: GM:Studio 2
- Contatta:
Re: Matematici: una sfida
Sarà meglio che il prossimo sia più difficile.
- Wolfrost
- Membro super
- Messaggi: 692
- Iscritto il: 03/08/2014, 13:08
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Pro
- Località: Una galassia lontana lontana...
- Contatta:
Re: Matematici: una sfida
Ora ho davvero paura BrestonBreston ha scritto:Sarà meglio che il prossimo sia più difficile.


Re: Matematici: una sfida
Breston ha scritto:Sarà meglio che il prossimo sia più difficile.
Spoiler
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: Matematici: una sfida
Breston ha scritto:Sarà meglio che il prossimo sia più difficile.
Spoiler
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: Matematici: una sfida
Le regole delle varie sfide sono:Nix ha scritto:Breston ha scritto:Sarà meglio che il prossimo sia più difficile.Spoiler
Wolfrost ha scritto:Sareste capaci di riprodurre lo stesso ed identico effetto con Game Maker?
Wolfrost ha scritto:Altra sfida: ricreare questa gif
Wolfrost ha scritto:Ricreare questa gif sempre come effetto di transizione (un po' alla 007 eh ahahahah)
Un'altra sfida, ricreare questa gif:
Siccome non è un'animazione si suppone che non lo si deve usare come effetto di transizione e quindi la regola sia riprodurre l'immagine con game maker o riprodurre l'immagine in maniera più identica possibile.Wolfrost ha scritto:Dovrete ricreare gli effetti qui proposti
Ma non solo imitando la gif, dovete strutturare ogni effetto come se fosse un effetto di transizione da una room ad un'altra!
Codice: Seleziona tutto
draw_sprite(sprite_nix, 0, 0, 0);
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
- CaptainOlon
- Membro attivo
- Messaggi: 441
- Iscritto il: 30/07/2011, 14:56
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Pro
- Località: Salerno
- Contatta:
- Breston
- Membro
- Messaggi: 84
- Iscritto il: 21/08/2014, 15:51
- Specialità: Nothing
- Uso: GM:Studio 2
- Contatta:
Re: Matematici: una sfida
Ok, Nix, non riesco nemmeno ad immaginare che oggetto matematico sia
Scrivi

Scrivi
Re: Matematici: una sfida
Si chiama due ore senza niente da fare.Breston ha scritto:Ok, Nix, non riesco nemmeno ad immaginare che oggetto matematico sia![]()
Scrivi
Non è nessun oggetto matematico comunque, era uno scherzo.
.
-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: Matematici: una sfida
Ok, che ho un computer poco potente, ma da qui a farmi crashare istantaneamente il browser ce ne vuole...Nix ha scritto:Si chiama due ore senza niente da fare.Breston ha scritto:Ok, Nix, non riesco nemmeno ad immaginare che oggetto matematico sia![]()
Scrivi
Non è nessun oggetto matematico comunque, era uno scherzo.
.

♥♥♥♥♥♥

♥♥♥♥♥♥

♥♥♥♥♥♥
Spoiler
Re: Matematici: una sfida
È un'immagine grande 16000x16000.Solid Snake ha scritto:Ok, che ho un computer poco potente, ma da qui a farmi crashare istantaneamente il browser ce ne vuole...
Chi c’è in linea
Visitano il forum: Nessuno e 18 ospiti