How can I make a cone from a cube and view the cube with different angles?Different sibling angles at the same level when using mindmapLabeling the lengths and angles in a diagram with measurementshow to achieve and draw the final rotation of a frame with Euler angles.how I can select view in 3d tikz? and how I can change view?How can I make a 3D representation of a potential wellHow Can I draw a cube of cubes efficiently?How can I draw this cone exactly?How to make a 2D sphere with decreasing radial gradientCone in Latex with right angles and LabelHow can I draw this cylinder with 3D?
Have astronauts in space suits ever taken selfies? If so, how?
Can I ask the recruiters in my resume to put the reason why I am rejected?
Is it legal for company to use my work email to pretend I still work there?
"to be prejudice towards/against someone" vs "to be prejudiced against/towards someone"
What does "Puller Prush Person" mean?
An academic/student plagiarism
Show that if two triangles built on parallel lines, with equal bases have the same perimeter only if they are congruent.
What defenses are there against being summoned by the Gate spell?
Can divisibility rules for digits be generalized to sum of digits
To string or not to string
Why dont electromagnetic waves interact with each other?
LaTeX closing $ signs makes cursor jump
Risk of getting Chronic Wasting Disease (CWD) in the United States?
How much RAM could one put in a typical 80386 setup?
Is it tax fraud for an individual to declare non-taxable revenue as taxable income? (US tax laws)
Modeling an IPv4 Address
How do we improve the relationship with a client software team that performs poorly and is becoming less collaborative?
Accidentally leaked the solution to an assignment, what to do now? (I'm the prof)
How to test if a transaction is standard without spending real money?
What are the differences between the usage of 'it' and 'they'?
What is the word for reserving something for yourself before others do?
Today is the Center
How is it possible to have an ability score that is less than 3?
Which models of the Boeing 737 are still in production?
How can I make a cone from a cube and view the cube with different angles?
Different sibling angles at the same level when using mindmapLabeling the lengths and angles in a diagram with measurementshow to achieve and draw the final rotation of a frame with Euler angles.how I can select view in 3d tikz? and how I can change view?How can I make a 3D representation of a potential wellHow Can I draw a cube of cubes efficiently?How can I draw this cone exactly?How to make a 2D sphere with decreasing radial gradientCone in Latex with right angles and LabelHow can I draw this cylinder with 3D?
I am trying to draw a cone with vertex C
and base is circle BDG
and want to view the cube with different angles like some following pictures.
I tried
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz,tikz-3dplot
usepackagefouriernc
usepackagetkz-euclide
usetkzobjall
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
makeatother
% based on tex.stackexchange.com/a/12033/…
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,ultra thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
beginscope[tdplot_screen_coords]
fill[ball color=gray, opacity=0.1] (I) circle (r); % 3D lighting effect
endscope
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(E) --(F) --(G)-- (H) --cycle
(C)--(D) --(H)--(G)--cycle
;
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D)
;
draw[dashed, blue] (B) -- (D);
endtikzpicture
enddocument
I got
My questions are:
- How can I draw some generators (not
CB, CG, CD
) of the cone? - How can I view the cube with different angles?
tikz-pgf tikz-3dplot
add a comment |
I am trying to draw a cone with vertex C
and base is circle BDG
and want to view the cube with different angles like some following pictures.
I tried
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz,tikz-3dplot
usepackagefouriernc
usepackagetkz-euclide
usetkzobjall
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
makeatother
% based on tex.stackexchange.com/a/12033/…
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,ultra thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
beginscope[tdplot_screen_coords]
fill[ball color=gray, opacity=0.1] (I) circle (r); % 3D lighting effect
endscope
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(E) --(F) --(G)-- (H) --cycle
(C)--(D) --(H)--(G)--cycle
;
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D)
;
draw[dashed, blue] (B) -- (D);
endtikzpicture
enddocument
I got
My questions are:
- How can I draw some generators (not
CB, CG, CD
) of the cone? - How can I view the cube with different angles?
tikz-pgf tikz-3dplot
add a comment |
I am trying to draw a cone with vertex C
and base is circle BDG
and want to view the cube with different angles like some following pictures.
I tried
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz,tikz-3dplot
usepackagefouriernc
usepackagetkz-euclide
usetkzobjall
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
makeatother
% based on tex.stackexchange.com/a/12033/…
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,ultra thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
beginscope[tdplot_screen_coords]
fill[ball color=gray, opacity=0.1] (I) circle (r); % 3D lighting effect
endscope
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(E) --(F) --(G)-- (H) --cycle
(C)--(D) --(H)--(G)--cycle
;
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D)
;
draw[dashed, blue] (B) -- (D);
endtikzpicture
enddocument
I got
My questions are:
- How can I draw some generators (not
CB, CG, CD
) of the cone? - How can I view the cube with different angles?
tikz-pgf tikz-3dplot
I am trying to draw a cone with vertex C
and base is circle BDG
and want to view the cube with different angles like some following pictures.
I tried
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz,tikz-3dplot
usepackagefouriernc
usepackagetkz-euclide
usetkzobjall
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
makeatother
% based on tex.stackexchange.com/a/12033/…
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,ultra thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
beginscope[tdplot_screen_coords]
fill[ball color=gray, opacity=0.1] (I) circle (r); % 3D lighting effect
endscope
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(E) --(F) --(G)-- (H) --cycle
(C)--(D) --(H)--(G)--cycle
;
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D)
;
draw[dashed, blue] (B) -- (D);
endtikzpicture
enddocument
I got
My questions are:
- How can I draw some generators (not
CB, CG, CD
) of the cone? - How can I view the cube with different angles?
tikz-pgf tikz-3dplot
tikz-pgf tikz-3dplot
edited 15 hours ago
TeXnician
25.9k63491
25.9k63491
asked 16 hours ago
minhthien_2016minhthien_2016
1,4741917
1,4741917
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
TikZ does not have a 3d engine, so one has to distinguish many cases. I hope this does not contain too many bugs. (There is also something that keeps track of the bounding boxes, meaning you have to compile the file twice.)
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz-3dplot
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
defSaveBBox%
immediatewrite@mainauxxdefstringxminxminrelax
immediatewrite@mainauxxdefstringxmaxxmaxrelax
immediatewrite@mainauxxdefstringyminyminrelax
immediatewrite@mainauxxdefstringymaxymaxrelax
makeatother
% based on tex.stackexchange.com/a/12033/AAA
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
foreach Angle in 5,15,...,355 % 5
tdplotsetmaincoords70Angle
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
ifdefinedxmin
else
defxmin0
fi
ifdefinedxmax
else
defxmax0
fi
ifdefinedymin
else
defymin0
fi
ifdefinedymax
else
defymax0
fi
path[tdplot_screen_coords] (xmin pt,ymin pt) rectangle (xmax pt,ymax pt);
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[very thick] (E) --(F) --(G)-- (H) --cycle;
ifnumAngle<90
draw[very thick] (D) --(A) --(B) (D) -- (H) (A)--(E) (B) -- (F);
draw[dashed, thick] (D) -- (C) -- (B) (C) -- (G);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (F) -- (G) -- (H) -- (D) -- (A) -- (B) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) --(A) --(B) -- (C) -- (G) (B) -- (F);
draw[dashed, thick] (A) -- (D) -- (C) (D) -- (H);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<150
clip (G) -- (H) -- (E) -- (A) -- (B) -- cycle [reverseclip];
else
clip (B) -- (C) -- (G) -- cycle [reverseclip];
fi
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(C)--(D) --(H)--(G)--cycle ;
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<270
draw[very thick] (F) -- (B) -- (C) -- (D) -- (H) (C) -- (G);
draw[dashed, thick] (B) -- (A) -- (D) (A) -- (E);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<230
clip (G) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (B) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
else
draw[very thick] (G) -- (C) -- (D) -- (A) -- (E) (D) -- (H);
draw[dashed, thick] (A) -- (B) -- (C) (B) -- (F);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<300
clip (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (D) -- (A) -- (E) -- (H) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
fi
fi
fi
fi
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
draw[dashed, blue] (B) -- (D);
path[tdplot_screen_coords] let p1=(current bounding box.south west),
p2=(current bounding box.north east)
in [/utils/exec=pgfmathsetmacroxminmin(xmin pt,x1)
pgfmathsetmacroxmaxmax(xmax pt,x2)
pgfmathsetmacroyminmin(ymin pt,y1)
pgfmathsetmacroymaxmax(ymax pt,y2)
xdefxminxminxdefxmaxxmaxxdefyminyminxdefymaxymax];
%node[tdplot_screen_coords] at (current bounding box.center) angle=Angle;
SaveBBox
endtikzpicture
enddocument
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f483509%2fhow-can-i-make-a-cone-from-a-cube-and-view-the-cube-with-different-angles%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
TikZ does not have a 3d engine, so one has to distinguish many cases. I hope this does not contain too many bugs. (There is also something that keeps track of the bounding boxes, meaning you have to compile the file twice.)
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz-3dplot
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
defSaveBBox%
immediatewrite@mainauxxdefstringxminxminrelax
immediatewrite@mainauxxdefstringxmaxxmaxrelax
immediatewrite@mainauxxdefstringyminyminrelax
immediatewrite@mainauxxdefstringymaxymaxrelax
makeatother
% based on tex.stackexchange.com/a/12033/AAA
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
foreach Angle in 5,15,...,355 % 5
tdplotsetmaincoords70Angle
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
ifdefinedxmin
else
defxmin0
fi
ifdefinedxmax
else
defxmax0
fi
ifdefinedymin
else
defymin0
fi
ifdefinedymax
else
defymax0
fi
path[tdplot_screen_coords] (xmin pt,ymin pt) rectangle (xmax pt,ymax pt);
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[very thick] (E) --(F) --(G)-- (H) --cycle;
ifnumAngle<90
draw[very thick] (D) --(A) --(B) (D) -- (H) (A)--(E) (B) -- (F);
draw[dashed, thick] (D) -- (C) -- (B) (C) -- (G);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (F) -- (G) -- (H) -- (D) -- (A) -- (B) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) --(A) --(B) -- (C) -- (G) (B) -- (F);
draw[dashed, thick] (A) -- (D) -- (C) (D) -- (H);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<150
clip (G) -- (H) -- (E) -- (A) -- (B) -- cycle [reverseclip];
else
clip (B) -- (C) -- (G) -- cycle [reverseclip];
fi
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(C)--(D) --(H)--(G)--cycle ;
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<270
draw[very thick] (F) -- (B) -- (C) -- (D) -- (H) (C) -- (G);
draw[dashed, thick] (B) -- (A) -- (D) (A) -- (E);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<230
clip (G) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (B) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
else
draw[very thick] (G) -- (C) -- (D) -- (A) -- (E) (D) -- (H);
draw[dashed, thick] (A) -- (B) -- (C) (B) -- (F);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<300
clip (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (D) -- (A) -- (E) -- (H) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
fi
fi
fi
fi
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
draw[dashed, blue] (B) -- (D);
path[tdplot_screen_coords] let p1=(current bounding box.south west),
p2=(current bounding box.north east)
in [/utils/exec=pgfmathsetmacroxminmin(xmin pt,x1)
pgfmathsetmacroxmaxmax(xmax pt,x2)
pgfmathsetmacroyminmin(ymin pt,y1)
pgfmathsetmacroymaxmax(ymax pt,y2)
xdefxminxminxdefxmaxxmaxxdefyminyminxdefymaxymax];
%node[tdplot_screen_coords] at (current bounding box.center) angle=Angle;
SaveBBox
endtikzpicture
enddocument
add a comment |
TikZ does not have a 3d engine, so one has to distinguish many cases. I hope this does not contain too many bugs. (There is also something that keeps track of the bounding boxes, meaning you have to compile the file twice.)
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz-3dplot
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
defSaveBBox%
immediatewrite@mainauxxdefstringxminxminrelax
immediatewrite@mainauxxdefstringxmaxxmaxrelax
immediatewrite@mainauxxdefstringyminyminrelax
immediatewrite@mainauxxdefstringymaxymaxrelax
makeatother
% based on tex.stackexchange.com/a/12033/AAA
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
foreach Angle in 5,15,...,355 % 5
tdplotsetmaincoords70Angle
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
ifdefinedxmin
else
defxmin0
fi
ifdefinedxmax
else
defxmax0
fi
ifdefinedymin
else
defymin0
fi
ifdefinedymax
else
defymax0
fi
path[tdplot_screen_coords] (xmin pt,ymin pt) rectangle (xmax pt,ymax pt);
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[very thick] (E) --(F) --(G)-- (H) --cycle;
ifnumAngle<90
draw[very thick] (D) --(A) --(B) (D) -- (H) (A)--(E) (B) -- (F);
draw[dashed, thick] (D) -- (C) -- (B) (C) -- (G);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (F) -- (G) -- (H) -- (D) -- (A) -- (B) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) --(A) --(B) -- (C) -- (G) (B) -- (F);
draw[dashed, thick] (A) -- (D) -- (C) (D) -- (H);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<150
clip (G) -- (H) -- (E) -- (A) -- (B) -- cycle [reverseclip];
else
clip (B) -- (C) -- (G) -- cycle [reverseclip];
fi
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(C)--(D) --(H)--(G)--cycle ;
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<270
draw[very thick] (F) -- (B) -- (C) -- (D) -- (H) (C) -- (G);
draw[dashed, thick] (B) -- (A) -- (D) (A) -- (E);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<230
clip (G) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (B) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
else
draw[very thick] (G) -- (C) -- (D) -- (A) -- (E) (D) -- (H);
draw[dashed, thick] (A) -- (B) -- (C) (B) -- (F);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<300
clip (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (D) -- (A) -- (E) -- (H) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
fi
fi
fi
fi
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
draw[dashed, blue] (B) -- (D);
path[tdplot_screen_coords] let p1=(current bounding box.south west),
p2=(current bounding box.north east)
in [/utils/exec=pgfmathsetmacroxminmin(xmin pt,x1)
pgfmathsetmacroxmaxmax(xmax pt,x2)
pgfmathsetmacroyminmin(ymin pt,y1)
pgfmathsetmacroymaxmax(ymax pt,y2)
xdefxminxminxdefxmaxxmaxxdefyminyminxdefymaxymax];
%node[tdplot_screen_coords] at (current bounding box.center) angle=Angle;
SaveBBox
endtikzpicture
enddocument
add a comment |
TikZ does not have a 3d engine, so one has to distinguish many cases. I hope this does not contain too many bugs. (There is also something that keeps track of the bounding boxes, meaning you have to compile the file twice.)
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz-3dplot
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
defSaveBBox%
immediatewrite@mainauxxdefstringxminxminrelax
immediatewrite@mainauxxdefstringxmaxxmaxrelax
immediatewrite@mainauxxdefstringyminyminrelax
immediatewrite@mainauxxdefstringymaxymaxrelax
makeatother
% based on tex.stackexchange.com/a/12033/AAA
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
foreach Angle in 5,15,...,355 % 5
tdplotsetmaincoords70Angle
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
ifdefinedxmin
else
defxmin0
fi
ifdefinedxmax
else
defxmax0
fi
ifdefinedymin
else
defymin0
fi
ifdefinedymax
else
defymax0
fi
path[tdplot_screen_coords] (xmin pt,ymin pt) rectangle (xmax pt,ymax pt);
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[very thick] (E) --(F) --(G)-- (H) --cycle;
ifnumAngle<90
draw[very thick] (D) --(A) --(B) (D) -- (H) (A)--(E) (B) -- (F);
draw[dashed, thick] (D) -- (C) -- (B) (C) -- (G);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (F) -- (G) -- (H) -- (D) -- (A) -- (B) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) --(A) --(B) -- (C) -- (G) (B) -- (F);
draw[dashed, thick] (A) -- (D) -- (C) (D) -- (H);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<150
clip (G) -- (H) -- (E) -- (A) -- (B) -- cycle [reverseclip];
else
clip (B) -- (C) -- (G) -- cycle [reverseclip];
fi
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(C)--(D) --(H)--(G)--cycle ;
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<270
draw[very thick] (F) -- (B) -- (C) -- (D) -- (H) (C) -- (G);
draw[dashed, thick] (B) -- (A) -- (D) (A) -- (E);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<230
clip (G) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (B) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
else
draw[very thick] (G) -- (C) -- (D) -- (A) -- (E) (D) -- (H);
draw[dashed, thick] (A) -- (B) -- (C) (B) -- (F);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<300
clip (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (D) -- (A) -- (E) -- (H) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
fi
fi
fi
fi
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
draw[dashed, blue] (B) -- (D);
path[tdplot_screen_coords] let p1=(current bounding box.south west),
p2=(current bounding box.north east)
in [/utils/exec=pgfmathsetmacroxminmin(xmin pt,x1)
pgfmathsetmacroxmaxmax(xmax pt,x2)
pgfmathsetmacroyminmin(ymin pt,y1)
pgfmathsetmacroymaxmax(ymax pt,y2)
xdefxminxminxdefxmaxxmaxxdefyminyminxdefymaxymax];
%node[tdplot_screen_coords] at (current bounding box.center) angle=Angle;
SaveBBox
endtikzpicture
enddocument
TikZ does not have a 3d engine, so one has to distinguish many cases. I hope this does not contain too many bugs. (There is also something that keeps track of the bounding boxes, meaning you have to compile the file twice.)
documentclass[border=2mm,12pt,tikz]standalone
usepackagetikz-3dplot
makeatletter
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
defSaveBBox%
immediatewrite@mainauxxdefstringxminxminrelax
immediatewrite@mainauxxdefstringxmaxxmaxrelax
immediatewrite@mainauxxdefstringyminyminrelax
immediatewrite@mainauxxdefstringymaxymaxrelax
makeatother
% based on tex.stackexchange.com/a/12033/AAA
tikzsetreverseclip/.style=insert path=(current bounding box.south west)rectangle
(current bounding box.north east)
defparsecoord(#1,#2,#3)>(#4,#5,#6)%
def#4#1%
def#5#2%
def#6#3%
smuggle#4%
smuggle#5%
smuggle#6%
defSPTD(#1,#2,#3).(#4,#5,#6)((#1)*(#4)+1*(#2)*(#5)+1*(#3)*(#6))
defVPTD(#1,#2,#3)x(#4,#5,#6)((#2)*(#6)-1*(#3)*(#5),(#3)*(#4)-1*(#1)*(#6),(#1)*(#5)-1*(#2)*(#4))
defVecMinus(#1,#2,#3)-(#4,#5,#6)(#1-1*(#4),#2-1*(#5),#3-1*(#6))
defVecAdd(#1,#2,#3)+(#4,#5,#6)(#1+1*(#4),#2+1*(#5),#3+1*(#6))
newcommandRotationAnglesForPlaneWithNormal[5]%typeoutN=(#1,#2,#3)
foreach XS in 1,-1
foreach YS in 1,-1
pgfmathsetmacromybetaXS*acos(#3)
pgfmathsetmacromyalphaYS*acos(#1/sin(mybeta))
pgfmathsetmacrontestabs(cos(myalpha)*sin(mybeta)-#1)%
+abs(sin(myalpha)*sin(mybeta)-#2)+abs(cos(mybeta)-#3)
ifdimntest pt<0.1pt
xdef#4myalpha
xdef#5mybeta
fi
tikzsetcircle in plane with normal/.style args=#1 with radius #2 around #3
/utils/exec=edeftempnoexpandparsecoord#1>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
temp
pgfmathsetmacromyNxmyNx
pgfmathsetmacromyNymyNy
pgfmathsetmacromyNzmyNz
pgfmathsetmacromyNormalizationsqrt(pow(myNx,2)+pow(myNy,2)+pow(myNz,2))
pgfmathsetmacromyNxmyNx/myNormalization
pgfmathsetmacromyNymyNy/myNormalization
pgfmathsetmacromyNzmyNz/myNormalization
% compute the rotation angles that transform us in the corresponding plabe
RotationAnglesForPlaneWithNormalmyNxmyNymyNztmpalphatmpbeta
%typeoutN=(myNx,myNy,myNz),alpha=tmpalpha,beta=tmpbeta,r=#2,#3
tdplotsetrotatedcoordstmpalphatmpbeta0,
insert path=[tdplot_rotated_coords,canvas is xy plane at z=0,transform shape]
#3 circle[radius=#2]
begindocument
tdplotsetmaincoords70195
foreach Angle in 5,15,...,355 % 5
tdplotsetmaincoords70Angle
begintikzpicture[tdplot_main_coords,scale=1,line join = round, line cap = round]
ifdefinedxmin
else
defxmin0
fi
ifdefinedxmax
else
defxmax0
fi
ifdefinedymin
else
defymin0
fi
ifdefinedymax
else
defymax0
fi
path[tdplot_screen_coords] (xmin pt,ymin pt) rectangle (xmax pt,ymax pt);
pgfmathsetmacroa3
pgfmathsetmacror2/3*sqrt(6)*a
path
coordinate (A) at (a,-a,-a)
coordinate (B) at (a,a,-a)
coordinate (C) at (-a,a,-a)
coordinate (D) at (-a,-a,-a)
coordinate (E) at ($(A)+ (0,0,2*a)$)
coordinate (F) at ($(B)+ (0,0,2*a)$)
coordinate (G) at ($(C)+ (0,0,2*a)$)
coordinate (H) at ($(D)+ (0,0,2*a)$)
coordinate (O) at (0,0,0)
coordinate (I) at (-1/3*a, 1/3*a, -1/3*a)
;
parsecoord(a,a,-a)>(myBx,myBy,myBz)
parsecoord(-a,a,a)>(myGx,myGy,myGz)
parsecoord(-a,-a,-a)>(myDx,myDy,myDz)
defmynormalVPTD(myDx-myBx,myDy-myBy,myDz-myBz)x(myDx-myGx,myDy-myGy,myDz-myGz)
edeftempnoexpandparsecoordmynormal>(noexpandmyNx,noexpandmyNy,noexpandmyNz)
draw[very thick, blue] (G) -- (D) (G) -- (B);
draw[very thick] (E) --(F) --(G)-- (H) --cycle;
ifnumAngle<90
draw[very thick] (D) --(A) --(B) (D) -- (H) (A)--(E) (B) -- (F);
draw[dashed, thick] (D) -- (C) -- (B) (C) -- (G);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (F) -- (G) -- (H) -- (D) -- (A) -- (B) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) --(A) --(B) -- (C) -- (G) (B) -- (F);
draw[dashed, thick] (A) -- (D) -- (C) (D) -- (H);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<150
clip (G) -- (H) -- (E) -- (A) -- (B) -- cycle [reverseclip];
else
clip (B) -- (C) -- (G) -- cycle [reverseclip];
fi
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<180
draw[very thick] (E) -- (F) -- (B)
(B) --(C)--(G)--(F)
(C)--(D) --(H)--(G)--cycle ;
draw[dashed, thick]
(B) -- (A) -- (E) (D) --(A) (D) --(C) (D) --(H) (E) --(C) (I) -- (B) (I) -- (G) (I) --(D);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
clip (B) -- (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
endscope
else
ifnumAngle<270
draw[very thick] (F) -- (B) -- (C) -- (D) -- (H) (C) -- (G);
draw[dashed, thick] (B) -- (A) -- (D) (A) -- (E);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<230
clip (G) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (B) -- (C) -- (D) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
else
draw[very thick] (G) -- (C) -- (D) -- (A) -- (E) (D) -- (H);
draw[dashed, thick] (A) -- (B) -- (C) (B) -- (F);
beginscope
draw[red,dashed,circle in plane with normal=mynormal with radius r around (I)];
ifnumAngle<300
clip (C) -- (D) -- (G) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
else
clip (G) -- (D) -- (A) -- (E) -- (H) -- cycle [reverseclip];
draw[red,thick,circle in plane with normal=mynormal with radius r around (I)];
fi
endscope
fi
fi
fi
fi
foreach point/position in A/below,B/below,C/below,D/right,E/above,F/left,G/above,H/above,O/above,I/below
fill (point) circle (2.0pt);
node[position=2pt] at (point) $point$;
draw[dashed, blue] (B) -- (D);
path[tdplot_screen_coords] let p1=(current bounding box.south west),
p2=(current bounding box.north east)
in [/utils/exec=pgfmathsetmacroxminmin(xmin pt,x1)
pgfmathsetmacroxmaxmax(xmax pt,x2)
pgfmathsetmacroyminmin(ymin pt,y1)
pgfmathsetmacroymaxmax(ymax pt,y2)
xdefxminxminxdefxmaxxmaxxdefyminyminxdefymaxymax];
%node[tdplot_screen_coords] at (current bounding box.center) angle=Angle;
SaveBBox
endtikzpicture
enddocument
answered 14 hours ago
marmotmarmot
115k5146277
115k5146277
add a comment |
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f483509%2fhow-can-i-make-a-cone-from-a-cube-and-view-the-cube-with-different-angles%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown