void Camera::relativeTick() { double cos = std::cos(unit->angle); double sin = std::sin(unit->angle); double upsin = std::sin(unit->upangle); double upcos = std::cos(unit->upangle); cur_sin += (sin - cur_sin) * 0.2f; cur_cos += (cos - cur_cos) * 0.2f; cur_upsin += (upsin - cur_upsin) * 0.2f;; cur_upcos += (upcos - cur_upcos) * 0.2f; vec3<float> relative_position; getRelativePos(relative_position); vec3<float> camTarget; const Location& unitPos = unit->getEyePosition(); camTarget.x = unitPos.x.getFloat(); camTarget.y = unitPos.y.getFloat(); camTarget.z = unitPos.z.getFloat(); float multiplier = 0.04f; currentRelative += (relative_position - currentRelative) * multiplier; currentPosition += (camTarget - currentPosition) * multiplier; currentTarget += (camTarget - currentTarget) * multiplier; }
void Camera::fpsTick() { double cos = std::cos(unit->angle); double sin = std::sin(unit->angle); double upsin = std::sin(unit->upangle); double upcos = std::cos(unit->upangle); cur_sin += (sin - cur_sin) * 0.2f; cur_cos += (cos - cur_cos) * 0.2f; cur_upsin += (upsin - cur_upsin) * 0.2f;; cur_upcos += (upcos - cur_upcos) * 0.2f; vec3<float> relative_position; getRelativePos(relative_position); vec3<float> camTarget; const Location& unitPos = unit->getEyePosition(); camTarget.x = unitPos.x.getFloat(); camTarget.y = unitPos.y.getFloat(); camTarget.z = unitPos.z.getFloat(); currentPosition += (camTarget - currentPosition) * 0.2f; fps_direction = currentPosition; fps_direction.x -= relative_position.x; fps_direction.y -= relative_position.y; fps_direction.z -= relative_position.z; }
bool inTrie(const char *word) { trieNode *node = rootNode; for (int i = 0; i < strlen(word); ++i) { int pos = getRelativePos(word[i]); if (node -> child[pos] == NULL) return false; node = node -> child[pos]; } if (node -> isLeaf) return true; else return false; }
/* * ----------------------------------------------------------------- * Driver for calculating end to end distances and radii of gyration * (cis,trans,total) * ----------------------------------------------------------------- */ void calcReRg(void) { double CM[3], // center of mass of chain CMcis[3], // CM of cis part of chain CMtrans[3], // CM of trans part of chain rmon[p.Nmon][3]; // relative positions of monomers getRelativePos(rmon, CM, CMcis, CMtrans); printReRg(rmon, CM); if (p.poreWidth > 0) printReRg_cisTrans(rmon, CMcis, CMtrans); }
void insertInTrie(char *word) { trieNode *temp, *node = rootNode; for (int i = 0; i < strlen(word); ++i) { int pos = getRelativePos(word[i]); if (node -> child[pos] == NULL) { temp = getNode(); node -> child[pos] = temp; node = temp; } else { node = node -> child[pos]; } } node -> isLeaf = true; ++dictionarySize; }
void DiacriticDisambiguationBase::printDiacritics(QString unvoc, const QList<Diacritics> &d, AmbiguitySolution sol, QTextStream *o) { //for multiple diacritcs (*o) << sol.voc << "\t" << d.size() << "\t" << diacriticsCount; for (int i = 0; i < d.size(); i++) { const Diacritics &dia = d[i]; if (!dia.isEmpty()) { (*o) << "\t" << i << "\t"; printDiacriticDisplay(dia, o); int relPos, morphSize; MorphemeType t = sol.getMorphemeTypeAtPosition(i, dia, relPos, morphSize); QChar letterBefore = unvoc[i]; (*o) << "\t" << (int)t << "\t" << relPos << "\t" << getRelativePos(relPos, morphSize) << "\t" << letterBefore << "\t" << isLongVowel(letterBefore) << "\t" << isShamsi(letterBefore) << "\t" << sol.stemPOS; } } }