Giter Club home page Giter Club logo

hccl-archive's People

Contributors

airhm14 avatar clauxewitz avatar icy7902 avatar nallwhy avatar stephenbaek avatar

hccl-archive's Issues

QuaternionAlgebra float버전 완성하기

현재 QuaternionAlgebra에는 double버전의 함수들만 작성이 완료된 
상태입니다.
이를 참조하시어 float버전 (suffix f가 붙습니다)을 
작성해주시면 되겠습니다.
많은 참여 기다리겠습니다.

역시나 아래에 accept 댓글과 함께 자신이 작업을 
수행하겠다는 의사를 밝혀주시면 좋겠고, 이미 다른 분이 
accept하여 작업을 수행중이라면 이번 issue는 그냥 무시하고 
넘어가시면 됩니다.

Original issue reported on code.google.com by [email protected] on 19 Jul 2012 at 9:59

Isometric muscle-tendon equilibrium

Isometric muscle-tendon equilibrium 입니다.

* Muscle은 기존 코드 사용.
* Tendon은 OpenSim muscle model 중 Schutte1993Muscle에서 가져옴. 
* Optimal force, optimal length, maximal velocity를 muscle property로 입력
* Tendon-slack length를 tendon property로 입력
* Full activation(a = 1.0)을 가정
* 현재의 muscle-tendon length를 입력하여 muscle length, tendon length 
계산

역시 저 말고는 아무도 쓰지 않을 것 같지만;;

Original issue reported on code.google.com by [email protected] on 26 Jul 2012 at 7:12

Mathematics 부분 재정비

현재 기존에 있던 VectorAlgebra 솔루션(.sln)을 없애고 
Mathematics라는 포괄적인 솔루션을 생성하여 그 안에 
VectorAlgebra 및 QuaternionAlgebra 프로젝트로 분류하는 방식으로 
전체 그림을 재정비하였습니다. 추후에 MatrixAlgebra도 추가될 
예정이며, 이 밖에도 기타 SparseMatrix나 다른 여러 수학 연산 
알고리듬들이 추가될 예정입니다.

현재는 제가 함수 틀만 만들어 두어서 작동하지 않는 
코드들이 많습니다.
특히 quaternion의 경우에는 아직 덧셈뺄셈곱셈나눗셈 등도 
구현되지 않은 상태이며,
vector도 역시 아직 부족한 기능들이 많습니다.

따라서 1~2명 정도가 맡아서 이 부분들을 구현해주셨으면 
좋겠습니다.
빠른 accept 기다리겠습니다!

Original issue reported on code.google.com by [email protected] on 19 Jul 2012 at 2:37

Vector-Vector간 Vector-Quaternion간, Quaternion-Quaternion간 Typecast 연산자 정의

typecast용 static 함수가 필요할 것 같네요. C에서도 double에서 
float으로 강제형변환을 한다든가, double에서 int로 
강제형변환을 한다든가 하는 것이 있는데, 이를 위한 typecast 
함수도 구현해야할 것 같습니다. 기본적으로 C++의 
static_cast<>를 따라했으면 싶은데... 기존에 구현되어 있는 
static_cast를 Vector## 시리즈들에 대해서도 overloading하는 
방식으로 구현했으면 합니다. 예를들어

Vector3d a;
// Assign some values to a
Vector3f b = static_cast<Vector3d>(a);

요런식의 변환이 가능하면 좋겠네요. (Vector 뿐만 아니라 
Quaternion도)


마찬가지로 단순히 double에서 float으로 변환하고 이런 문제 
뿐만 아니라 아에 다른 성질의 변수들, 즉 벡터에서 
쿼터니언으로의 변환 등이 가능해야 할 것입니다.
Vector (x, y, z) --> Quaternion (0, x, y, z)
Quaternion (0, x, y, z) --> Vector (x, y, z)
로 변경이 가능해야 합니다. 그래야 point의 rotation 등을 좀 
더 수월하게 계산할 수 있습니다.
이 역시도 static_cast<> 연산자를 오버로딩하는 방식으로 
구현되었으면 합니다.

