                   Grupy punktowe w krystalografii: przekształcenia położenia punktu: Zadanie 2
                   © W.J. 2008-2012

Procedury i definicje systemowe:

kill(all)$

load(draw)$

number: true ; ratprint: false;

sa: float(sin(%pi/3))$ ca: float(cos(%pi/3))$ sa2: float(sin(2*%pi/3))$ ca2: float(cos(2*%pi/3))$

parametry1: [
line_width=1,
user_preamble="set size ratio 1",
color=black,
head_type = 'nofilled, head_length = .05, 
vector([-1,0],[2.1,0]), text:label(["y",1.1,-0.1]),
vector([0,1],[0,-2.1]), text:label(["x",-0.1,-1.1]),
implicit( x^2+y^2=1, x,-1.20,1.2, y,-1.2,1.2 ),

line_width=2,
implicit( (x-1)^2+(y-0)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x-0)^2+(y-1)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x-0)^2+(y+1)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x+1)^2+(y-0)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),

implicit( (x-sa)^2+(y-ca)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x-sa2)^2+(y-ca2)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x-ca)^2+(y+sa)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x-ca2)^2+(y+sa2)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),

implicit( (x+sa)^2+(y-ca)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x+sa2)^2+(y-ca2)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x+ca)^2+(y-sa)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),
implicit( (x+ca2)^2+(y-sa2)^2=0.0005, x,-1.2,1.2, y,-1.2,1.2 ),

line_width=1
] $

Definicje macierzy elementów symetrii:

L1:      matrix( [ 1, 0, 0], [ 0, 1, 0], [ 0, 0, 1]) $
C:       matrix( [-1, 0, 0], [ 0,-1, 0], [ 0, 0,-1]) $
P001:    matrix( [ 1, 0, 0], [ 0, 1, 0], [ 0, 0,-1]) $
P010:    matrix( [ 1, 0, 0], [ 0,-1, 0], [ 0, 0, 1]) $
P100:    matrix( [-1, 0, 0], [ 0, 1, 0], [ 0, 0, 1]) $
P110:    matrix( [ 0,-1, 0], [-1, 0, 0], [ 0, 0, 1]) $
P011:    matrix( [ 1, 0, 0], [ 0, 0,-1], [ 0,-1, 0]) $
P101:    matrix( [ 0, 0,-1], [ 0, 1, 0], [-1, 0, 0]) $
Pm110:   matrix( [ 0, 1, 0], [ 1, 0, 0], [ 0, 0, 1]) $
Pm101:   matrix( [ 0, 0, 1], [ 0, 1, 0], [ 1, 0, 0]) $
P0m11:   matrix( [ 1, 0, 0], [ 0, 0, 1], [ 0, 1, 0]) $
L2001:   P001.C $
L2010:   P010.C $
L2100:   P100.C $
L2110:   P110.C $
L2011:   P011.C $
L2101:   P101.C $
L2m110:  Pm110.C $ 
L2m101:  Pm101.C $
L20m11:  P0m11.C $
L4100:   matrix( [ 1, 0, 0], [ 0, 0,-1], [ 0, 1, 0]) $
L4010:   matrix( [ 0, 0, 1], [ 0, 1, 0], [-1, 0, 0]) $
L4001:   matrix( [ 0,-1, 0], [ 1, 0, 0], [ 0, 0, 1]) $
A4001:   L4001.C $
A4100:   L4100.C $
A4010:   L4010.C $

 
Zadanie 2: Oblicz wszystkie położenia związane obecnością osi 4-krotnej inwersyjnej o kierunku [001] i [010]
           jeśli znane jest jedno z tych położeń (współrzędne poniżej):
             

Pkt1: matrix([0.4], [0.4], [0.4]) $

A4[001]

[Pkt1, 
 Pkt2:             A4001.Pkt1, 
 Pkt3:       A4001.A4001.Pkt1, 
 Pkt4: A4001.A4001.A4001.Pkt1 ];

Teraz zilustrowanie na kole projekcji:

wxdraw2d(

parametry1,

if Pkt1[3,1]>0 then color= red else color=blue,
if Pkt1[3,1]>0 then 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),

if Pkt2[3,1]>0 then color= red else color=blue,
if Pkt2[3,1]>0 then 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),

if Pkt3[3,1]>0 then color= red else color=blue,
if Pkt3[3,1]>0 then 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),

if Pkt4[3,1]>0 then color= red else color=blue,
if Pkt4[3,1]>0 then 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 )
);

Inny punkt

Pkt1: matrix([0.7], [0.2], [0.4]) $

