Oppure

Loading
22/10/17 10:20
AldoBaldo
Buongiorno.

Com'è tipico di quelli che fan le cose per il gusto di farle, ho messo in piedi un'altra cosa lasciando da parte quella che stavo facendo. In particolare, sto tentando di fare un programmino che riceva in ingresso un percorso di quelli caratteristici del formato SVG ("d="M10,10 l100,100, h-50", per intendersi) e lo traduca automaticamente in codice C++ per GDI+ bell'e pronto.

Al momento, il mio programmino genera correttamente il file di intestazione e il file di implementazione per tutti i comandi specificati nella documentazione di SVG sulla quale son riuscito a mettere le mani, tranne il comando 'a' e quello 'A' (non è male, perché ho già implementato la sfilza dei comandi Mm, Zz, Ll, Hh, Vv, Cc, Ss, Qq e Tt, che per me non è poco).

Il problema è che passare dalla parametrizzazione basata su "endpoint" di SVG a quella basata su rettangoli di GDI+ pare essere oltre le mie possibilità, non tanto per il codice in sè, quanto per le basi di geometria/trigonometria che sarebbe necessario padroneggiare ad un livello che non mi appartiene.

In effetti, la documentazione riporta delle formule per la conversione, ma non indica come tradurle in codice. Siccome quelle formule impiegano un tipo di notazione che non conosco e che sembra io non sia in grado di comprendere, sono bloccato. Lunghissime ricerche sul web si sono rivelate infruttuose (anche se sto cercando di convertire esempi che ho trovato in python e in java, ma si tratta di linguaggi diversi dal C, che non conosco e che a tratti mi confondono).

Qualcuno qui sarebbe tanto gentile da aiutarmi a trovare una via d'uscita?
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
22/10/17 11:25
Di quali formule parliamo?

P.S. Una curiosità ... perché questo thread non lo apri su iprogrammatori ?

Ultima modifica effettuata da 22/10/17 11:26
22/10/17 12:33
lumo
Postato originariamente da nessuno:

Di quali formule parliamo?

P.S. Una curiosità ... perché questo thread non lo apri su iprogrammatori ?


Avevo parlato brevemente con AldoBaldo di questa cosa in chat e l'ho invitato a esporsi :D


Aldo, come dice nessuno potresti indirizzarci alla sezione precisa della documentazione?
Inoltre per chiarire, il problema della traduzione ce l'hai per tutti i comandi giusto?
Ultima modifica effettuata da lumo 22/10/17 12:34
aaa
22/10/17 18:18
AldoBaldo
@lumo

Io ho un pdf, però c'è la stessa cosa anche qui:

svgwg.org/svg2-draft/…

Gli altri comandi li ho già implementati tutti di testa mia, e funzionano (lo so, è incredibile e sembra impossibile, però è così;). Sicuramente il mio codice sarà molto "naif", ma se uno si accontenta... :pat:

Se riuscirò a finire e rifinire il programmino, pur con tutti i difetti che non riuscirò a eliminare perché fanno parte del mio stile da autodidatta della domenica, lo condividerò qui.




@nessuno

Perché questa community qui è molto più accogliente e di larghe vedute. Di là ci vado volentieri perché c'è più movimento (più post sul forum) e dunque posso divertirmi un po', però è anche vero che circola un po' di spocchia da parte di alcuni. Che dovremmo dire? Del resto, ognuno ha la sua testa (e va bene così;).
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
22/10/17 18:28
Perché questa community qui è molto più accogliente e di larghe vedute. Di là ci vado volentieri perché c'è più movimento (più post sul forum) e dunque posso divertirmi un po', però è anche vero che circola un po' di spocchia da parte di alcuni. Che dovremmo dire? Del resto, ognuno ha la sua testa (e va bene così;).


Beh, qui l'età (e la preparazione) media è sicuramente molto inferiore, quindi è comprensibile che la cosa si rifletta sul grado di "accoglienza percepita", non so se mi sono spiegato. Per essere più precisi, qui si possono scrivere più "fesserie" rispetto all'altro posto ...

Dato che ritenevo l'argomento più consono all'altro forum, mi chiedevo quale criterio usassi nello scegliere qui o lì quando posti una domanda ... anche se vedo che lì, più che altro, rispondi e qui chiedi ...
22/10/17 18:56
AldoBaldo
Ipotizzo che chiedendo di là più che risposte otterrei altre domande. Il che in certe situazioni va bene, in altre no. In questa sicuramente no, perché il tipo di problema non è di quelli che sono in grado di risolvere da me.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
22/10/17 20:44
lumo
Postato originariamente da AldoBaldo:

Ipotizzo che chiedendo di là più che risposte otterrei altre domande. Il che in certe situazioni va bene, in altre no. In questa sicuramente no, perché il tipo di problema non è di quelli che sono in grado di risolvere da me.

Non ho capito per nulla il tuo ragionamento, comunque venendo al problema:

SVG usa i parametri descritti qui per tracciare un arco ellittico:
w3.org/TR/SVG/…

Mentre GDI+ vuole questi:
Status AddArc(
  [in]  REAL x,
  [in]  REAL y,
  [in]  REAL width,
  [in]  REAL height,
  [in]  REAL startAngle,
  [in]  REAL sweepAngle
);


Invece di fare una descrizione molto lunga, ti ho fatto un paio di disegni e ti ho scritto le formule dei valori che ti servono. In fondo trovi una legenda delle operazioni matematiche con vettori e matrici 2x2 che si vedono anche al link che hai fornito, così se sei curioso puoi guardarle.

(è un PDF)
mega.nz/
aaa
23/10/17 16:51
AldoBaldo
aaaaAAAAAARRRRRRGGGGGHHHhhhhhhfff... (accasciandosi al suolo in punto di morte) :rotfl:

Va be', dopo cena mi ci metto e vedo se riesco a capirci qualcosa. Così di getto mi manca un po' l'aria... :pat:
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.