ملف:Signed distance1.png

من testwiki
اذهب إلى التنقل اذهب إلى البحث
الملف الأصلي (١٬٠٢٥ × ١٬٩٠٣ بكسل حجم الملف: ٣١ كيلوبايت، نوع MIME: image/png)

هذا الملف من ويكيميديا كومنز ويمكن استخدامه بواسطة المشاريع الأخرى. الوصف على صفحة وصف الملف هناك معروض بالأسفل.

ملخص

الوصف
English: Signed distance
التاريخ {2007-03-01
المصدر عمل شخصي
المؤلف Oleg Alexandrov
PNG منشأ الملف
InfoField
 هذا الرسم المتجهي أُنشئ بواسطة ماتلاب

ترخيص

Public domain أنا، مالِك حقوق تأليف ونشر هذا العمل، أجعله في النِّطاق العامِّ، يسري هذا في أرجاء العالم كلِّه.
في بعض البلدان، قد يكون هذا التَّرخيص غيرَ مُمكنٍ قانونيَّاً، في هذه الحالة:
أمنح الجميع حق استخدام هذا العمل لأي غرض دون أي شرط ما لم يفرض القانون شروطًا إضافية.

Source code (MATLAB)

 

function main ()

% init stuff
   M=3;  lw=2.5;
   h=0.1; ii = sqrt(-1);
   XX = (-M):h:M; YY = (-M):h:M;
   [X, Y] = meshgrid (XX, YY);

% the surfce determining the contour
   type = 1; % the contour is a circle for type == 1 and something more complex otherwise

   if type == 1
      height = 2;
      Z=height - X.^2-Y.^2;
   else
      height = 0.7;
      Z=height-0.5*(X-1.78).*X.^2.*(X+1.78)-Y.^2;  % Z=f(X, Y) -surface
   end

% find the contour
%figure(1); subplot(2, 1, 1);
   figure(1); clf;
   [C, H] = contour(X, Y, Z, [0, 0]);
   set(H, 'linewidth', lw, 'EdgeColor', [0;0;156]/256);

% draw the region inside the contour
%   figure(1); subplot(2, 1, 1);
   figure(1);
   clf; hold on; axis equal; axis off;

   l=C(2, 1);
   CX=C(1,2:(l+1));  CY=C(2,2:(l+1)); % get x and y of contours
   H=fill(CX, CY, 0.6*[1, 1, 1]); set(H, 'EdgeColor', 'none'); % draw the shap

   % a hack to make the box look bigger
   white = 0.99*[1, 1, 1]; scale=1.4;
   plot(-scale*M, -scale*M, '*', 'color', white)
   plot(scale*M, scale*M, '*', 'color', white)

% calc the unsigned distance function
   Dist = 0*Z+1000;
   for i=1:length(XX)
      for j=1:length(YY)
         x=X(i, j); y=Y(i, j);
         for k=1:length(CX)
            x0=CX(k);
            y0=CY(k);
            Dist(i, j) = min(Dist(i, j), sqrt((x-x0)^2+(y-y0)^2));
         end
      end
   end

% signed distance
   Dist = sign(Z).*Dist;

% draw the signed distance
%   figure(1); subplot(2, 1, 2);
   figure(2); clf;
   hold on; axis equal; axis off;
   surf(X, Y, Dist, 'FaceColor','red', 'EdgeColor','none', 'FaceAlpha', 1);

% draw the x-y plane (the intersection of the surface above and this plane is the contour of our set)
   surf(X, Y, zeros(length(XX), length(YY)), 'FaceColor','blue', 'EdgeColor','none', 'FaceAlpha', 0.4)

   camlight left;lighting phong; % make nice lightning
   view(42, 22)        % angle of view (polar coordinates)

% save to file
   figure(1);   saveas(gcf, sprintf('Set%d.eps', type), 'psc2');
   figure(2);   saveas(gcf, sprintf('Function%d.eps', type), 'psc2');

% then use the following to convert to png
%   convert -append Set2.eps Function2.eps signed_distance2.png
هذه math الصورة / الصورتان باستعمال رسومات متجهية ملفات رسوميات شعاعية. It is recommended to name the SVG file "Signed distance1.svg" - then the template Vector version available (or Vva) does not need the new image name parameter.

الشروحات

أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف

العناصر المصورة في هذا الملف

يُصوِّر

١ مارس 2007

٣١٬٣٤٦ بايت

١٬٩٠٣ بكسل

١٬٠٢٥ بكسل

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي٠٠:٤٩، ١ مايو ٢٠٠٧تصغير للنسخة بتاريخ ٠٠:٤٩، ١ مايو ٢٠٠٧١٬٠٢٥ × ١٬٩٠٣ (٣١ كيلوبايت)wikimediacommons>Oleg Alexandrov{{Information |Description= |Source= |Date= |Author= }}

الصفحة التالية تستخدم هذا الملف: