Опубликован: 27.09.2006 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный индустриальный университет
Лекция 13:

Изображение полиэдра

Полный текст проекта

Сначала приведем содержание управляющего файла для утилиты make.

MAKEFILE

# -*- mode: makefile -*-

.PHONY : all doc clean veryclean cube ccc sticks tagl king dragon            \
         x29 apple glass4 torus pear vw bones beeth teapot cow babem

JAVAC      = javac

JAVAFILES  := Xterm.java R3Vector.java Vertex.java Edge.java Facet.java      \
              Polyedr.java Segment.java L1ListSegments.java                  \
              AwtDrawer.java SimpleDrawer.java ShadowDrawer.java             \
              SmartDrawer.java PolyedrTest.java

CLASSFILES := Xterm.class R3Vector.class Vertex.class Edge.class Facet.class \
              Polyedr.class Segment.class L1ListSegments.class               \
              AwtDrawer.class SimpleDrawer.class ShadowDrawer.class          \
              SmartDrawer.class PolyedrTest.class

%.class: %.java
	$(JAVAC) $<

cube:	$(CLASSFILES)
	java PolyedrTest data/cube.geom

ccc:	$(CLASSFILES)
	java PolyedrTest data/ccc.geom

sticks:	$(CLASSFILES)
	java PolyedrTest data/sticks.geom

tagl:	$(CLASSFILES)
	java PolyedrTest data/tagl.geom

king:	$(CLASSFILES)
	java PolyedrTest data/king.geom

dragon:	$(CLASSFILES)
	java PolyedrTest data/dragon.geom

x29:	$(CLASSFILES)
	java PolyedrTest data/x29.geom

apple:	$(CLASSFILES)
	java PolyedrTest data/apple_logo.geom

glass4:	$(CLASSFILES)
	java PolyedrTest data/glass4.geom

torus:	$(CLASSFILES)
	java PolyedrTest data/torus.geom

pear:	$(CLASSFILES)
	java PolyedrTest data/pear.geom

vw:	$(CLASSFILES)
	java PolyedrTest data/vw.geom

bones:	$(CLASSFILES)
	java PolyedrTest data/foot_bones.geom

beeth:	$(CLASSFILES)
	java PolyedrTest data/beethoven.geom

teapot:	$(CLASSFILES)
	java PolyedrTest data/teapot.geom

cow:	$(CLASSFILES)
	java PolyedrTest data/cow.geom

babem:	$(CLASSFILES)
	java PolyedrTest data/babem.geom

doc:
	javadoc -d doc -version -author -private *.java

expand:	
	for i in Makefile *.java; do expand $$i >$$i.expand; done

clean:
	rm -f *.class *.expand

veryclean:
	rm -f *.class *.expand doc/*.html

А вот как выглядят все остальные файлы проекта.

R3Vector.java

/**
 * @author Е.А. Роганов
 * @version 1.1	
 * Класс R3Vector, реализующий вектор (Vector) в пространстве (R3).
 */
public class R3Vector {
    /**
     * Координаты вектора.
     */
     private double x, y, z;

    /**
     * Конструктор вектора, заданного его координатами.
     * @param x X-координата вектора.
     * @param y Y-координата вектора.
     * @param z Z-координата вектора.
     */
    public R3Vector(double x, double y, double z) {
	this.x = x; this.y = y; this.z = z;
    }
    /**
     * Конструктор вектора, координаты которого вводятся с клавиатуры.
     * @exception Exception Исключительная ситуация, возникающая
     * при ошибках ввода координат с клавиатуры.
     */
    public R3Vector() throws Exception {
	x = Xterm.inputDouble("X-коорд. вектора проектирования -> ");
	y = Xterm.inputDouble("Y-коорд. вектора проектирования -> ");
	z = Xterm.inputDouble("Z-коорд. вектора проектирования -> ");
    }
    /**
     * Получить X-координату вектора.
     * @return X-координата вектора.
     */
    public final double getX() {
	return x;
    }
    /**
     * Получить Y-координату вектора.
     * @return Y-координата вектора.
     */
    public final double getY() {
	return y;
    }
    /**
     * Получить Z-координату вектора.
     * @return Z-координата вектора.
     */
    public final double getZ() {
	return z;
    }
     /**
     * Нормировать ненулевой вектор.
     */
    public final R3Vector normalize() {
	double norm = Math.sqrt(x*x+y*y+z*z);
	x /= norm; y /= norm; z /= norm;
	return this;
    }
    /**
     * Найти сумму двух векторов.
     * @param a Первый вектор-слагаемое.
     * @param b Второй вектор-слагаемое.
     * @return Сумма векторов.
     */
    public static R3Vector plus(R3Vector a, R3Vector b) {
	return new R3Vector(a.x+b.x, a.y+b.y, a.z+b.z);
    }
    /**
     * Добавить заданный вектор.
     * @param b Добавляемый вектор.
     * @return Вектор-результат.
     */
    public final R3Vector plus(R3Vector b) {
	x += b.x; y += b.y; z += b.z;
	return this;
    }
    /**
     * Найти разность двух векторов.
     * @param a Вектор-уменьшаемое.
     * @param b Вектор-вычитаемое.
     * @return Разность векторов.
     */
    public static R3Vector minus(R3Vector a, R3Vector b) {
	return new R3Vector(a.x-b.x, a.y-b.y, a.z-b.z);
    }
    /**
     * Вычесть заданный вектор.
     * @param b Вычитаемый вектор.
     * @return Вектор-результат.
     */
    public final R3Vector minus(R3Vector b) {
	x -= b.x; y -= b.y; z -= b.z;
	return this;
    }
    /**
     * Найти произведение вектора на число.
     * @param k Число, на которое умножается вектор.
     * @param a Исходный вектор.
     * @return Вектор-результат.
     */
    public static R3Vector mul(double k, R3Vector a) {
	return new R3Vector(k*a.x, k*a.y, k*a.z);
    }
    /**
     * Умножить вектор на заданное число.
     * @param k Число, на которое умножается вектор.
     * @return Вектор-результат.
     */
    public final R3Vector mul(double k) {
	x *= k; y *= k; z *= k;
	return this;
    }
    /**
     * Найти скалярное произведение векторов.
     * @param a Первый вектор.
     * @param b Второй вектор.
     * @return Скалярное произведение векторов.
     */
    public static double scalMul(R3Vector a, R3Vector b) {
	return a.x*b.x + a.y*b.y + a.z*b.z;
    }
    /**
     * Найти векторное произведение векторов.
     * @param a Первый вектор.
     * @param b Второй вектор.
     * @return Векторное произведение векторов.
     */
    public static R3Vector vectMul(R3Vector a, R3Vector b) {
	return new R3Vector(a.y*b.z-a.z*b.y, a.z*b.x-a.x*b.z, a.x*b.y-a.y*b.x);
    }
}
Анастасия Халудорова
Анастасия Халудорова
екатерина яковлева
екатерина яковлева
Ирина Тютрина
Ирина Тютрина
Россия, Усолье-Сибирское
Глеб Бочкарёв
Глеб Бочкарёв
Россия