Domanda:
Gestire i vettori per la grafica a doppio legame
obackhouse
2017-10-10 21:39:40 UTC
view on stackexchange narkive permalink

Sto lavorando a un piccolo strumento di grafica molecolare per la visualizzazione di molecole in stile palla e bastone. Ho problemi a gestire l'algebra lineare per posizionare i due legami nei doppi legami. La mia algebra lineare è, purtroppo, molto debole. Riesco a seguire la notazione ma ho difficoltà a lavorare a modo mio attraverso l'algebra logica.

Se sto complicando eccessivamente questo in modo significativo, apprezzerei alcune indicazioni su come farlo. Ecco il mio lavoro fino ad ora:

enter image description here

Al momento ho le coordinate atomiche di ogni atomo. Tutti gli atomi di cui sopra si trovano in un piano a causa della natura $ sp ^ 2 $ dell'atomo $ i $, sebbene l'orientamento del piano sia arbitrario.

$ \ textbf i $, $ \ textbf j $ e $ \ textbf k $ sono coordinate atomiche e $ \ textbf a $ e $ \ textbf b $ sono vettori tra di loro.

L'orientamento del doppio legame deve significare che entrambe le linee nel doppio bond sono posizionati nel piano e ho quantificato l'aereo come:

$ \ textbf {a} \ times \ textbf {b} \ cdot (\ textbf {r} - \ textbf {r} _0 ) = 0 $

dove $ \ textbf r $ è un qualsiasi vettore nel piano e $ \ textbf {r} _0 $ è un qualsiasi altro punto nel piano.

Posso dico anche che i punti che cerco su ciascun atomo formano vettori con il centro dei rispettivi atomi a $ 90 ^ \ text {o} $ a $ \ textbf b $, e che il raggio in cui sono posizionati questi punti è vincolato un valore costante (e quindi anche la lunghezza di detto vettore). Se chiamiamo questo vettore $ \ textbf l $ abbiamo quindi:

$ (\ textbf {a} \ times \ textbf {b}) \ cdot (\ textbf {l} - \ textbf {i} ) = 0 $

$ | \ textbf {l} | = \ text {const}. $

$ \ textbf {l} \ cdot \ textbf {b} = 0 $

dove $ \ textbf {a} $, $ \ textbf {b} $ e $ \ text {i} $ sono tutte cose che sono numericamente disponibili per me.

Mi sembra che, sulla base di vincoli geometrici, queste relazioni algebriche siano sufficienti per trovare solo i 4 punti che voglio. Ma il mio io amatoriale non ha idea di come farlo.

Immagino che dovrebbe esserci un ulteriore vincolo che ruoterebbe un piano di legame multiplo lungo $ \ mathbf b $ in modo che la proiezione di quel piano sullo schermo di un computer sia sempre massima (in modo che la visibilità di più legami sia indipendente dalla rotazione). Non chiedermi come implementarlo, è solo un suggerimento :)
Sì, pensavo che fosse un'opzione, ma per ora l'ho scartata, a favore di avere sempre il doppio legame nel piano $ sp ^ 2 $.
Una risposta:
Geoff Hutchison
2017-10-12 22:08:30 UTC
view on stackexchange narkive permalink

Non sono sicuro di sapere esattamente cosa vuoi, ma tale codice è implementato in Avogadro e in altri posti.

La prima cosa da capire è che l'atomo non contrassegnato nel tuo aereo è anche il tuo amico. Puoi calcolare il piano di adattamento migliore usando tutti e 4 gli atomi.

Stai rendendo il tuo lavoro troppo duro, però. Se avevi un legame singolo, traccia semplicemente una linea o un cilindro tra l'atomo i e j”.

Quindi la domanda a portata di mano è come spostare due cilindri leggermente nel piano del legame. Ci sono alcuni modi per farlo. (Avogadro calcola il piano di adattamento migliore per la molecola. Alcune persone proiettano verso il piano dello schermo.)

Il mio consiglio è di rendersi conto che l'atomo k nel diagramma è in in una direzione e l'atomo non contrassegnato è nell'altra. Chiamiamo quell'altro atomo l . Puoi calcolare il vettore tra di loro: k - l . In pratica, l'atomo i è a metà di questo vettore. Quindi vuoi spostare il vettore b nel diagramma di una piccola quantità, diciamo 0,1 in una direzione lungo quel vettore k - l , e 0.1 nella direzione opposta.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...