A4[001]

[Pkt1, 
 Pkt2:             A4001.Pkt1, 
 Pkt3:       A4001.A4001.Pkt1, 
 Pkt4: A4001.A4001.A4001.Pkt1 ];

Teraz zilustrowanie na kole projekcji:

wxdraw2d(
parametry1,
if Pkt1[3,1]>0 then color= red else color=blue,
if Pkt1[3,1]>0 then 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt2[3,1]>0 then color= red else color=blue,
if Pkt2[3,1]>0 then 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt3[3,1]>0 then color= red else color=blue,
if Pkt3[3,1]>0 then 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt4[3,1]>0 then color= red else color=blue,
if Pkt4[3,1]>0 then 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 )
);

Inna oś

Pkt1: matrix([0.4], [0.4], [0.4]) $

A4[010]

[Pkt1, 
 Pkt2:             A4010.Pkt1, 
 Pkt3:       A4010.A4010.Pkt1, 
 Pkt4: A4010.A4010.A4010.Pkt1 ];

Teraz zilustrowanie na kole projekcji:

wxdraw2d(
parametry1,
if Pkt1[3,1]>0 then color= red else color=blue,
if Pkt1[3,1]>0 then 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt2[3,1]>0 then color= red else color=blue,
if Pkt2[3,1]>0 then 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt3[3,1]>0 then color= red else color=blue,
if Pkt3[3,1]>0 then 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt4[3,1]>0 then color= red else color=blue,
if Pkt4[3,1]>0 then 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 )
);

Inny punkt

Pkt1: matrix([0.7], [0.2], [0.4]) $

A4[010]

[Pkt1, 
 Pkt2:             A4010.Pkt1, 
 Pkt3:       A4010.A4010.Pkt1, 
 Pkt4: A4010.A4010.A4010.Pkt1 ];

Teraz zilustrowanie na kole projekcji:

wxdraw2d(
parametry1,
if Pkt1[3,1]>0 then color= red else color=blue,
if Pkt1[3,1]>0 then 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt2[3,1]>0 then color= red else color=blue,
if Pkt2[3,1]>0 then 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt3[3,1]>0 then color= red else color=blue,
if Pkt3[3,1]>0 then 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt4[3,1]>0 then color= red else color=blue,
if Pkt4[3,1]>0 then 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 )
);

 
Extra 1
 

 
Znajdź wszystkie położenia punktów związanych symetrią A4y
 

Pkt1: matrix([0.7], [0.2], [0.4]) $ 

Znajdujemy przez zadziałanie 1x, 2x, 3x i 4x osią na punkt

[A4010.Pkt1,A4010.A4010.Pkt1,A4010.A4010.A4010.Pkt1,A4010.A4010.A4010.A4010.Pkt1];

Inaczej: przez zadziałanie 1x ale kolejno 4x na poprzedni wynik

Pkt2: A4010.Pkt1;

Pkt3: A4010.Pkt2;

Pkt4: A4010.Pkt3;

Pkt5: A4010.Pkt4;

Teraz zilustrowanie na kole projekcji:

wxdraw2d(
parametry1,
if Pkt1[3,1]>0 then color= red else color=blue,
if Pkt1[3,1]>0 then 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt1[2,1])^2 + (y-(-Pkt1[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt2[3,1]>0 then color= red else color=blue,
if Pkt2[3,1]>0 then 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt2[2,1])^2 + (y-(-Pkt2[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt3[3,1]>0 then color= red else color=blue,
if Pkt3[3,1]>0 then 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt3[2,1])^2 + (y-(-Pkt3[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 ),
if Pkt4[3,1]>0 then color= red else color=blue,
if Pkt4[3,1]>0 then 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.005, x,-1.2,1.2, y,-1.2,1.2 ) 
 else 
  implicit( (x-Pkt4[2,1])^2 + (y-(-Pkt4[1,1]))^2=0.002, x,-1.2,1.2, y,-1.2,1.2 )
);

 
 Extra 2
 

Rozkład punktów do poobracania na dowód, że tak właśnie jest w tej osi

m: [makelist(Pkt1[i,1],i,1,3),makelist(Pkt2[i,1],i,1,3),makelist(Pkt3[i,1],i,1,3),makelist(Pkt4[i,1],i,1,3)] ;

 draw3d(
        palette = [12,25,-21],
        points_joined = false,
        colorbox = false,
        point_type = filled_circle,
        point_size = 2,
        enhanced3d = [u+v-w,u,v,w], /* remember that variable names are arbitrary */
        points( m )
       ) $