Original issue reported on code.google.com by [email protected] on 24 Jul 2012 at 6:27

Quaternion에서 constructor추가

아래 세 항목들을 추가해주시면 되겠습니다.

---
Axis-angle로부터 quaternion을 생성하는 생성자
Quaterniond(double angle, const Vector3d& axis);

rotation matrix로부터 quaternion을 생성하는 생성자
Quaterniond(const double* matrix);

Euler angle로부터 quaternion을 생성하는 생성자
Quaterniond(double a, double b, double c, const char* order);

---

이 때 주의하실 점은,
1. rotation matrix는 3x3 column-stacked matrix임. 즉 M_{i,j} ==> M[j*3 + i]
2. Euler angle에서 char* order는 Euler angle의 순서를 나타냄. 즉 
order == "xyz" 이거나 order == "XYZ" 일 경우 X-Y-Z Euler angle이며, 
order == "ZYZ" 혹은 order == "zyz" 일 경우 Z-Y-Z Euler angle을 나타냄.
3. 상기 모든 경우는 QuaternionAlgebra에 이미 구현되어 있으며, 
이를 단순히 Quaterniond 클래스 wrapper를 통해 interface만 
제공해주면 되는 것임. 즉 내부 알고리즘을 새로 구현할 
필요는 없음. 멤버함수 내에서 QuaternionAlgebra 내의 함수를 
호출하는 방식으로 작성.
4. Quaterniond뿐만 아니라 Quaternionf에서도 위 내용을 동일하게 
float버전으로 작성

Original issue reported on code.google.com by [email protected] on 24 Jul 2012 at 9:34

Mesh-process 토대

승엽이형 현재 야심차게 만들어 놓은 메시 자료구조가 
있다고 하셨던것 같은데

그것을 토대로 만들까요 아니면 아예 새로 짤까요.

그것을 토대로 만드는게 좋겠다면 올려주시면 
감사하겠습니다.

Original issue reported on code.google.com by [email protected] on 19 Jul 2012 at 7:53

VectorAlgebra 및 Vector wrapper 타입 추가

1. Vector wrapper가 현재는 급한대로 Vector3d만 구현해서 쓰고 
있습니다. 하지만 VectorAlgebra에서 그러했듯, Vector3f와 Vector2d, 
Vector2f 모두 구현할 필요가 있습니다.

2. 생각해보니 int type도 vector로 다룰 수 있을 것 같네요. 
메쉬 프로세싱에서 facet 정보 다룰 때 있으면 유용할 것 
같습니다. 따라서 VectorAlgebra function set에서 2i와 3i 버전도 
개발할 필요가 있어보이며, Vector wrapper에서도 Vector3d뿐만 
아니라 Vector3i, Vector2i도 있어야할 것 같네요.

Original issue reported on code.google.com by [email protected] on 24 Jul 2012 at 6:24

연습삼아 VectorAlgebra에 2차원 벡터 함수들 추가하기

각자 SVN 사용법을 익히기 위해 VectorAlgebra 코드 중 함수 
하나씩을 맡아서 2차원 버전을 작성해 보세요. (현재 
3차원만 구현되어 있음)

- 아래 이름 표시되어 있는 함수를 각자 맡아서 2차원 
버전을 새로 추가해주시면 됩니다.
- double 뿐만 아니라 float도 작성해야 합니다.
- SVN에 익숙해지자는 의미도 있지만, 실제로 VectorAlgebra를 
완성하는 의미도 있으므로 성의껏 작성해주시기 바랍니다.

double Dot2d(const double* a, const double* b); // 손태근
double NormSquared2d(const double* x); // 임정훈
double Norm2d(const double* x); // 임정훈
void Assign2d(double* a, const double* b); // 이주성
void Assign2d(double* a, const double b); // 이주성
void AddVector2d(const double* a, const double* b, double* c); // 양세웅
void AddVector2d(double* a, const double* b); // 조현덕
void SubVector2d(const double* a, const double* b, double* c); // 박현서
void SubVector2d(double* a, const double* b); // 백승엽
void MultiplyScalar2d(double* x, const double& a); // 이두영
void DivideByScalar2d(double* x, const double& a); // 손진규

