Python İle Ağırlık Merkezi Bulma ve PHP ile Çizdirme

 

py Dosyası

xeksenindemoment=[] 
yeksenindemoment=[]
xeksenindekoord=[]
yeksenindekoord=[]
kutleler=[]

def kutleal(m,x,y):     
    kutleler.append(m)
    xeksenindekoord.append(x)
    yeksenindekoord.append(y)
    xmoment=m*x
    ymoment=m*y 
    xeksenindemoment.append(xmoment)
    yeksenindemoment.append(ymoment)
def sor():              
    islem=raw_input("Kütle girmek için birşey yazmadan enter, çizim dosyasını yazdırmak için ciz() yazıp enter, çıkmak için exit() yazıp entera basınız")
    if (islem==''):
        if len(kutleler)==0:
            m=int(raw_input("Kütlenin ağırlığını giriniz"))
            if (m==0 or m<0):
                print "0 veya daha az birim kütleli ağırlık olmaz"
                sor()
            else:
                x=int(raw_input("Kütlenin x eksenindeki koordinatını giriniz"))    
                y=int(raw_input("Kütlenin y eksenindeki koordinatını giriniz"))
                kutleal(m,x,y)
        else:
            m=int(raw_input("Yeni kütlenin ağırlığını giriniz"))
            if (m==0):
                print "0 birim kütleli ağırlık olmaz"
                sor()
            else:
                x=int(raw_input("Yeni kütlenin x eksenindeki koordinatını giriniz"))    
                y=int(raw_input("Yeni kütlenin y eksenindeki koordinatını giriniz"))
                kutleal(m,x,y)
    elif (islem=='ciz()'):
         ciz()
    elif (islem=='exit()'):
        exit()
    else:
        sor()

    
def hesapla():          
    global xkoord, ykoord, a, b, kutle
    a=sum(xeksenindemoment)
    b=sum(yeksenindemoment)
    kutle=sum(kutleler)
    xkoord=a/kutle
    ykoord=b/kutle
    print("Su anda kütlelerin merkezi(%s, %s) koordinatlarında ve toplam %s birimdir")%(xkoord,ykoord,kutle)

def ciz():          
    import os, math
    ucnoktalar=[math.fabs(min(xeksenindekoord)),math.fabs(min(yeksenindekoord)),max(xeksenindekoord),max(yeksenindekoord)]
    buyuk=max(ucnoktalar)
    if (250/buyuk)>25:
        oran=25
    else:
        oran=250/buyuk
    cizim=open("ciz.php","w")
    cizim.write("""<?
Header('Content-Type: image/jpg');
$im = ImageCreateTruecolor(600,600);
ImageFilledRectangle($im,550,300,50,300,0x00ffffff);//x ekseni
ImageFilledRectangle($im,300,550,300,50,0x00ffffff);//y ekseni
$white = ImageColorAllocate($im,255,255,255);
$red = ImageColorAllocate($im,255,0,0);
""")
    for i in range(len(xeksenindekoord)):
        xkoordinat=oran*xeksenindekoord[i]
        ykoordinat=oran*yeksenindekoord[i]
        xekseniyazida=xeksenindekoord[i]
        yekseniyazida=yeksenindekoord[i]
        kutle1=kutleler[i]
        cizim.write("ImageFilledRectangle($im,"+str(300+xkoordinat-0.5*oran)+","+str(300-ykoordinat+0.5*oran)+","+str(300+xkoordinat+0.5*oran)+","+str(300-ykoordinat-0.5*oran)+",0x00ffffff);\n")
        cizim.write("ImageString($im,"+str(oran)+","+str(300+xkoordinat-oran*1)+","+str(300-ykoordinat+oran)+",'("+str(xekseniyazida)+","+str(yekseniyazida)+")',$white);\n")
        cizim.write("ImageString($im,"+str(oran)+","+str(300+xkoordinat)+","+str(300-ykoordinat-oran)+",'"+str(kutle1)+"',$white);\n")
    cizim.write("ImageFilledRectangle($im,"+str(300+xkoord*oran-0.25*oran)+","+str(300-ykoord*oran+0.25*oran)+","+str(300+xkoord*oran+0.25*oran)+","+str(300-ykoord*oran-0.25*oran)+",0x00ff0000);\n")
    cizim.write("ImageString($im,"+str(oran)+","+str(300+xkoord*oran-oran*0.5)+","+str(300-ykoord*oran+oran*0.5)+",'("+str(xkoord)+","+str(ykoord)+")',$red);\n")            
    cizim.write("ImageString($im,"+str(oran)+","+str(300+xkoord*oran)+","+str(300-ykoord*oran-oran*1)+",'"+str(kutle)+"',$red);\n")
    cizim.write("""ImageFilledRectangle($im,0,550,15,565,0x00ff0000);
ImageString($im,20,20,550,'Kutle Merkezi',$white);
ImageFilledRectangle($im,0,567,15,582,0x00ffffff);
ImageString($im,20,20,567,'Kutleler',$white);
ImagePNG($im);?""")
    print "###Ciz.php girdiğiniz değerler doğrultusunda oluşturuldu###"

def main():         
    try:
        sor()
    except(ValueError):
        print "Son yazdığınız kayıt değer hatası yaptığınız için kaydedilmedi. Yalnızca sayı girerek tekrar deneyin"
        sor()
    hesapla()
        
while True:
    main()
Tarih:
Hit: 624677
Yazar: ZoRKaYa



Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.