Grafika a geometrie

Antonín Slavík
Matematicko-fyzikální fakulta UK

GraphicsComplex a 3D grafika

GraphicsComplex

GraphicsComplex slouží k úsporné reprezentaci rovinných i prostorových grafických objektů. Umožňuje zadat souřadnice bodů a později se na ně odvolávat pouze uvedením pořadového čísla bodu.

g=GraphicsComplex[{{0,0,0},{2,0,0},{2,2,0},{0,2,0},{1,1,2}},{PointSize[Large],Point[{1,2,3,4,5}],Polygon[{{1,2,5},{2,3,5},{3,4,5},{4,1,5},{1,2,3,4}}]}];

Graphics3D[g,Boxed->False,ImageSize->Small]

Ekvivalentní reprezentaci bez GraphicsComplex lze získat pomocí Normal:

Normal[g]

Mnoho funkcí v Mathematice vrací grafiku reprezentovanou jakou GraphicsComplex.

cPlot=ContourPlot[(x^3)+(y^3)==3 x y,{x,-3,3},{y,-3,3}]

Výsledkem je GraphicsComplex:

InputForm[cPlot]

Chceme-li seznam bodů tvořících křivku, použijeme Normal:

g=Normal[First[cPlot]]

pts=Cases[g,_Line,All][[1,1]];

Graphics[{Darker[Blue],Point[pts]},Axes->True]

VertexColors

Volba VertexColors umožňuje zadávat barvy vrcholů v Polygon, Line, Tube, Point nebo GraphicsComplex. Uvnitř útvaru se barvy interpolují.

Graphics[Polygon[{{-1,0},{1,0},{0,Sqrt[3]}},VertexColors->{Red,Green,Blue}],ImageSize->Small]

Graphics[{Thick,Line[{{0,0},{2,1}},VertexColors->{Red,Green}]}]

Každý vrchol může mít přiřazenu také průhlednost (Opacity).

Graphics3D[{GraphicsComplex[{{0,0,0},{2,0,0},{2,2,0},{0,2,0},{1,1,2}},Polygon[{{1,2,5},{2,3,5},{3,4,5},{4,1,5}}],VertexColors->{Red,Green,Yellow,Blue,Opacity[.8,White]}]}]

Světla

Volba Lighting specifikuje světla, která budou použita k nasvícení trojrozměrné scény.

Options[Graphics3D]

Lighting->Automatic znamená, že k osvětlení scény se použijí tři barevná světla (červené, modré a zelené).

Graphics3D[{White,Sphere[]}]

Lépe to vynikne na lesklém povrchu:

Graphics3D[{GrayLevel[.25],Specularity[White,10],Sphere[]}]

Lighting->"Neutral" použije bílá světla.

Graphics3D[{White,Sphere[]},Lighting->"Neutral"]

Srovnání Automatic vs. "Neutral" pro žlutou kouli:

Graphics3D[{Yellow,Sphere[]}]

Graphics3D[{Yellow,Sphere[]},Lighting->"Neutral"]

Lighting->{(Subscript[s, 1]),(Subscript[s, 2]),...,(Subscript[s, n])} znamená, že bude použito n světelných zdrojů. U každého zdroje můžeme zadat typ zdroje, jeho umístění a barvu.

Jeden bodový zdroj:

Graphics3D[{Sphere[{0,0,0}],Sphere[{3,0,0}],Sphere[{0,3,0}],Sphere[{3,3,0}]},Lighting->{{"Point",Green,{2,2,2}}},Boxed->False,Axes->True,AxesLabel->{x,y,z}]

Pozor: Světlo prochází tělesy.

Graphics3D[{Sphere[{0,0,0}],Sphere[{3,0,0}],Sphere[{6,0,0}]},Lighting->{{"Point",Green,{9,0,0}}}]

Tři bodové zdroje:

Graphics3D[Sphere[],Lighting->{{"Point",Red,{2,0,0}},{"Point",Green,{0,-2,0}},{"Point",Blue,{0,0,2}}}]

Zdroj rovnoběžného světla (umístěn v nekonečnu, paprsky mají směr vektoru spojujícího zadané dva body):

Graphics3D[Sphere[],Lighting->{{"Directional",Green,{{1,0,0},{0,0,0}}}}]

Reflektor (kuželový zdroj s osou spojující zadané dva body a zadaným úhlem mezi osou a pláštěm kužele):

