Het lukt mij inmiddels om in mathcad een 3d plot te maken.
hier de plot van A/V als functie van d en h.
(fouten voorbehouden)
ik ben nog bezig om uit te zoeken hoe je in diezelfde plot de curve kunt plotten voor constant volume.
Moderator: Rhiannon
Nee, ik weet niet hoe dat moet. Ik gebruik matplotlib. De link hieronder geeft een overzicht van wat mogelijk is, maar ik vind wat je vraagt niet terug. Is ook niet gemakkelijk om zoiets duidelijk te tekenen natuurlijk. Het zou wel het ideale plaatje zijn om het topic te illustreren.
dit geeft geen mooi resultaat. wat wel werkt is 1 3d plot maken voor constant volume en een 2e 3d plot voor V/A=f(d,h) als ik die 2 curves echter in 1 3d plot zet dan komt er zo te zien onzin uit. mogelijk een bug. maar 2 van die plots in powerpoint zetten en dan transpacency wat omlaag werkt weer wel. dta ga ik even verder uitwerken als er tijd is.HansH schreef: ↑ma 16 sep 2024, 14:54 wat misschien lukt is om een nieuwe functie te definieren die z=f(d,h) die aan z de A/V waarde toekent als d,h onderdeel is van de curve die hoort bij een bepaald volume en die z=0 maakt voor alle andere combinaties van d en h. die functie kan ik dan plotten op de manier die ik nu ook al doe.
Code: Selecteer alles
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
from matplotlib.ticker import LinearLocator
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
# Make data.
d = np.arange(0.05, 2, 0.01)
h = np.arange(0.05, 2, 0.01)
d, h = np.meshgrid(d, h)
Z = (np.pi *d**2/2 + np.pi * d/2 *(d**2/4+h*2)**0.5)/(np.pi* d**3/12 + np.pi *d**2 * h/12)
# Plot the surface.
surf = ax.plot_surface(d, h, Z,
linewidth=2,cmap=cm.coolwarm , antialiased=False)
# Customize the z axis.
ax.set_zlim(0, 40)
ax.zaxis.set_major_locator(LinearLocator(10))
# A StrMethodFormatter is used automatically
ax.zaxis.set_major_formatter('{x:.02f}')
ax.set_xlabel('d')
ax.set_ylabel('h')
ax.set_zlabel('Oppervlakte / Volume')
plt.show()
als dit arrays zijn dan kun je ze misschien uitbreiden met de serie punten die de lijn vormen van constant volume. dan heb je alles in set van 3 arrays. alleen moet je dan wel de kleur kunen definieren per arraypunt wat je plot zodat je de lijn kunt ondercheiden van het de 3d figuur.
Ik heb helaas zo geen brilletje. Ik had er nooit aan gedacht om zoiets te visualiseren voor zo een brilletje.HansH schreef: ↑di 17 sep 2024, 23:16 dit is overigens de procedure om een 3d plaatje te maken:
1) plaatje maken voor linker en rechter oog via klein beetje roteren van de 3d grafiek
2) beide plaatje op 50% helderheid zetten
3) voor linker plaatje Rood uitzetten groen en blauw op 100%
4) voor rechter plaatje groen en blauw uitzetten en rood op 100%
5) beide plaatjes sommeren tot nieuw plaatje. dat is dan het 3D plaatje.