Grafika, geometria, képfeldolgozás

Grafikáról

Graphics[primitívek, opciók],
Show[g1, g2, ops]

Primitívek

Line, Point,Polygon,Rectangle,Circle,Disk

Arrow,BezierCurve,BSplineCurve,

Text

Plot[BesselK[1,x],{x,-3,3},Ticks->Automatic,Epilog->Inset[Graphics[{Red,Thick,Circle[{1,1},{0.5,1},{π/3,2π}]}]]]

Plot[BesselK[1,x],{x,-3,3},Ticks->Automatic,Prolog->Inset[Graphics[{Red,Thick,Circle[{1,1},{0.5,1},{π/3,2π}]}]]]

Graphics[{LightGray,Disk[],Inset[Plot[BesselJ[1,x],{x,-3,3}]]}]

Locator

Manipulate[Graphics[Line[{{0,0},p}],PlotRange->2],{{p,{1,1}},Locator}]

DynamicModule[{pt={1,0},A=(({{-1.1, 0.9}, {-1.4, 0.3}}))},LocatorPane[Dynamic[pt],Dynamic@ParametricPlot[MatrixExp[A t,pt],{t,0,10},PlotRange->5]]]

DynamicModule[{pts={{0,0},{1,1},{2,0},{3,2}}},LocatorPane[Dynamic[pts],Dynamic[Plot[InterpolatingPolynomial[pts,x],{x,0,3},PlotRange->3]]]]

DynamicModule[{v1={2,0},v2={-1,1}},Dynamic@Graphics[{Circle[],Red,GeometricTransformation[Circle[],Transpose[{v1,v2}]],Green,Line[{{0,0},v1}],Line[{{0,0},v2}],Locator[Dynamic[v1]],Locator[Dynamic[v2]]},PlotRange->3]]

GraphicsComplex (GraphicsGroup)

v=Table[15{Cos[t],Sin[t]},{t,0,4Pi,4Pi/5}];

g=Graphics[GraphicsComplex[v,{Point[{1,2,4,5,6,3,1,2}],Green,Line[{1,2,3,4,5,6,3,2,1,5}]}]]

Options[g,AspectRatio]

FullOptions[g]

Direktívák

(Absolute)PointSize,(Absolute)Thickness,(Absolute)Dashing,PointSize,

RGBColor, CMYKColor, GrayLevel, Hue, Opacity

Hue[h,s,b]
specifies colors in terms of hue, saturation and brightness.

Hue[h] runs through red, yellow, green, cyan, blue, magenta, and back to red

Directive[]

Csomagolók, borítók

Tooltip, Hyperlink, Style

Plot[Tooltip[Sin[x],"színusz"],{x,0,2π}]

Button, Dynamic, EventHandler, PopupWindow

Button[címke, akció]

Button["Click Here",Print[10!]]

DynamicModule[{pt={0,0}},Framed@Graphics[Inset[Button["Click Me",pt=RandomReal[{-1,1},2]],Dynamic[pt]],PlotRange->1]]

EventHandler

DynamicModule[{col=Green},EventHandler[Dynamic[Graphics[{col,Disk[]},ImageSize->Tiny]],{"MouseClicked":>(col=col/.{Red->Green,Green->Red})}]]

Dynamic@Module[{hour,min,sec,ht,mt,st},Clock[];{hour,min,sec}=Take[DateList[],-3];ht=Pi/2-2Pi hour/12-2Pi min/720;mt=Pi/2-2Pi min/60;st=Pi/2-2Pi Floor[sec]/60;Graphics[{Arrowheads[0.1],Arrow[{{0,0},0.6{Cos[ht],Sin[ht]}}],Arrow[{{0,0},0.85{Cos[mt],Sin[mt]}}],Line[{{0,0},0.85{Cos[st],Sin[st]}}],PointSize[Medium],Table[Point[0.9{Cos[i],Sin[i]}],{i,0,2Pi,Pi/6}],Point[{0,0}],Circle[]}]]

Opciók

AspectRatio, PlotRange, ImageSize, PlotRegion,

ListPlot[Table[Prime[n],{n,20}]]

InputForm[%]

Axes, Ticks, Dashed

makeDashed[ g_Graphics ]:=g/.l_Line:>{Dashed,l}

