예제 #1
0
파일: camera.cpp 프로젝트: Apodus/tktl_demo
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;
}
예제 #2
0
파일: camera.cpp 프로젝트: Apodus/tktl_demo
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;
}
예제 #3
0
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;
}
예제 #4
0
파일: calc_rerg.c 프로젝트: mghughes/dpd
/*
 * -----------------------------------------------------------------
 * 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);
}
예제 #5
0
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;
}
예제 #6
0
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;
        }
    }
}