Original issue reported on code.google.com by [email protected] on 17 Jul 2012 at 6:49

TriMesh 기본 틀 다지기

필요한 내용들:
- Export 함수 (ply, obj, off, stl 정도는 있어야...)
- edge 배열 추가 및 관련 계산 함수... (half-edge?)
- edge_length, 
- Accessor 함수들 getVertexX(), getVertex(), getFacet() ...
- Property 계산시 필요한 property 만 따로 계산할 수 있도록.. 
(지금은 한꺼번에 모두 계산하게 되어있음)
- Is####Availalbe()함수 추가하여 현재 특정 property가 계산되어 
있는지 검사
- Rendering 함수들 우선 구현
- Rotate, Translate, Scale 함수 구현
- 기타 geometry연산용...


<<일단은 보류>>
- 각 파트들을 세분화하여 파일로 쪼개기..(렌더링.h, FILEIO.h, 
Property.h)




※ 유의사항
1. 앞으로 파일 세분화할 것 고려해서 최대한 static으로 짜기
e.g.
Vector3d CTriMesh::CalcCOG(void)로 짜는 것 보다는,
static Vector3d CTriMeshCalcCOG(const CTriMesh& mesh)와 같은 형태로...

2. 내부에서 구현되는 대용량 벡터 연산의 경우 double*을 
사용하지만,
 그렇지 않은 경우(특히 인터페이스 함수들...)는 Vector3d클래스를 주로 이용할 것

Original issue reported on code.google.com by [email protected] on 20 Jul 2012 at 2:59

Cubic spline

Data point들로부터 cubic spline을 생성하여 임의의 x 좌표에 
대한 y 좌표를 출력.

To.현서형
지난번에 짜주셨던 cubic spline 코드 정리해서 올려주세요.
이거에 맞춰서 저도 muscle model을 다시 정리해서 올려야 할 
것 같아요.

Original issue reported on code.google.com by [email protected] on 23 Jul 2012 at 6:40

VectorQuaternion.h 완성

박현서군과 충분한 논의 후에 결과적으로
1. Vector클래스 및 Quaternion클래스는 모두 template으로 
작성하고 (Vector3<T>, Vector2<T>, Quaternion<T>),
2. 되도록이면 모두 class내부에서 값을 계산하며 
(VectorAlgebra나 QuaternionAlgebra에 있는 함수 재참조하지 않음),
3. 동일한 파일에 Vector 및 Quaternion을 모두 포함시켜 
type-cast시 헤더 참조 문제를 해결하고,
4. static 함수들은 모두 외부 인라인 함수로 작성
하기로 하였습니다.

현재 제가 예시로 Vector3<T>를 작성해놓았으며, 이를 
참조하여 Vector2<T> 및 Quaternion<T>를 작성하면 되겠습니다.
또한 아직 Vector3<T>에서도 Rotate나 Angle등의 geometry 관련 
method들은 완성되지 않은 상태입니다.

코딩 스타일 및 필요 함수(기본적으로는 이전에 있던 
Vector.h와 Quaternion.h에 있는 내용들이 모두 구현되면 
됩니다.)들 모두 파악하시어 개발 착수해주시면 되겠습니다.

이번 리뷰에서 완성된 내용을 바탕으로 코드 잠정 확정하여 
Download에 올려두도록 하겠습니다. (앞으로는 연구실 
공식적인 표준 코드셋이 될것이며 앞으로 관련 과제에서 
이를 사용하도록 적극 권장토록 하겠습니다.)

또한 이는 추후 TriMesh class를 구현함에 있어서 필수적인 
내용인 관계로 우선순위는 최우선으로 하겠습니다.

Original issue reported on code.google.com by [email protected] on 27 Jul 2012 at 2:16

Skeletal model 표현 법 중 DH method 구현