Graphics3D[{White,Sphere[]},Lighting->{{"Spot",Yellow,{{0,0,1.5},{0,0,0}},(π/6)}}]

Manipulate[Graphics3D[{White,Sphere[]},Lighting->{{"Spot",Yellow,{{0,0,h},{0,0,0}},α}}],{{α,(π/6)},0,(π/2)},{h,1.5,4}]

Světlo přicházející ze všech směrů:

Graphics3D[Sphere[],Lighting->{{"Ambient",Green}}]

Lesklá tělesa (Specularity)

Matná tělesa (obvykle tělesa s drsnějším povrchem) odrážejí dopadající světlo do všech směrů (tzv. difúzní odraz). Intenzita odraženého světla je úměrná cos α, kde α je velikost úhlu mezi dopadajícím paprskem a normálou k povrchu (Lambertův zákon).

Graphics3D[{Blue,Sphere[]},Boxed->False,Lighting->{{"Directional",White,{{0,0,1},{0,0,0}}}},ImageSize->Small]

Od lesklých (hladkých) těles se světlo odráží podle zákona odrazu, na povrchu tělesa jsou vidět odlesky světel. Pro každé těleso lze specifikovat lesklou složku odraženého světla, která se přidává k difúzní složce.

Graphics3D[{Specularity[White,30],Blue,Sphere[]},Boxed->False,Lighting->{{"Directional",White,{{0,0,1},{0,0,0}}}},ImageSize->Small]

Syntaxe: Specularity[c,n].

c je barva, jejíž RGB složky se násobí RGB složkami dopadajícího světla. Odlesky proto mohou mít jinou barvu, než má samotný povrch tělesa.

Table[Graphics3D[{Black,Specularity[c,10],Sphere[]},Lighting->"Neutral"],{c,{Red,Green,Blue}}]

n je koeficient ostrosti: Intenzita odraženého světla ve směru, který svírá s ideálním odraženým paprskem úhel α, je úměrná (cos^n)α (Phongův model). Koeficient vyjadřuje ostrost zrcadlového odrazu, s většími hodnotami se odlesky stávají menšími a ostřejšími.

Manipulate[Plot[Cos[α °]^n,{α,0,90},PlotRange->{0,1}],{n,1,500,Appearance->"Labeled"}]

Příklady s různými koeficienty ostrosti:

