2010-12-18 10 views
9

के साथ दिल कैसे आकर्षित करें पिलैब के साथ दिल कैसे आकर्षित करें? मैंने चित्र खींचने के तरीकों के लिए Google के साथ खोज की लेकिन मुझे पता है कि इसे पिलैब के साथ कैसे आकर्षित किया जाए। क्या कोई मदद कर सकता है? चित्र this तरह दिखना चाहिए:पिलैब

3D Heart

+0

3 डी दिल के लिए समीकरण: http://mathworld.wolfram.com/HeartSurface.html http://www.mathematische-basteleien.de/heart.htm – jfs

+1

आप कह सकते हैं cardiod? –

+3

संबंधित पोस्ट: http://stackoverflow.com/questions/1526898/how-do-i-reproduce-this-heart-shaped-mesh-in-matlab – Paul

उत्तर

8

अन्य समाधान में जुड़े हुए सूत्र का उपयोग:

import pylab 
x = scipy.linspace(-2,2,1000) 
y1 = scipy.sqrt(1-(abs(x)-1)**2) 
y2 = -3*scipy.sqrt(1-(abs(x)/2)**0.5) 
pylab.fill_between(x, y1, color='red') 
pylab.fill_between(x, y2, color='red') 
pylab.xlim([-2.5, 2.5]) 
pylab.text(0, -0.4, 'Stack Overflow', fontsize=24, fontweight='bold', 
      color='white', horizontalalignment='center') 
pylab.savefig('heart.png') 

heart

+0

ओपी ** 3 डी ** दिल से लिंक। – jfs

4

सुझाव: 3D Love Heart:: सेज से उदाहरण पर एक नजर डालें

x, y, z = var('x, y, z') 
f(x, y, z) = (x^2+(9/4)*y^2+z^2-1)^3-x^2*z^3-(9/80)*y^2*z^3 
P = implicit_plot3d(f, (x, -3, 3), (y, -3, 3), (z, -3, 3), 
        frame=False, axes=True, figsize=6,color="red") 
P.show(viewer='tachyon') 

sage: Heart 3D

4

आप here देख सकते हैं, आप एक 3 डी गर्मी कैसे प्लॉट कर सकते हैं।

लेख के लेखक एक साथ निहित समारोह can be found here की साजिश रचने और भट्ठी के निहित समारोह रखा, और नीचे दिए गए कोड मिल गया है:

#!/usr/bin/env python3 
from mpl_toolkits.mplot3d import Axes3D 
from matplotlib import cm 
from matplotlib.ticker import LinearLocator, FormatStrFormatter 
import matplotlib.pyplot as plt 
import numpy as np 


def heart_3d(x,y,z): 
    return (x**2+(9/4)*y**2+z**2-1)**3-x**2*z**3-(9/80)*y**2*z**3 


def plot_implicit(fn, bbox=(-1.5, 1.5)): 
    ''' create a plot of an implicit function 
    fn ...implicit function (plot where fn==0) 
    bbox ..the x,y,and z limits of plotted interval''' 
    xmin, xmax, ymin, ymax, zmin, zmax = bbox*3 
    fig = plt.figure() 
    ax = fig.add_subplot(111, projection='3d') 
    A = np.linspace(xmin, xmax, 100) # resolution of the contour 
    B = np.linspace(xmin, xmax, 40) # number of slices 
    A1, A2 = np.meshgrid(A, A) # grid on which the contour is plotted 

    for z in B: # plot contours in the XY plane 
     X, Y = A1, A2 
     Z = fn(X, Y, z) 
     cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',)) 
     # [z] defines the only level to plot 
     # for this contour for this value of z 

    for y in B: # plot contours in the XZ plane 
     X, Z = A1, A2 
     Y = fn(X, y, Z) 
     cset = ax.contour(X, Y+y, Z, [y], zdir='y', colors=('red',)) 

    for x in B: # plot contours in the YZ plane 
     Y, Z = A1, A2 
     X = fn(x, Y, Z) 
     cset = ax.contour(X+x, Y, Z, [x], zdir='x',colors=('red',)) 

    # must set plot limits because the contour will likely extend 
    # way beyond the displayed level. Otherwise matplotlib extends the plot limits 
    # to encompass all values in the contour. 
    ax.set_zlim3d(zmin, zmax) 
    ax.set_xlim3d(xmin, xmax) 
    ax.set_ylim3d(ymin, ymax) 

    plt.show() 

if __name__ == '__main__': 
    plot_implicit(heart_3d) 

मैं अजगर पहली पंक्ति में python3 को बदल दिया है। यदि आप पायथन 2 का उपयोग करते हैं तो आपको इसे वापस सेट करने की आवश्यकता है।

enter image description here

संबंधित मुद्दे