void RenderProContMOP::generateSample(const vector<vector<double>> &obj){ if (GET_NUM_DIM == 1){ m_sample.resize(m_divNum); for (int i = 0; i<m_divNum; ++i){ vector<float> v(2); v[0] = m_rangeXMap.min + m_rangeXMap.range*i / m_divNum; v[1] = 0; v.push_back(m_rangeZMap.min + m_rangeZMap.range*(m_rangeVZ.max - m_pop[toZ(0, i, m_divNum)]->rank()) / m_rangeVZ.range); m_sample[i]=v; } } else { m_sample.resize(m_divNum*m_divNum); for (int i = 0; i<m_divNum; ++i){ for (int j = 0; j<m_divNum; ++j){ vector<float> v(2); v[0] = m_rangeXMap.min + m_rangeXMap.range*i / m_divNum; v[1] = m_rangeYMap.min + m_rangeYMap.range*j / m_divNum; int idx = toZ(i, j, m_divNum); v.push_back(m_rangeZMap.min + m_rangeZMap.range*(m_rangeVZ.max - m_pop[idx]->rank()) / m_rangeVZ.range); m_sample[idx]=v; } } } }
void RenderProContMOP::updateSample(const vector<vector<double>>&obj){ if (GET_NUM_DIM == 1){ for (int i = 0; i<m_divNum; ++i){ m_sample[i][2] = m_rangeZMap.min + m_rangeZMap.range*(m_rangeVZ.max - m_pop[toZ(0, i, m_divNum)]->rank()) / m_rangeVZ.range; } } else { for (int i = 0; i<m_divNum; ++i){ for (int j = 0; j<m_divNum; ++j){ int idx = toZ(i, j, m_divNum); m_sample[idx][2] = m_rangeZMap.min + m_rangeZMap.range*(m_rangeVZ.max - m_pop[idx]->rank()) / m_rangeVZ.range; } } } }
Lab_Colour ColourPickerConversions::toLab(RGB_Colour colour) { float X = toX(colour.r, colour.g, colour.b); float Y = toY(colour.r, colour.g, colour.b); float Z = toZ(colour.r, colour.g, colour.b); float L = toL(Y); float a = toA(X, Y); float b = toB(Y, Z); return Lab_Colour(L, a, b); }
//----------------------------------------------------------------------------// float ColourPickerConversions::toZ(unsigned char R, unsigned char G, unsigned char B) { return toZ(R / 255.0f, G / 255.0f, B / 255.0f); }