ملف:Signed distance1.png
من testwiki
اذهب إلى التنقل
اذهب إلى البحث
حجم هذه المعاينة: ٣٢٣ × ٦٠٠ بكسل. الأبعاد الأخرى: ١٢٩ × ٢٤٠ بكسل | ٢٥٨ × ٤٨٠ بكسل | ٤١٣ × ٧٦٨ بكسل | ١٬٠٢٥ × ١٬٩٠٣ بكسل.
الملف الأصلي (١٬٠٢٥ × ١٬٩٠٣ بكسل حجم الملف: ٣١ كيلوبايت، نوع MIME: image/png)
هذا الملف من ويكيميديا كومنز ويمكن استخدامه بواسطة المشاريع الأخرى. الوصف على صفحة وصف الملف هناك معروض بالأسفل.
ملخص
| الوصفSigned distance1.png |
English: Signed distance |
| التاريخ | {2007-03-01 |
| المصدر | عمل شخصي |
| المؤلف | Oleg Alexandrov |
| PNG منشأ الملف InfoField |
ترخيص
| Public domainPublic domainfalsefalse |
| أنا، مالِك حقوق تأليف ونشر هذا العمل، أجعله في النِّطاق العامِّ، يسري هذا في أرجاء العالم كلِّه. في بعض البلدان، قد يكون هذا التَّرخيص غيرَ مُمكنٍ قانونيَّاً، في هذه الحالة: أمنح الجميع حق استخدام هذا العمل لأي غرض دون أي شرط ما لم يفرض القانون شروطًا إضافية. |
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
image/png
٣١٬٣٤٦ بايت
١٬٩٠٣ بكسل
١٬٠٢٥ بكسل
210365212051029839e468e7a08bbee17db80b27
تاريخ الملف
اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.
| زمن/تاريخ | صورة مصغرة | الأبعاد | مستخدم | تعليق | |
|---|---|---|---|---|---|
| حالي | ٠٠:٤٩، ١ مايو ٢٠٠٧ | ١٬٠٢٥ × ١٬٩٠٣ (٣١ كيلوبايت) | wikimediacommons>Oleg Alexandrov | {{Information |Description= |Source= |Date= |Author= }} |
استخدام الملف
الصفحة التالية تستخدم هذا الملف: