test
unknown
c_cpp
3 years ago
2.5 kB
5
Indexable
struct Value { bool isFormulized = false; bool isPlain = true; bool isValid; // şimdilik kullanamdım ama kullanılırmı bilmiyom string sValue; // lua scripti double get(Luastack & GlobalLuaStack); void set(double arg,Luastack & GlobalLuaStack); void set(string arg,Luastack & GlobalLuaStack); } void Value::set(double arg) { // TODO: fail durumu kontrol et this->sValue = toString(arg); this->isPlain = false; } void Value::set(string arg) { // TODO: fail durumu kontrol et this->sValue = arg; this->isFormulized = true this->isPlain = false; } double Value::get(Luastack & GlobalLuaStack) { // Lua bunu lütfen çözermisin // fail etmesini kontrol edilmeli set ederken return GlobalLuaStack.runScript(this->sValue) } struct Geometry; { std::vector<Value> values; int getDOF(); // En az 2 nokta fixlenmeli yani 6 value plain değilse (2 boyutta öteleme ve dönmeyi kıstlar) (NOT: geometri curve ise iş farklı tüm pointler ve valueler plain olammalı) . Degree off freedom 0 olunca gemotri fixlenmiş demektir bool isOverConstrained(); bool isFullyConstrained(){ return 0 == this->getDOF();}; // gerekli ve yeterli şartlar sağlnadı } /// struct Constrait { Geometry * a; Geometry * b; } struct Fix:Constrait // koordinat çapalama fix leme constirati , tegetlik, paralellik, diklik, eşit, açı, aynalama { // todo: herhangi bir geometriye ait value yi çapalayan fonsiyonlar buraya } void applyFixConstaitToLineGeomtriStartPointXComponent(Geometry & line, Constrait & fix); void applyFixConstaitToLineGeomtriStartPointYComponent(Geometry & line, Constrait & fix); void applyFixConstaitToLineGeomtriEndPointXComponent(Geometry & line, Constrait & fix); void applyFixConstaitToLineGeomtriEndPointYComponent(Geometry & line, Constrait & fix); struct Line:Geometry // circle , bezier curve , { PointXY getStartPoint(){ return PointXY( this->values[0].get() , this->values[1].get());}; PointXY getEndPoint(){ return PointXY( this->values[2].get() , this->values[3].get());}; } class SketchSolver { std::vector<Constrait> constraints; std::vector<Geometry> geometries; void inspect(){ this->loadCurrentObjectToLuaStack(GlobalLuaStack); this->performConstiants();// önce contrainları this->checkGeomtries(GlobalLuaStack); }; private: void loadCurrentObjectToLuaStack(Luastack lua); void performConstiants(); void checkGeomtries(); }
Editor is loading...