Grid[Map[Table[Graphics3D[{Specularity[White,n],#,Sphere[]},Boxed->False,PlotLabel->n,Lighting->{{"Directional",White,{{0,0,1},{0,0,0}}}},ImageSize->120],{n,{1,3,5,7,10,20,50}}]&,{Orange,Lighter[Blue],Darker[Red]}]]

Lighting a Specularity fungují také ve spojení s Plot3D, ParametricPlot3D, ContourPlot3D atd.

Plot3D[((x y ((x^2)-(y^2)))/((x^2)+(y^2))),{x,-2,2},{y,-2,2},Boxed->False]

Plot3D[((x y ((x^2)-(y^2)))/((x^2)+(y^2))),{x,-2,2},{y,-2,2},Boxed->False,PlotStyle->{Lighter[Blue],Specularity[White,30]},Lighting->"Neutral"]

Při použití FaceForm[direktiva1,direktiva2] může každá strana plochy vypadat jinak.

Plot3D[((x y ((x^2)-(y^2)))/((x^2)+(y^2))),{x,-2,2},{y,-2,2},Boxed->False,PlotStyle->{FaceForm[Orange,Lighter[Blue]],Specularity[White,30]},Lighting->"Neutral"]

ContourPlot3D[(x^2) (y^2)+(x^2) (z^2)+(z^2) (y^2)==1,{x,-2,2},{y,-2,2},{z,-2,2},Axes->None,Mesh->False,Boxed->False,PlotPoints->40,ContourStyle->{FaceForm[Lighter[Blue],Orange],Specularity[White,30]}]

Mapování textury na plochu

img=;

Plot3D[Sin[x],{x,0,2 π},{y,-2,2},PlotStyle->Texture[img],Lighting->"Neutral",Mesh->False]

ParametricPlot3D[{Cos[u] (3+Cos[v]),Sin[u] (3+Cos[v]),Sin[v]},{u,0,2 π},{v,0,2 π},TextureCoordinateFunction->({2#4,#5}&),PlotStyle->Directive[Specularity[White,50],Texture[img]],Axes->False,Lighting->"Neutral",Mesh->None,Boxed->False]

ExampleData a Stanford Bunny

Ukázkové 3D modely v databázi ExampleData:

ExampleData["Geometry3D"]

Stanford Bunny je trojrozměrný model populární v 3D počítačové grafice. Vznikl v roce 1994 na Stanford University nasnímáním keramické figurky králíka pomocí 3D skeneru. Počítačový model se skládá z 69 451 trojúhelníků.

The Stanford 3D Scanning Repository,
http://graphics.stanford.edu/data/3Dscanrep/.

bunny=ExampleData[{"Geometry3D","StanfordBunny"}]

ExampleData[{"Geometry3D","StanfordBunny"},"PolygonCount"]

bunny[[1]]

Graphics3D[Prepend[bunny[[1]],RGBColor[0.66,0.33,0]],Lighting->{{"Directional",White,{{0,-1,0},{0,0,0}}}},Boxed->False]

Graphics3D[Join[{RGBColor[0.66,0.33,0],Specularity[White,100]},bunny[[1]]],Lighting->{{"Directional",White,{{0,-1,0},{0,0,0}}}},Boxed->False]

Variace na CowParade

cow=ExampleData[{"Geometry3D","Cow"}]

cow[[1]]

ExampleData[{"Geometry3D","Cow"},"PolygonCount"]

Obarvíme vrcholy trojúhelníků podle jejich x-ové souřadnice (použitím obarvovacích funkcí z ColorData) a nastavíme lesklý povrch:

Table[Image[Graphics3D[{EdgeForm[],Append[cow[[1,2]],VertexColors->Map[{Specularity[White,30],ColorData[colorfn][#[[1]]+.5]}&,cow[[1,2,1]]]]},Lighting->"Neutral",Boxed->False,Background->GrayLevel[.15],PlotLabel->Style[colorfn,White,FontFamily->"Arial"],ImageSize->150]],{colorfn,ColorData["Gradients"]}]

Další ukázky 3D grafiky

Decocube

Vytvořil Jeff Bryant, viz Scientific Visualization and Graphics with Mathematica, http://members.wri.com/jeffb/visualization/.

c=0.8;
ContourPlot3D[(((((x^2)+(y^2)-(c^2)))^2)+((((z^2)-1))^2)) (((((y^2)+(z^2)-(c^2)))^2)+((((x^2)-1))^2)) (((((z^2)+(x^2)-(c^2)))^2)+((((y^2)-1))^2))==0.1,{x,-1.5,1.5},{y,-1.5,1.5},{z,-1.5,1.5},ContourStyle->{White,Specularity[White,50]},ViewVertical->{0,1,0},Boxed->False,Axes->False,ImageSize->400,Background->Black,Lighting->{{"Directional",RGBColor[0.5,0.5,1],ImageScaled[{0,1,0}]},{"Directional",RGBColor[1,0.5,0.5],ImageScaled[{1,-1,0}]},{"Directional",RGBColor[0.5,1,0.5],ImageScaled[{-1,-1,0}]}},SphericalRegion->True,Mesh->False,PlotPoints->50]

A Stylized Klein Bottle

First, we define the necessary functions to describe the surface.

bx=6*Cos[u]*(1+Sin[u]);
by=16*Sin[u];
rad=4*(1-Cos[u]/2);
X=If[π<u≤2 π,bx+rad*Cos[v+Pi],bx+rad*Cos[u]*Cos[v]];
Y=If[π<u≤2 π,by,by+rad*Sin[u]*Cos[v]];
Z=rad*Sin[v];

Next, we define the opacity value to be used for the "holes".

o=.2;

Then, we define the colors to be used for the surface which alternates between transparent-blue, and gray.

col1=Blue;
col2=Gray;

We define 3 light sources.

darklights={{"Directional",RGBColor[0.5, 0.5, 1],ImageScaled[{0, 1, 0}]}, 
     {"Directional",RGBColor[1, 0.5, 0.5],ImageScaled[{1, -1, 0}]}, {"Directional",RGBColor[0.5, 1, 0.5],ImageScaled[{-1, -1, 0}]}};

Now we create the graphic.

ParametricPlot3D[{X,Y,Z},{u,0,2*Pi},{v,0,2*Pi},PlotPoints->{48,12},Axes->False,Boxed->False,Mesh->59,MeshShading->{{{col1,Opacity[o],Specularity[White,128]},{col1,Opacity[o],Specularity[White,128]},{col2,Specularity[White,128]}},{{col1,Opacity[o],Specularity[White,128]},{col1,Opacity[o],Specularity[White,128]},{col2,Specularity[White,128]}},{{col1,Opacity[o],Specularity[White,128]},{col1,Opacity[o],Specularity[White,128]},{col2,Specularity[White,128]}},{{col2,Specularity[White,128]},{col2,Specularity[White,128]},{col2,Specularity[White,128]}}},MeshStyle->GrayLevel[.3],ImageSize->{640,500},MeshFunctions->{#4&,#5&},Background->Black,Lighting->darklights,SphericalRegion->True,ViewAngle->π/12]

Twisted Architecture

Vytvořil Christopher Carlson, viz Wolfram Blog

Geometrické výpočty

Geometrické útvary

Elementární útvary: Point, Line, HalfLine, InfiniteLine, Circle, Triangle, SSSTriangle, SASTriangle, ASATriangle, AASTriangle, Rectangle, Parallelogram, Polygon, Circle, Disk, Circumsphere, InfinitePlane, HalfPlane, Cuboid, Parallelpiped, Tetrahedron, Hexahedron, Prism, Pyramid, Sphere, Cylinder, Cone, Ball, Ellipsoid, ...

Implicitně a parametricky zadané útvary: ImplicitRegion, ParametricRegion

Geometrické sítě složené z lineárních útvarů (úsečky, trojúhelníky, čtyřstěny, ...): MeshRegion, BoundaryMeshRegion

Odvozené útvary – množinové operace a geometrické transformace: RegionUnion, RegionIntersection, RegionDifference, RegionSymmetricDifference, RegionProduct, RegionBoundary, TransformedRegion

Příklady – elementární útvary:

Graphics[{Yellow,Ellipsoid[{0,0},{3,2}]},Axes->True]

Graphics3D[Ellipsoid[{0,0,0},{4,3,2}],Axes->True]

t1=SSSTriangle[1,1,1]

Graphics[{Yellow,t1},Axes->True]

t2=SASTriangle[3,Pi/2,4]

Graphics[{Yellow,t2},Axes->True]

Graphics[{Yellow,t2,Black,Circumsphere[t2[[1]]]},Axes->True]

Příklady – implicitně a parametricky zadané útvary:

lemniskata=ImplicitRegion[2(x^2+y^2)^2==25(x^2-y^2),{x,y}];

RegionPlot[lemniskata,PlotRange->{{-3.6,3.6},{-1.4,1.4}},AspectRatio->Automatic]

mezikruzi=ImplicitRegion[1≤(x^2)+(y^2)≤2,{x,y}];

RegionPlot[mezikruzi]

teleso=ImplicitRegion[(x^6)-5 (x^4) y z+3 (x^4) (y^2)+10 (x^2) (y^3) z+3 (x^2) (y^4)-(y^5) z+(y^6)+(z^6)≤1,{x,y,z}];

RegionPlot3D[teleso,PlotRange->{{-1.5,1.5},{-1.5,1.5},{-1.6,1.6}},PlotPoints->50]

ctvrtelipsa=ParametricRegion[{2r Cos[t],r Sin[t]},{{r,0,1},{t,0,π/2}}];

RegionPlot[ctvrtelipsa,PlotRange->{{0,2},{0,1}},Axes->True,Frame->False,AspectRatio->Automatic,PlotRangePadding->.1]

Příklady – geometrické sítě:

?MeshRegion

MeshRegion can represent a piecewise linear region of any geometric dimension embedded in dimension 1, 2, or 3. 
({{}, {"1D"}})({{}, {"2D"}})({{}, {"3D"}})

The region represented by MeshRegion consists of the disjoint union of mesh cells.

Possible mesh cells (Subscript[mcell, i]) and their geometric dimensions:

({{      , Point[i], 0, point}, {      , Line[{(Subscript[i, 1]),(Subscript[i, 2]),…}], 1, line segments {(Subscript[i, 1]),(Subscript[i, 2])}, {(Subscript[i, 2]),(Subscript[i, 3])}, …}, {      , Triangle[{(Subscript[i, 1]),(Subscript[i, 2]),(Subscript[i, 3])}], 2, filled triangle}, {      , Polygon[{(Subscript[i, 1]),(Subscript[i, 2]),…}], 2, filled polygon}, {      , Tetrahedron[{(Subscript[i, 1]),…,(Subscript[i, 4])}], 3, filled tetrahedron}, {      , Hexahedron[{(Subscript[i, 1]),…,(Subscript[i, 8])}], 3, filled hexahedron}, {      , Pyramid[{(Subscript[i, 1]),…,(Subscript[i, 5])}], 3, filled pyramid}, {      , Prism[{(Subscript[i, 1]),…,(Subscript[i, 6])}], 3, filled prism}, {      , Simplex[{(Subscript[i, 1]),…,(Subscript[i, k])}], 0, 1, 2, 3, filled simplex}})

RegionPlot[MeshRegion[{{0,0},{1,0},{2,1/2},{2,-1/2}},{Line[{1,2}],Line[{2,3}],Line[{3,4}],Line[{4,2}]}],PlotRangePadding->0.5]

RegionPlot3D[MeshRegion[{{0,0,0},{0,0,1},{0,-1,0},{1,0,0},{0,1,0}},{Triangle[{1,2,3}],Triangle[{1,2,4}],Triangle[{1,2,5}]}],Axes->True]

?BoundaryMeshRegion

BoundaryMeshRegion can represent a piecewise linear and full-dimensional region embedded in dimension 1, 2, or 3. 
({{}, {"1D"}})({{}, {"2D"}})({{}, {"3D"}})

The boundary cells need to represent a closed curve or surface without self-intersections.

RegionPlot[BoundaryMeshRegion[{{0,0},{3,0},{0,3}},Line[{1,2,3,1}]],PlotRangePadding->0.5]

PolyhedronData["TruncatedIcosahedron"](* komolý dvacetistěn *)

steny=PolyhedronData["TruncatedIcosahedron","Faces"]

plocha=MeshRegion@@steny

Area[plocha]

Volume[plocha]

teleso=BoundaryMeshRegion@@steny

Volume[teleso]

Příklady – odvozené útvary:

r1=Disk[{-1/2,0}];
r2=Disk[{1/2,0}];
RegionPlot[{r1,r2},AspectRatio->Automatic]

setOperations={RegionUnion[r1,r2],RegionIntersection[r1,r2],RegionDifference[r1,r2],RegionSymmetricDifference[r1,r2],RegionBoundary[r1]};
Map[RegionPlot[#,AspectRatio->Automatic,PlotRange->{{-1.5,1.5},{-1,1}}]&,setOperations]

RegionPlot3D[RegionProduct[RegionSymmetricDifference[r1,r2],Line[{{0},{1}}]],PlotPoints->50]

?TransformedRegion

t1=ScalingTransform[{2,1,1}];
t2=RotationTransform[π/3,{1,1,1}];
t3=ShearingTransform[π/6,{1,1,0},{0,0,1}];
t4=Composition[t3,t2,t1];

Map[RegionPlot3D[TransformedRegion[Cuboid[],#],Axes->True]&,{t1,t2,t3,t4}]

Počítání s geometrickými útvary

Výpočet délky, obsahu, objemu, těžiště

ArcLength[Circle[{0,0},r]]

Area[Disk[{0,0},r]]

Volume[Ball[{0,0,0},r]]

pulkruh=RegionIntersection[Disk[{0,0},1],HalfPlane[{{0,0},{1,0}},{0,1}]];
teziste=RegionCentroid[%]

RegionPlot[pulkruh,Epilog->{Red,PointSize[Large],Point[teziste]},AspectRatio->Automatic]

ExampleData[{"Geometry3D","StanfordBunny"}]

FullForm[%]

stanfordBunny=ExampleData[{"Geometry3D","StanfordBunny"},"Region"]

FullForm[%]

Area[stanfordBunny]

RegionCentroid[stanfordBunny]

Náležení do množiny

trojuhelnik=Polygon[{{0,0},{1,0},{0,1}}];

RegionMember[trojuhelnik,{1,1}]

RegionMember[trojuhelnik,{x,y}]

Nejbližší bod

RegionNearest[trojuhelnik,{1,1}]

RegionNearest[trojuhelnik,{x,y}]

Vzdálenost bodu od množiny

?RegionDistance

RegionDistance[trojuhelnik,{1,1}]

distFunction=RegionDistance[trojuhelnik]

ContourPlot[distFunction[{x,y}]==1/2,{x,-2,3},{y,-2,3},Exclusions->None,Epilog->{trojuhelnik}]

Konvexní obal

pts=RandomReal[{-1,1},{50,2}];

Show[ConvexHullMesh[pts],Graphics[Point[pts]]]

stanfordBunnyPoints=ExampleData[{"Geometry3D","StanfordBunny"},"VertexData"]

Show[HighlightMesh[ConvexHullMesh[stanfordBunnyPoints],{Style[1,{Brown}],Style[2,Opacity[0.3,Brown]]}],stanfordBunny]

Voronoiův diagram

?VoronoiMesh

points=Table[{Cos[k 2π/10],Sin[k 2π/10]},{k,0.,9}];

Show[VoronoiMesh[points],Graphics[{Red,PointSize[Large],Point[points]}]]

kraje=CountryData["CzechRepublic","AdministrativeDivisions"]

mapa=GeoGraphics[{EdgeForm[Red],Table[{FaceForm[RandomColor[]],Polygon[k]},{k,kraje}]},ImageSize->Full]

souradnice=Table[Reverse[CityData[c,"Coordinates"]]->CityData[c,"Name"],{c,{"Brno","Ceske Budejovice","Hradec Kralove","Jihlava","Karlovy Vary","Liberec","Olomouc","Ostrava","Pardubice","Plzen","Praha","Usti nad Labem","Zlin"}}];

city=Nearest[souradnice];

vm=VoronoiMesh[souradnice[[All,1]]]

labels=Table[{Tooltip[{Opacity[0],p},First[city[Mean@@p]]]},{p,MeshPrimitives[vm,2]}];

g=Graphics[{Lighter@Brown,CountryData["CzechRepublic","Polygon"],PointSize[Large],Red,Point/@souradnice[[All,1]],Thick,Black,MeshPrimitives[vm,1],labels}]

Show[mapa,g]

Použití ve spojení s dalšími příkazy

Vizualizace se zadaným definičním oborem: Plot, Plot3D, ParametricPlot, ContourPlot, StreamPlot, DensityPlot, ...

Plot3D[Sin[2π x y],{x,y}∈Disk[{0,0},1]]

ContourPlot[Sin[2π x y],{x,y}∈Disk[{0,0},1],PlotPoints->60]

Integrace / řešení parciálních diferenciálních rovnic na zadané oblasti: Integrate, NIntegrate, NDSolve, ...

Integrate[1,{x,y,z}∈Ball[{0,0,0},1]]

Integrate[2-z,{x,y,z}∈Cuboid[{0,0,0},{1,1,1}]]

Hledání extrémů (optimalizace) na zadané oblasti: Minimize/Maximize, NMinimize/NMaximize, FindMinimum/FindMaximum, ...

kruh=Disk[{0,0},1];
obdelnik=Rectangle[{2,1},{3,3}];

NMinimize[Norm[p1-p2],{p1∈kruh,p2∈obdelnik}]

nejblizsiBody={p1,p2}/.%[[2]]

NMaximize[Norm[p1-p2],{p1∈kruh,p2∈obdelnik}]

nejvzdalenejsiBody={p1,p2}/.%[[2]]

Graphics[{{Yellow,kruh,obdelnik},PointSize[Large],{Dashed,Line[nejblizsiBody],Red,Point[nejblizsiBody]},{Dashed,Line[nejvzdalenejsiBody],Red,Point[nejvzdalenejsiBody]}}]

Řešení rovnic na zadané oblasti: Solve, NSolve, Reduce, ...

primka=InfiniteLine[{0,0},{1,1}];
kruznice=Circle[{0,0},1];

p/.Solve[p∈primka&&p∈kruznice,p]

Graphics[{{primka,kruznice},{Red,PointSize[Large],Point[%]}},Axes->True]

Cvičení

Uvažujme těleso ve trojrozměrném prostoru tvořené všemi body (x,y,z), které splňují podmínky (x^2)+(y^2)≤1, z≥0, y+z≤1. Znázorněte toto těleso, vypočítejte jeho objem a najděte souřadnice těžistě.

Najděte střed a poloměr kružnice, která se dotýká přímek y=4x-10, y=((9 x)/4)-(15/4), y=3x-15. (Využijte skutečnost, že střed kružnice musí mít stejnou vzdálenost od všech tří přímek.) Úloha má více řešení, najděte všechna. Středy i poloměry vyjádřete desetinnými čísly se strojovou přesností. Připojte obrázek znázorňující zadané přímky a nalezené kružnice (nebo jejich dostatečně velké části).