-
Kod:
float crossPoint01 =
(
((startPoint.Key * endPoint.Value - startPoint.Value * endPoint.Key) * (startTriangle.vertex0.X - startTriangle.vertex1.X)) -
((startTriangle.vertex0.X * startTriangle.vertex1.Y - startTriangle.vertex0.Y * startTriangle.vertex1.X) * (startPoint.Key - endPoint.Key))
) / (
((startPoint.Key - endPoint.Key) * (startTriangle.vertex0.Y - startTriangle.vertex1.Y)) - (startPoint.Value - endPoint.Value) * (startTriangle.vertex0.X - startTriangle.vertex1.X)
);
Równanie prostych dla boku trójkąta i raya zdefiniowanego przez punkty startPoint i endPoint. Część mojego raytracera, którego uzywam w projekcie.
-
Prosta klasa dla callbacków.
Kod:
#include <vector>
template<class RT, class AT, class OT>
class Callback
{
typedef RT (*tCallbackF)(AT arg);
typedef RT (OT::*tCallbackM)(AT arg);
typedef std::vector<tCallbackF> tCallbackListF;
typedef std::pair<OT*,tCallbackM> tCallbackMp;
typedef std::vector<tCallbackMp> tCallbackListM;
tCallbackListF m_callbackListF;
tCallbackListM m_callbackListM;
public:
void registerListener(OT*, tCallbackM method);
void registerListener(tCallbackF method);
void notify(AT arg);
};
template<class RT, class AT, class OT>
void Callback<RT, AT, OT>::notify(AT arg)
{
for (auto f : m_callbackListF)
f(arg);
for (auto m : m_callbackListM)
(m.first->*m.second)(arg);
}
template<class RT, class AT, class OT>
void Callback<RT, AT, OT>::registerListener(tCallbackF method)
{
m_callbackListF.push_back(method);
}
template<class RT, class AT, class OT>
void Callback<RT, AT, OT>::registerListener(OT* obj, tCallbackM method)
{
tCallbackMp pair(obj, method);
m_callbackListM.push_back(pair);
}
Oraz użycie:
Kod:
#include "Callback.h"
class Test
{
public:
Test() { }
void foo(int x) { std::cout << "Test::foo() called: " << x << std::endl; }
};
void bar(int x)
{
{ std::cout << "bar() called: " << x << std::endl; }
}
int main()
{
Test test;
Callback<void, int, Test> callback;
callback.registerListener(&test, &Test::foo);
callback.registerListener(&bar);
callback.notify(10);
return 0;
}
-
Zadanie na konkurs MasterCoder numer siedem - Algorytm Dijkstry na nietypowym nieskierowanym grafie , kolejka priorytetowa została napisana w oparciu o implementację z neta xD
https://anonfiles.com/file/a886d423f...d67ca4fdc2758e