인체 자료 구조 부분에서 생체역학 스터디 시간에 배웠던 DH 
method를 이용한
skeleton model의 표현 방법에 대한 구현

*DH method를 이용해 segment 상속 구조 표현 함수
*기존 인체 자료에서 DH method로 변환 함수
*DH method를 이용한 skeletal model class

급한건 아니고, 생체역학팀 연습용으로 천천히들 구현하면 
좋을 듯
아직 전체 skeletal model 표현 방법이 정해진게 아니므로,
일단은 변환 함수 부분은 추후 개발하는 것으로 생각하고
상속 구조 표현 방법부터 구현할 것

Original issue reported on code.google.com by [email protected] on 24 Jul 2012 at 3:31

파일 인코딩을 유니코드로 통일

한글로 달린 주석은 구글코드 페이지에서 볼 때 깨져서 
나옵니다.
해결법은 유니코드로 인코딩을 바꾸어 올리면 됩니다.


Visual Studio 2010 - File - Advanced Save Options에서
Encoding: 항목이 Korean - Codepage 949로 되어있을텐데
Unicode (UTF-8 with signature) - Codepage 65001으로 바꿔줍니다.

Visual Studio 2010에서 항상 유니코드로 저장하는 방법이 
없어서, 파일마다 개별적으로 수행해야 합니다.

Original issue reported on code.google.com by [email protected] on 1 Aug 2012 at 5:15

MeshProcessing Export 관련

http://assimp.sourceforge.net/main_features_export.html
http://assimp.sourceforge.net/lib_html/class_assimp_1_1_exporter.html
를 보면 Export도 Assimp를 이용해 가능한 것 같은데(stl, ply, obj, 
dae 가능) Assimp를 전혀 몰라서 손을 못대고 있습니다.
가능하신분 한번 확인 부탁드립니다.

Original issue reported on code.google.com by [email protected] on 1 Aug 2012 at 2:01

VectorAlgebra 이빨 채우기

여러가지 추가적으로 필요한 기능들이 있어 3차원 double 
버전만 우선 추가해두었는데,
3차원 float버전과 2차원 double 및 float 버전들에 대해서도 
같은 기능들을 구현해 두어야 할 필요가 있을 듯 합니다.

어려운 일 아니니 한 분 정도만 수고해주시면 될 것 
같습니다.

수고해주실 의사가 있으신 분들은 아래에서 Accept 하신 후 
진행해주시면 감사하겠습니다.
(이미 누군가에 의해 accept가 되어있다면 다른 분이 이미 
작업을 진행중인 것이므로, 그냥 내버려두시면 됩니다.)

참고로 일부러 SVN 사용 안해보신 분들 위주로 CC 
넣었습니다. 이 기회에 SVN 사용법도 익혀두시면 좋을 것 
같네요. 사용법은 2층에 있는 현서나 진규, 세웅이형 등에게 
물어보면 알려줄겁니다.

Original issue reported on code.google.com by [email protected] on 19 Jul 2012 at 9:25

Muscle force-length-velocity property

(이렇게 쓰는거 맞나요? -_-;;)
근육의 force-length-velocity property 입니다.

* F-L-V curve data는 OpenSim 근육 모델 중 Schutte1993Muscle 에서 
가져옴.
* Cubic spline 함수는 현서형 코드.
* Optimal force, optimal length, maximal velocity를 근육의 property로 
입력
* 현재의 activation, length, velocity를 입력하여 muscle force 계산

저 말고는 아무도 쓰지 않을 것 같지만;;
아직 코드 정리가 덜 됐기 때문에 시간이 조금 걸릴 것 
같습니다.

Original issue reported on code.google.com by [email protected] on 23 Jul 2012 at 6:35

typecast시, 서로 다른 클래스간 참조 관련

현재 Vector-Quaternion간 혹은 Quaternion-Vector간 typecast를 제가 
구현해둔 상태인데,
#ifdef ~ #endif문을 이용하여 구현하였습니다.

