之前一直使用的pick方法就是將第乙個點選到的節點儲存下來,如果場景中只有乙個物體,當然是沒有問題的。當場景中出現多個物體,並且每個物體設定了標籤,是可以被修改還是不能被修改,當兩個物體重合的時候就不能得到正確的結果。
正確的做法是:用迭代器遍歷所有獲取到的節點並再遍歷nodepath,找到需要的節點,並根據標籤判斷其是否可以被選中來執行操作。
這裡我對物體標籤設定的方法應該是不夠科學的,我用了乙個全域性變數,乙個map來儲存了模型的名字和乙個布林值
extern modelindex modelindex;
主函式中是
std::listmodellist;
model1->setname("aorta");
modelindex[model1->getname()] = true;
其中 modelindex是 std::map < std::string, bool >的別名,每新增乙個模型,就給map中以模型節點為名字,bool為值向map中新增節點。
暫時想不到更好的方法。如果你們有好一點的想法,請務必告訴我!
下面貼出pick的實現。其實和之前的沒有多大的變化,詳細介紹見
void pqeventhandler::pick(double x, double y)
else
else}}
}}
} }else
}
C 學習筆記 19
std map 和 std unordered map 特性和各操作時間複雜度?1 std map對應的資料結構是紅黑樹。紅黑樹是一種近似於平衡的二叉查詢樹,裡面的資料是有序的。在紅黑樹上做查詢 插入 刪除操作的時間複雜度為o logn 2 std unordered map對應雜湊表,雜湊表的特點...
java學習筆記 19
1 字元流 掌握 1 位元組流操作中文資料不是特別的方便,所以就出現了轉換流。轉換流的作用就是把位元組流轉換字元流來使用。2 轉換流其實是乙個字元流 字元流 位元組流 編碼表 3 編碼表 a 就是由字元和對應的數值組成的一張表 b 常見的編碼表 ascii iso 8859 1 gb2312 gbk...
學習筆記之19
orm 正向操作 obj models.userinfo.objects.filter first print obj.age,obj.ug.title orm 反向操作 obj models.userinfo.objects.filter first 先建立外來鍵的物件for i in obj.u...