git-svn-id: svn://db.shs.com.ru/libs@658 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2019-12-06 13:38:17 +00:00
parent 9427d429c1
commit c5bbf5ef8f
7 changed files with 471 additions and 22 deletions

View File

@@ -303,7 +303,18 @@ Mesh * Primitive::torus(int segments_main, int segments_second, float radius_mai
}
pcnt = v.size();
}
if (end_angle < 360.) {
Mesh * cap = Primitive::disc(segments_second-1, radius_second * 2, radius_second * 2, true);
cap->rotatePoints(90, 1, 0, 0);
cap->translatePoints(radius_main, 0, 0);
ret->append(cap);
delete cap;
cap = Primitive::disc(segments_second-1, radius_second * 2, radius_second * 2, false);
cap->rotatePoints(90, 1, 0, 0);
cap->translatePoints(radius_main, 0, 0);
cap->rotatePoints(end_angle, 0, 0, 1);
ret->append(cap);
}
return ret;
}

View File

@@ -89,7 +89,7 @@ QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) {
//camera().aim_ = camera().pos_;
ktm_.restart();
Mesh * m = Primitive::torus(30, 12, 1., 0.1, 90);
Mesh * m = Primitive::torus(100, 40, 1., 0.4, 360);
//Mesh * m = Primitive::coneFrame(10, 1, 1., 2.);
//QMatrix4x4 mat;
//mat.rotate(90, 0,1,0);

View File

@@ -23,6 +23,7 @@
#include <QGraphicsRectItem>
#include <QImageReader>
#include <QMessageBox>
#include "qad_types.h"
QGLViewWindow::QGLViewWindow(QWidget * parent): QMainWindow(parent), Ui::QGLViewWindow() {
@@ -91,7 +92,7 @@ QGLViewWindow::QGLViewWindow(QWidget * parent): QMainWindow(parent), Ui::QGLView
session.load();
loadFile("axis.DAE.qgl");
//loadFile("axis.DAE.qgl");
//matEditor->setMaterial(const_cast<ObjectBase*>(view->view()->scene()->rootObject()->child(0))->material());
/*Scene * sc = loadScene("truck.obj");
//view->view()->scene()->addScene(sc);

View File

@@ -57,7 +57,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
<number>3</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@@ -440,8 +440,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>960</width>
<height>737</height>
<width>968</width>
<height>636</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
@@ -1079,8 +1079,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>999</width>
<height>853</height>
<width>1009</width>
<height>877</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
@@ -1107,17 +1107,11 @@
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Страница</string>
<string>Primitives</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="PropertyEditor" name="treeProps">
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
<widget class="PrimitiveEditor" name="primitiveEditor" native="true"/>
</item>
</layout>
</widget>
@@ -1169,7 +1163,7 @@
<x>0</x>
<y>0</y>
<width>1125</width>
<height>24</height>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@@ -1391,11 +1385,6 @@
<header>widgets/object_editor.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>PropertyEditor</class>
<extends>QTreeWidget</extends>
<header>widgets/propertyeditor.h</header>
</customwidget>
<customwidget>
<class>SceneTree</class>
<extends>QWidget</extends>
@@ -1408,6 +1397,12 @@
<header>widgets/materials_editor.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>PrimitiveEditor</class>
<extends>QWidget</extends>
<header>primitiveeditor.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../../qad/utils/qad_utils.qrc"/>

View File

@@ -0,0 +1,30 @@
#include "primitiveeditor.h"
#include "ui_primitiveeditor.h"
#include <QMetaEnum>
PrimitiveEditor::PrimitiveEditor(QWidget *parent) : QWidget(parent), ui(new Ui::PrimitiveEditor) {
ui->setupUi(this);
QMetaEnum me = metaObject()->enumerator(0);
for (int i=0; i<me.keyCount(); ++i)
ui->comboPrimitives->addItem(me.key(i));
}
PrimitiveEditor::~PrimitiveEditor() {
delete ui;
}
void PrimitiveEditor::assignQGLView(QGLView * v) {
view = v;
// connect(view, SIGNAL(selectionChanged()), this, SLOT(selectionChanged()));
// connect(view, SIGNAL(objectsPositionChanged()), this, SLOT(selectionChanged()));
// connect(view->scene(), SIGNAL(treeChanged()), this, SLOT(selectionChanged()));
// selectionChanged();
}
void PrimitiveEditor::showEditors() {
}

View File

@@ -0,0 +1,40 @@
#ifndef PRIMITIVEEDITOR_H
#define PRIMITIVEEDITOR_H
#include <QWidget>
#include "qglview.h"
namespace Ui {
class PrimitiveEditor;
}
class PrimitiveEditor : public QWidget {
Q_OBJECT
public:
enum PrimitiveType {
Plane,
Cube,
Ellipsoid,
};
Q_ENUMS(PrimitiveType)
explicit PrimitiveEditor(QWidget *parent = nullptr);
~PrimitiveEditor();
void assignQGLView(QGLView * v);
protected:
void showEditors();
Ui::PrimitiveEditor *ui;
QGLView * view;
QMap<PrimitiveType, QList<QWidget *> > editors;
};
#endif // PRIMITIVEEDITOR_H

View File

@@ -0,0 +1,372 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PrimitiveEditor</class>
<widget class="QWidget" name="PrimitiveEditor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>575</width>
<height>608</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="EComboBox" name="comboPrimitives"/>
</item>
<item>
<widget class="QWidget" name="widgetWidth" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Width:</string>
</property>
</widget>
</item>
<item>
<widget class="ScrollSpinBox" name="spinWidth">
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widgetLength" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Length:</string>
</property>
</widget>
</item>
<item>
<widget class="ScrollSpinBox" name="spinLength">
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widgetHeight" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Height</string>
</property>
</widget>
</item>
<item>
<widget class="ScrollSpinBox" name="spinHeight">
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widgetRadius1" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>Radius 1:</string>
</property>
</widget>
</item>
<item>
<widget class="ScrollSpinBox" name="spinRadius">
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widgetRadius2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Radius 2:</string>
</property>
</widget>
</item>
<item>
<widget class="ScrollSpinBox" name="spinRadius2">
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widgetAngle" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Angle:</string>
</property>
</widget>
</item>
<item>
<widget class="SpinSlider" name="spinAngle">
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="value">
<double>360.000000000000000</double>
</property>
<property name="singleStep">
<double>4.500000000000000</double>
</property>
<property name="pageStep">
<double>90.000000000000000</double>
</property>
<property name="suffix">
<string>°</string>
</property>
<property name="tickPosition">
<enum>QSlider::TicksAbove</enum>
</property>
<property name="tickInterval">
<number>90</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widgetSegments" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Segments:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinSegments">
<property name="minimum">
<number>2</number>
</property>
<property name="maximum">
<number>1000</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="stepType">
<enum>QAbstractSpinBox::AdaptiveDecimalStepType</enum>
</property>
<property name="value">
<number>16</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widgetSegments2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_9">
<property name="text">
<string>Segments 2:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinSegments2">
<property name="minimum">
<number>2</number>
</property>
<property name="maximum">
<number>1000</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="stepType">
<enum>QAbstractSpinBox::AdaptiveDecimalStepType</enum>
</property>
<property name="value">
<number>16</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="flipNormals">
<property name="text">
<string>Flip normals</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>220</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="buttonAdd">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="buttonReplace">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Replace</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>SpinSlider</class>
<extends>QWidget</extends>
<header>spinslider.h</header>
</customwidget>
<customwidget>
<class>EComboBox</class>
<extends>QComboBox</extends>
<header>ecombobox.h</header>
</customwidget>
<customwidget>
<class>ScrollSpinBox</class>
<extends>QWidget</extends>
<header>scroll_spin_box.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>