Skip to main content
  1. Python za inženirje - video/

016 - Geometrijske karakteristike - moduli

Pzi Python
Table of Contents
Python za inženirje - video - This article is part of a series.
Part 16: This Article
Program za izračun geometrijskih karakteristik poligonalnih prerezov. Uporaba modulov.

Povezave
#

Izvorna koda
#

geokar.py
#

#! /usr/bin/env python

import geometrijske_karakteristike as gk

def izpisi_vrednost(naslov, vrednost):
    print("{:>5} = {:.3f}".format(naslov, vrednost))

def main():
    # Vnos podatkov
    print("Vnos podatkov ...")
    n = int(input("Podaj število točk: "))

    x = []
    y = []
    for i in range(n):
        vrstica = input("Točka {}: ".format(i + 1))
        besede = vrstica.split()
        x.append(float(besede[0]))
        y.append(float(besede[1]))

    x.append(x[0])
    y.append(y[0])

    # Izračun količin
    print()
    print("Izračun ...")
    Ax = gk.Ax(n, x, y)
    Sx = gk.Sx(n, x, y)
    Sy = gk.Sy(n, x, y)
    Ix = gk.Ix(n, x, y)
    Iy = gk.Iy(n, x, y)
    Ixy = gk.Ixy(n, x, y)
    xt = gk.xt(n, x, y)
    yt = gk.yt(n, x, y)
    Ixt = gk.Ixt(n, x, y)
    Iyt = gk.Iyt(n, x, y)
    Ixyt = gk.Ixyt(n, x, y)

    # Izpis rezultatov
    print()
    print("Izpis ...")
    izpisi_vrednost("Ax", Ax)
    izpisi_vrednost("Sx", Sx)
    izpisi_vrednost("Sy", Sy)
    izpisi_vrednost("Ix", Ix)
    izpisi_vrednost("Iy", Iy)
    izpisi_vrednost("Ixy", Ixy)
    izpisi_vrednost("xt", xt)
    izpisi_vrednost("yt", yt)
    izpisi_vrednost("Ixt", Ixt)
    izpisi_vrednost("Iyt", Iyt)
    izpisi_vrednost("Ixyt", Ixyt)

if __name__ == "__main__": main()

geometrijske_karakteristike.py
#

#! /usr/bin/env python
# -*- coding: utf-8 -*-

# Funkcije za izračun geometrijskih karakteristik

def Ax(n, x, y):
    v = 0.0
    for i in range(n):
        v = v + (x[i+1] + x[i]) * (y[i+1] - y[i])

    return 0.5 * v

def Sx(n, x, y):
    v = 0.0
    for i in range(n):
        v = v + (x[i+1] - x[i]) * (y[i+1]**2 + y[i] * y[i+1] + y[i]**2)

    return -1. / 6. * v

def Sy(n, x, y):
    v = 0.0
    for i in range(n):
        v = v + (y[i+1] - y[i]) * (x[i+1]**2 + x[i] * x[i+1] + x[i]**2)

    return 1. / 6. * v

def Ix(n, x, y):
    v = 0.0
    for i in range(n):
        v = v + (x[i+1] - x[i]) * (y[i+1]**3 +  y[i+1]**2 * y[i] + y[i+1] * y[i]**2 + y[i]**3)

    return -1. / 12. * v

def Iy(n, x, y):
    v = 0.0
    for i in range(n):
        v = v + (y[i+1] - y[i]) * (x[i+1]**3 +  x[i+1]**2 * x[i] + x[i+1] * x[i]**2 + x[i]**3)

    return 1. / 12. * v

def Ixy(n, x, y):
    v = 0.0
    for i in range(n):
        v = v + (y[i+1] - y[i]) * (y[i+1] * (3* x[i+1]**2 + 2 * x[i] * x[i+1] + x[i]**2) + y[i] * (3 * x[i]**2 + 2 * x[i] * x[i+1] + x[i+1]**2))

    return -1. / 24. * v

def xt(n, x, y):
    return Sy(n, x, y) / Ax(n, x, y)
    
def yt(n, x, y):
    return Sx(n, x, y) / Ax(n, x, y)
    
def Ixt(n, x, y):
    return Ix(n, x, y) - yt(n, x, y)**2 * Ax(n, x, y)
    
def Iyt(n, x, y):
    return Iy(n, x, y) - xt(n, x, y)**2 * Ax(n, x, y)

def Ixyt(n, x, y):
    return Ixy(n, x, y) + xt(n, x, y) * yt(n, x, y) * Ax(n, x, y)
Python za inženirje - video - This article is part of a series.
Part 16: This Article