2010-12-18 2 views
9

냅스터로 마음을 그리는 방법은? 나는 그림을 그릴 수있는 방법을 찾기 위해 구글과 함께 검색을했지만, 나는 그것을 유두로 그리는 방법을 알고 싶다. 누군가 도울 수 있습니까? 사진은 this과 같아야합니다냅스터로 마음을 그리는 법

3D Heart

+0

방정식 : http://mathworld.wolfram.com/HeartSurface.html http://www.mathematische-basteleien.de/heart.htm – jfs

+1

당신이 말할 수를 전 방향성? –

+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

OP 링크는 ** 3D ** 하트에 연결됩니다. – 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을 볼 수 있습니다. 어떻게하면 3D 난로를 그릴 수 있습니다.

기사의 저자

함께 can be found here 음모를 꾸미고 암시 적 기능과 난로의 암시 적 기능을 넣어, 아래의 코드를 가지고있다 : 나는 첫 번째 행에 python3 파이썬을 변경 한

#!/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) 

합니다. 파이썬 2를 사용한다면 다시 설정해야합니다. 3 차원 심장

enter image description here

관련 문제