الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برنامج لقراءة الملفات و وضع محتواها في List

بدأه hbate_allah في 26 أبريل 2009 · 1 رد · 390 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه

اذا كان عندي ملف يحتوي


v 0.0 0.0 1.0
v 0.0 1.0 0.0
v 0.0 1.0 1.0
v 1.0 0.0 0.0
v 1.0 0.0 1.0
v 1.0 1.0 0.0
v 1.0 1.0 1.0

vn 0.0 0.0 1.0
vn 0.0 0.0 -1.0
vn 0.0 1.0 0.0
vn 0.0 -1.0 0.0
vn 1.0 0.0 0.0
vn -1.0 0.0 0.0

f 1//2 7//2 5//2
f 1//2 3//2 7//2
f 1//6 4//6 3//6
f 1//6 2//6 4//6
f 3//3 8//3 7//3
f 3//3 4//3 8//3
f 5//5 7//5 8//5
f 5//5 8//5 6//5
f 1//4 5//4 6//4
f 1//4 6//4 2//4
f 2//1 6//1 8//1
f 2//1 8//1 4//1
		   v 0.0 0.0 0.0

و اردت قراءته هذا الكود يمكنني من ذلك



int v1;
int v2;
int v3;

};

struct Vertex {

float x;
float y;
float z;

};

using namespace std;

static void display(void)
{
// move the view a lil down so we could get the tree.obj in the centre of screen
glTranslatef(0.0, -0.50, 0.0);

// clear all pixels
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);

Vertex v[50000];
Triangle t[50000];

int vertexCount = 0;
int triangleCount = 0;

char line[100];
	   struct Triangle {

و لقراءة الملف نستعمل هذا الكود



if (fp != NULL)
{
while (fgets(line, 99, fp))
{
if (line[0] == 'v')
{
sscanf(line, "%*c %f %f %f", &v[vertexCount].x, &v[vertexCount].y, &v[vertexCount].z);
vertexCount++;
}
else if (line[0] == 'f')
{
sscanf(line, "%*c %d %d %d", &t[triangleCount].v1, &t[triangleCount].v2, &t[triangleCount].v3);
triangleCount++;
}
}
}

fclose(fp);
		FILE *fp = fopen("tree.obj","r");

لكنني فكرت ببعض التغييرات * Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

بحيث ان العمل ب الجدول لم يعجبني

اي هل استطيع ان اغير



int v1;
int v2;
int v3;

};
struct Vertex {

float x;
float y;
float z;

};
Vertex v[50000];

Triangle t[50000];
	 struct Triangle {

ب


{ int v1
int v2
int v3 ;
struct objet *svt;
}; typedef struct objet triangles;
struct objet
{ float x
float y
float z ;
struct objet *svt;
}; typedef struct objet vertexs;
traingle *t
vertex *v
	 struct objet

و منه نعوض

	  v[vertexCount].x

ب

		  vertex->x

هل هذا التعويض صحيح لانني ارى انه هنا تنقصنا ان نعلم في اي مكان هي بالضبط اي

ertexCount

ثم نعوض الكود

	for (int i=0; i<triangleCount; i++)

ب

	   while (t!=NULL)

لم ابدا التبديل بعد لانني اردت استشارتكم هل يصلح هذا التغيير ام لا خاصة وانني وقعت امام مشكلة

هي تعويض هذا السطر


(v[t.v2-1].x , v[t.v2-1], v[t.v2-1].z );
(v[t.v3-1].x , v[t.v3-1].y , v[t.v3-1].z );
		   (v[t.v1-1].x , v[t.v1-1].y, v[t.v1-1].z );

لم اعرف كيف ابدل هذه الاسطر

*****************************************************

لي سؤال اخر في نفس النوع من الملفات و التي تكون معقدة نوعا ما نجد انه عوضا ان نجد

v 0.0 0.0 0.0

نجد

		 v 0.0 0.0 0.0 v 0.0 1.0 0.0 v 0.0 1.0 1.0

هنا تكون طريقة قراءة الملف بالسطر لا تنفع

#2

الكود السابق الذي يقوم بقراءة الملف لا يعالج مسالة vn لذا نستطيع ان نضع هذا test

 if (line[0] == 'v' && line[1]='n')

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…