즉, Quaterniond --> Vector3d의 경우
#ifdef Quaterniond
Vector3d(const Quaterniond& q);
#endif
와 같은 형태로 type-cast 생성자가 구현되어 있습니다.

본래 목적은 Vector3d만 사용하는 사용자들은 굳이 
Quaternion.h를 include하지 않아도 되도록 하기 위해서였고, 
따라서 Quaternion.h가 Vector.h와 함게 #include가 되어 있는 
경우에만 저 코드가 컴파일 되도록 만든 것입니다.

헌데, 지금 가만 생각해보니 include 순서에 따라 typecast가 
한방향으로만 된다는 문제가 있네요..;;
예를들어 Quaternion.h가 Vector.h보다 먼저 선언이 되어있다면
Vector(const Quaterniond& q);
는 사용이 가능하지만
Quaternion(const Vector3d& v);
는 사용이 불가능합니다.


이 문제를 어떻게 해결해야 할 지 좀 깔끔한 대책 혹은 
트릭을 알려주시면 좋겠네요.
이건 코드에다 직접 수정하지 마시고 아래에 comment로 
남겨주시면 제가 수합해서 코드 교정하도록 하겠습니다.

(comment 다실때 status는 반드시 new로 해주세요.)

Original issue reported on code.google.com by [email protected] on 24 Jul 2012 at 9:40

VectorQuaternion의 헤더/소스 분리

(박현서군이 다른 이슈의 리플로 남긴 내용을 그대로 
옮겼습니다.)
(앞으로 이런 내용은 이슈로 남겨주세요.)

다음처럼.h와 .cpp로 템플릿을 나누는 걸 고려해 보는 건 
어떨까요?
아래와 같이 설계하면 구현부를 cpp 파일 내로 이동시킬 수 
있습니다.
구현을 cpp 파일 내로 옮기면 헤더 종속성을 줄일 수 있고,
반복되는 template instantiation을 막을 수 있어 컴파일 속도가 
증가합니다.


--------------Super.h-------------------
#ifndef _SUPER_H_
#define _SUPER_H_

template <typename T>
class Super
{
public:
    void hello();
    T a;
};

// available template argument : float, double
// only Super<float>, Super<double> can be used
#ifdef _SUPER_CPP_
template class Super<double>;
template class Super<float>;
#else
extern template class Super<double>;
extern template class Super<float>;
#endif // _SUPER_CPP_

#endif // _SUPER_H_
--------------end of Super.h------------



--------------Super.cpp-----------------
#define _SUPER_CPP_
#include "Super.h"
#include <iostream>

template <typename T>
void Super<T>::hello()
{
    std::cout << a << std::endl;
}
--------------end of Super.cpp----------



단점은
template class Super<double>;
와 같이 explicit template instantiation을 하지 않은 template 
argument는 사용이 불가합니다.
위의 예제에는 float과 double형 외에는 사용이 불가합니다.
물론 본 vector, quaternion 라이브러리에는 float, double 이외에는 
해당 사항이 없어보이므로 괜찮을 것 같습니다.


헤더와 구현부를 나눌 수 있는 기능은 extern template 구문 
덕분인데,
visual studio 2010에서 nonstandard extension이라고 경고가 뜹니다.
찾아본 바로는 vs2005부터 지원되었고, gcc 컴파일러 등에서도 
확장기능으로 제공하며,
새 표준인 C++11에서는 공식 지원되는 사항이므로, 써도 문제 
없을 것 같습니다.

Original issue reported on code.google.com by [email protected] on 29 Jul 2012 at 9:36

VectorAlgebra기능 추가

add scalar랑 sub scalar 기능이 없네요.

MATLAB에서는 a = [1 3 6];이라고 선언해두고 a = a + 3; 
이런식으로 계산을 하면
각 원소에 3씩 더해집니다. 즉 a == [4 6 9]가 되지요.
이런 기능을 VectorAlgebra에서도 구현해주시고, Vector 
wrapper에서도 같은 기능을 연결 해주시면 되겠습니다.

Original issue reported on code.google.com by [email protected] on 24 Jul 2012 at 7:09

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.