makeDashed[]

Epilog,Prolog,

Frame,GridLines,

A *Plot* automatikusan Graphics objektumot állít elő.

Graphics[{Thick,Green,Rectangle[{0,-1},{2,1}],Red,Disk[],Blue,Circle[{2,0}],Yellow,Polygon[{{2,0},{4,1},{4,-1}}],Purple,Arrowheads[Large],Arrow[{{4,3/2},{0,3/2},{0,0}}],Black,Dashed,Line[{{-1,0},{4,0}}]}]

ReliefPlot[Table[i+Sin[i^2+j^2],{i,-4,4,.03},{j,-4,4,.03}],ColorFunction->"SunsetColors"]

InputForm[%[[0]]]

InputForm[%%[[-1]]]

Grafikus programozás

grlist = {Red,PointSize[.02], Point[{0, 0}], Point[{1, 1}], 
   Line[{{0, 1}, {1, 0}, {2, 1}}], Thickness[.02], Blue,Circle[{1/2, 1/3}, 1/2], 
   GrayLevel[.7], Rectangle[{1.2, 0.2}, {1.8, .4}]};

Graphics[grlist, AspectRatio -> Automatic]

ClearAll[displace]; 
displace[object_, offset_] := displace[object, offset, 1]

displace[l_List, offset_, scale_] := Map[displace[#, offset, scale] &, l]

displace[Point[p_], offset_, scale_] := Point[offset + scale p]

displace[Rectangle[ll_, ur_], offset_, scale_] := 
 Rectangle[offset + scale ll, offset + scale ur]

displace[Circle[ctr_, rad_], offset_, scale_] := 
 Circle[offset + scale ctr, scale rad]

displace[Line[ptlist_], offset_, scale_] := 
 Line[(offset + scale #) & /@ ptlist]

displace[object_, _, _] := object

Graphics[{grlist, displace[grlist, {.3, 2}], displace[grlist, {2, 1.5}, .5], 
  displace[grlist, {3, 1}, {.4, 2}]}, AspectRatio -> Automatic]

Graphics3D[primitívek, opciók]

Cuboid,Cone,Cylinder,Sphere,Tube

Graphics3D[Tube[BSplineCurve[{{1,1,-1},{2,2,1},{3,3,-1},{3,4,1}}],0.1]]

Graphics3D[{Red,CapForm["Round"],Tube[BSplineCurve[{{0,0,0},{1,1,0},{1.2,2,0},{.6,1.8,0},{0,1.3,0},{-.6,1.8,0},{-1.2,2,0},{-1,1,0},{0,0,0}}],{.1,.1,.1,.1,.3,.1,.1,.1,.1}]}]

Boxed, BoxRatios,ViewPoint

Graphics3D[Table[With[{p={i,j,k}/3},{RGBColor[p],Opacity[.75],Cuboid[p,p+.25]}],{i,3},{j,3},{k,3}]]

Animate, .avi, .gif

Képfeldolgozásról

?*Image*

Import

Image[matrix]

Image[RandomReal[{0,1},{8,12}],ImageSize->400]

Image[RandomReal[{0,1},{8,12,4}],ImageSize->400]

Image[RandomReal[{0,1},{8,12,3}],ImageSize->400]

MorphologicalComponents[(({{0, 0, 1, 2}, {0, 0, 3, 4}, {5, 0, 0, 0}, {6, 7, 0, 0}}))] // MatrixForm

MorphologicalPerimeter[leo=, 0.25]

Megfordítás

ArrayRules[ImageData[Image[{{0,1},{1,0}}, "Bit"]]]

Head[%]

lena=Import["ExampleData/lena.tif"];

Image[,"Real"]

Kontraszt, fényesség

ImageAdjust[lena,{0.5,0.1}]

ColorSeparate[lena]

ImageTake[lena,50]

Áttűnés

Manipulate[ImageAdd[ImageMultiply[lena,p],ImageMultiply[leo,1-p]],{p,0,1}]

ImageApply[UnitStep[#-0.5]&,lena]

ImageHistogram[lena,Appearance->"Separated"]

GraphicsRow[{Dilation[lena,2],lena,Erosion[lena,2]},Frame->All,Background->{Red,Blue,Green}]

Hangokról

Play,Sound

Play eredménye Sound objektum, ami gomb, ha megnyomjuk, lejátszódik.

Play[Sin[440 2Pi t],{t,0,1}](*normál A*)

Play[Sin[300t Sin[20t]],{t,0,1}](*frekvenciamoduláció*)

Play[Sign[Sin[1000t]],{t,0,1}]

Plot[Sign[Sin[10t]],{t,0,5},PlotLabel->Style["Négyszögjel"]]

Play[FractionalPart[500t],{t,0,1}]

Plot[FractionalPart[t],{t,0,5},Epilog->Inset[Framed@Style["Fűrészfog",Bold,CMYKColor[0.1,0.3,1,0.2],16],{2.5,0.5}]]

Play[RiemannSiegelZ[1000t],{t,0,1}]

Play[{t Sin[2000t],(1-t) Sin[2000t]},{t,0,1}](*2 sztereo csatorna*)

Play[Sum[Sin[2000 2^t n t],{n,5}],{t,0,4}]

Play[(2+Cos[40t])Sin[2000t],{t,0,1}]

Sound[SoundNote[#,1.75, "Trumpet"]&/@{0,7,12}]

Tuba,Violine,EnglishHorn,JazzGuitar,Clarinet,Choir; ütőhangszer-stílusok (...)

<<Music`

MusicScale[JustMajor,440,3]

Tárcsázás

fl=Flatten[Outer[List,{697,770,852},{1209,1336,1477}],1];

Grid[Partition[MapIndexed[Button[First[#2],EmitSound[Play[Total[Sin[2π # t]&/@#],{t,0,.1}]]]&,fl],3]]

Beszéd

Speak

Speak["this is some text"]

Button["press me",Speak["thank you thank you thank you thank you"]]

BarChart[{1,Button[2,Speak[2]],3}]

Görbék rekonstrukciója

T[s_]:=Array[(Subscript[t, #])[s]&,3];
Ν[s_]:=Array[(Subscript[n, #])[s]&,3];
B[s_]:=Array[(Subscript[b, #])[s]&,3]

X[s_]:=Join[T[s],Ν[s],B[s]]

frenet=Flatten[Thread/@{Array[((Subscript[t, #]))'[s]&,3]==κ[s] Ν[s],
Array[((Subscript[n, #]))'[s]&,3]==-κ[s]T[s]+τ[s]B[s],
Array[((Subscript[b, #]))'[s]&,3]==-τ[s]Ν[s]}]

ini=Flatten[Thread/@{Array[(Subscript[t, #])[0]&,3]==UnitVector[3,1],
Array[(Subscript[n, #])[0]&,3]==UnitVector[3,2],
Array[(Subscript[b, #])[0]&,3]==UnitVector[3,3]}]

ClearAll[ini];
ini=Thread[X[0]==Flatten[IdentityMatrix[3]]]

Column[Union[frenet,ini]/.{κ->((Sqrt[2])/2&),τ->((Sqrt[2])/2&)}]

ds=DSolve[Union[frenet,ini]/.{κ->((Sqrt[2])/2&),τ->((Sqrt[2])/2&)},X[s],s]

ParametricPlot3D[Integrate[T[s]/.ds,{s,0,t}],{t,0,8π}]//Timing

ViewPoint->{0,1,0}

ParametricPlot3D[Evaluate[Integrate[T[s]/.ds,{s,0,t}]],{t,0,8π},BoxRatios->{1,1,4},ViewPoint->{0,1,2},PlotStyle->Directive[{Brown,Thickness[0.02]}]]//Timing

ArrayFlatten

m={{1,2},{3,4}};

ArrayFlatten[{{0,0,m},{m,m,0}}]

Coeff[s_]:=ArrayFlatten[{{0,κ [s]IdentityMatrix[3],0},{-κ[s] IdentityMatrix[3],0,τ[s]IdentityMatrix[3]},{0,-τ[s]IdentityMatrix[3],0}}]

Coeff[s]

KroneckerProduct[{{0,κ[s],0},{-κ[s],0,τ[s]},{0,-τ[s],0}},IdentityMatrix[3]]//MatrixForm

Coeff[s]==KroneckerProduct[{{0,κ[s],0},{-κ[s],0,τ[s]},{0,-τ[s],0}},IdentityMatrix[3]]

Last/@frenet==Coeff[s].X[s]

Innen szebb

T[s_]:=Array[(Subscript[t, #])[s]&,3];
Ν[s_]:=Array[(Subscript[n, #])[s]&,3];
B[s_]:=Array[(Subscript[b, #])[s]&,3]

X[s_]:=Join[T[s],Ν[s],B[s]]

Eh[s_]:=KroneckerProduct[{{0,κ[s],0},{-κ[s],0,τ[s]},{0,-τ[s],0}},IdentityMatrix[3]]

Egy=Thread[D[#,s]&/@X[s]==Eh[s].X[s]]

ClearAll[ini];
ini=Thread[X[0]==Flatten[IdentityMatrix[3]]]

ds=DSolve[Union[Egy,ini]/.{κ->((Sqrt[2])/2&),τ->((Sqrt[2])/2&)},X[s],s]

ParametricPlot3D[Evaluate[Integrate[T[s]/.ds,{s,0,t}]],{t,0,8π},BoxRatios->{1,1,4},ViewPoint->{0,1,2},PlotStyle->Directive[{Brown,Thickness[0.02]}]]//Timing

ClearAll[GorbeRekonstrualo];
GorbeRekonstrualo[κval_,τval_]:=Module[{X,eh,egy,ini,ds},
X[s_]:=Array[(Subscript[x, #])[s]&,9];
eh[s_]:=KroneckerProduct[{{0,κval,0},{-κval,0,τval},{0,-τval,0}},IdentityMatrix[3]];
egy:=Thread[D[#,s]&/@X[s]==eh[s].X[s]];
ini:=Thread[X[0]==Flatten[IdentityMatrix[3]]];
ds:=DSolve[Union[egy,ini],X[s],s];
ParametricPlot3D[Evaluate[Integrate[Array[(Subscript[x, #])[s]&,3]/.ds,{s,0,t}]],{t,0,8π},BoxRatios->{1,1,4},ViewPoint->{0,1,2},PlotStyle->Directive[{Brown,Thickness[0.02]}]]
]

Cross[{cval,0,gval},#]&/@IdentityMatrix[3]

GorbeRekonstrualo[(Sqrt[2])/2,(Sqrt[2])/2]//MatrixForm

GorbeRekonstrualo[0,1]//MatrixForm

GorbeRekonstrualo[1,0]//MatrixForm

Demonstrációk

Hyperlink["Rák, tükör, tükörrák","http://demonstrations.wolfram.com/SameButDifferent/"]

Hyperlink["Interpolált zene","http://demonstrations.wolfram.com/MusicalLinesAndCurves/"]

Hyperlink["","http://demonstrations.wolfram.com/NonsenseSentenceGenerator/"]

Hyperlink["","http://demonstrations.wolfram.com/BookReader/"]

Házi feladatok

1. Egy kis komplex függvénytan

Oldjon meg egyet az alábbi feladatok közül:

Legyen L az 1-től i-ig terjedő irányított egyenesszakasz. (∫_L)(Re(z)+(((OverBar[z])ln(z))/(|z((|)^2))))dz=?

Írja fel az f(z):=(z/((z^2)+4)) függvény origó körüli Taylor-sorát, és  2i körüli, 3-ban konvergens Laurent-sorát.

(∫_(|z|=2))(1/((z^3)sin((z^2))))dz=? (A kört egyszer, pozitív irányban járjuk körbe az integrálás során.)

2. Rajzoljunk Venn-diagrammot 4 halmaz esetére

3. Nevek közös betű nélkül

Legyenek egy gráf csúcspontjai a következő nevek:

Anna,Ágota,Blanka,Edit,Emese,Emőke,Enikő,Erzsébet,Eszter,Etel,Ildikó,Janka,Judit,Kinga,Laura,Lili,Luca,Olga,Tünde,Vanda

Az élek azokat a neveket kötik össze, amelyeknek nincs közös betűjük (a nagy- és kisbetű között nem teszünk különbséget). Rajzoljuk meg a gráfot többféle eszközzel úgy, hogy a csúcsait a nevek megjelölik valamiképp.

4. Mutassunk példát a Locator vagy az EventHandler függvény értelmes alkalmazására

5*. Játsszuk le egy egyszerű dallam egy sorát.