整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript求平方根:Math.hypot(

JavaScript求平方根:Math.hypot()详解

. 基本概念

Math.hypot()方法的功能就是先计算它的所有参数的平方和,再返回该和的平方根。我们知道,在数学上一个正数有两个平方根,它们绝对值相等但一正一负;但是由于Math.hypot()方法只能返回一个值,因此它的结果是为正的那个平方根。Math.hypot()方法可以接受任意多个参数,比如0个、1个、两个等等。

调用Math.hypot()方法的语法形式如下所示,其中方括号表示它里面的内容可有可无,实际调用该方法的时候不要书写方括号。

Math.hypot([value1 [, value2 [, ...] ] ] );

因为Math.hypot()方法要先计算它的参数的平方和,那么我们可知它的所有参数都应该是数字,即它们都属于Number类型。如果某个参数不是Number类型的,那么它会先被自动转换为Number类型。

我们举一个具体的例子来演示Math.hypot()方法的作用。假设我们要求一个直角三角形的斜边有多长,并且已知两个直角边分别是3和4。按照勾股定理可知,斜边等于两个直角边的平方和再开方。这一计算过程正好可以交给Math.hypot()方法来完成,我们以两个参数3和4调用Math.hypot(),那么它的结果就是斜边的长度5。

Math.hypot(3, 4)的执行过程是这样的:先计算3和4的平方和,即3的平方9加上4的平方16,结果是25;再计算该平方和(25)的平方根,结果就是5。其它情况以此类推,反正都是先计算所有参数的平方和,再求该和的平方根。

2. 返回值规则

因为Math.hypot()方法可以接受任意多个参数,并且JavaScript的Number类型包含NaN、+0、-0、正无穷(+Infinity)和负无穷(-Infinity)这5个特殊数字,这就让调用Math.hypot()方法时的参数可能非常复杂。因此JavaScript要按照如下规则来决定Math.hypot()方法的返回值;如果某个参数不是数字,那么下面这些规则中提到的参数的值指的是它被转换为数字后的值。

1. 如果没有传递任何参数,即Math.hypot()的参数数量为0,那么返回值是+0;

2. 如果任意一个参数是正无穷(+Infinity),那么返回值是正无穷;

3. 如果任意一个参数是负无穷(-Infinity),那么返回值是正无穷;

4. 如果所有参数中都不包含正无穷和负无穷,并且任意一个参数是NaN,那么返回值是NaN;

5. 如果所有参数都是+0或者-0,那么返回值是+0;

6. 其余情况下,就先计算所有参数的平方和,再将该和的平方根作为最终返回值。

对以上这些规则不要死记硬背,它们在本质上都是对先计算所有参数的平方和再计算该和的平方根这一过程的运用,只是当参数为0个或者为特殊数字时,需要额外注意而已。

3. 示例

我们用不同的参数组合来调用Math.hypot()方法,并展示它们的结果;调用每一个Math.hypot()方法时的参数有何特点,都用相应的注释进行说明。以下代码的执行结果如图1所示。

图1 示例代码的执行结果

(完)


hoto by Charles Deluvio on Unsplash

介绍

我决定写这个博客的目的是希望探索更多有关使用CSS调整大小的方法。 有这么多种可能性,很容易感到不知所措和困惑。 浏览器当前支持16种度量单位:像素,英寸,皮卡,厘米,毫米,点,百分比,em,rem,视口尺寸(vw,vh),ex,ch,Vmax(最大视口)和vmin (viewportmin)在这16个单位中有两类:相对长度和绝对长度。

相对长度

首先要了解相对长度,它们会在其他物体上获得尺寸,这些尺寸在您要设定尺寸的元素之外或相对于它们,例如,父级的尺寸,字体大小和视口尺寸。

百分比

百分比基于其父元素。 因此,如果一个元素为200px * 200px,并且该元素的子元素的宽度为50%,高度为50%,则该子元素的等效尺寸为100px * 100px,因为200px的50%为100px。

在这里,我们有一个名为" parent-box"的div元素和一个名为" child-box"的子div元素。

在css文件中,我将父盒的高度和宽度设置为200px,子盒的宽度和高度设置为50%,这意味着现在子盒将是父盒尺寸的50%,因此 如果父框为200px * 200px,则表示子框为100px * 100px,结果如下:

如您所见,蓝色元素(即子元素)正好是粉红色框(即父元素)的50%。

视口尺寸

当前有四种类型的视口尺寸单位,vw(视口宽度),vh(视口高度),vmin(视口最小)和vmax(视口最大)。 使用这些单位时要知道的第一件事是,它们会自动将浏览器的屏幕划分为100 x 100的不可见网格,网格中的每个正方形或单位将根据情况代表一个vw,vh,vmin或vmax。

vh 与 vw

因此,让我们更深入地研究这两个。 如果我们声明一个元素的宽度为50vw且高度为50vh,我们将看到该元素将恰好占据页面高度的一半,并且占据页面宽度的一半,每个vw或vh现在相当于那个不可见的100 *中的一个单元 100,所以如果我们声明一个元素为50vw,它将是浏览器宽度的一半,下面我们来看一个示例。

在这里,我们看到父元素恰好是浏览器高度和宽度的一半。

vmin和vmax

这些单位比较棘手。 因此,这些单元的工作方式是将使用高度或宽度的最大或最小长度。 例如,让我们声明父框的宽度为50vmax,如果浏览器的宽度为800px,高度为500px,则父框的宽度为400px,因为宽度大于高度,所以 元素将从浏览器的水平部分的不可见网格中获取50个单位,现在,如果高度为1000px,宽度为500px,则父框的宽度现在为500px,因为浏览器的高度现在大于宽度,因此父元素 box将占据浏览器垂直边100平方中的50平方,并使用它来声明父对象的框宽。

现在进入vmin。 假设我们声明父级框的宽度为50vmin,那么从最小视口尺寸开始,父级框的宽度将占据50个网格单位。 同样的示例,如果浏览器的宽度为800px,高度为500px,则父框的宽度现在将为250px,因为我们声明父框的宽度为最小视口尺寸的50个单位, 在这种情况下,是高度。 现在,如果高度为1000像素,宽度为600像素,则父框的宽度现在为300像素,我知道这非常令人困惑,因此让我们回到第一个示例:

Here we declare the width to be 50vmax (50 units out of 100 from the BIGGEST viewport dimension)


这样看起来像这样:

我们可以看到父框现在恰好是浏览器宽度长度的一半,这是因为浏览器的宽度大于高度。 现在,如果我们改变一切,将会得到不同的结果。

Here we declare the width to be 50vmin (50 units out of 100 from the SMALLEST viewport dimension)

所以看起来像这样:

我们可以看到父框现在恰好是浏览器高度的一半,这是因为浏览器的高度小于宽度。

基于字体属性的单位

ex 和 ch

我从未使用过这些单元,但让我们看看它们是如何工作的。 所以首先让我们从ex开始。 这个单位测量您正在使用的任何字体系列的字母" X"的高度,这是指字母" X"的高度? 因此,如果此" X"的高度为10px(字面的字母为" X"),则1ex将为10px,假设您使用的是另一个字体系列中的" X",其中" X"的高度为9px,所以现在1ex 是9px。

ch的行为方式非常相似,不同之处在于1ch的长度将基于字体家族的字母" O"的宽度,因此,如果字母" O"的宽度为5px,则1ch将等于5px 。

em

此单位响应父元素的字体大小,因此,如果父元素的字体大小为10px,则每个em现在等于10 px。

在这里,我们在父框内声明一个10px字体大小,并将子元素的宽度和高度设置为5em,因此,如果父元素的字体大小为10px,则意味着每个em值10px,因此我们的子元素将为50px * 50像素

em的作用是它们级联,这意味着什么? 因此,如果子元素内有另一个元素,并且将其尺寸设置为5em,则第二个子元素将为100px * 100px

发生这种情况的原因是,当一个孩子中有另一个元素时,第二个孩子会将值乘以2,疯狂吗? 这就是为什么在使用em时我们必须小心。

rem

现在,rem与em有所不同,因为rem基于根字体大小而不是父字体来确定其尺寸。 rem一词的意思是" root em",这解决了我们在em元素级联时遇到的问题,通过基于root取其维度,rem值在整个文件中都相同。 因此,让我们看一下相同的示例,但带有rem。

因此,如果将本示例与上面的示例进行比较,我们可以看到父框的字体大小现在为30,但是第一个和第二个子控件的字体大小较小,我们还可以看到元素没有级联, 是因为以10px的字体大小声明了根,所以无论何时我们现在使用rem,它都将始终引用10px。

绝对长度

绝对长度不会根据其他因素或页面,父级,视口等其他因素来决定其大小。

英寸,厘米和毫米。

因此,我觉得关于这些度量单位的解释很多。 如果您将某物声明为1in,则无论屏幕大小如何,该值都将为1in。 厘米和毫米也一样

Points和Picas

因此,points和picas是印刷术语。 point是1/72英寸,因此很小,12点活字就是12点或1/6英寸。

最后但并非最不重要…

像素!

现在,像素是绝对长度,但是它们的大小可能取决于您所使用的设备,某些设备的像素比其他设备大,这取决于它们的密度和分辨率。

(本文翻译自Sebastian Delima的文章《CSS: Units Of Measurement (px, em, rem, vw, %, etc.)》,参考:https://medium.com/swlh/css-units-of-measurement-px-em-rem-vw-etc-ed8522620775)

起看看越南的传统民居类型——夹缝住宅,建筑师的极限挑战.
文章来源:建道筑格ArchiDogs
ID:ArchiDogs_AD
作者:建道筑格ArchiDogs
编辑:圈

在越南河内和西贡等城市的街道上漫游时,经常会遇到很多外墙狭窄的房屋,它瘦高的立面与背后看似无穷无尽的延伸形成对比,一般来说由三到五层叠加。这些特征组成了越南的传统民居类型——夹缝住宅(tube houses)。

夹缝住宅的出现主要与越南的地价税相关。越南的地价税以房屋所占路面宽度计算,因此很多越南的业主为了减少地价税,选择将房子变窄,转而开发上方的空间。

同时,建筑的背后也反映了城市生活的实际需求。尽管有了现代公寓,但很多越南人仍然希望在一块有私人入口的土地上拥有自己的房子,并且与家人居住在一起。对于不断增长的城市人口来说,夹缝住宅成为了一种既高效又节约成本的形式。

然而,这种类型的建筑也带来了很多使用上的问题。采光通风如何解决,结构如何做到坚固稳定,功能布局如何更为合理有趣?

越南建筑师在当今的设计中持续思考着,他们通过一些创新的解决方案,提供了更高质量的居住环境。这里面又有哪些巧思呢?让我们接着往下看吧!

作者|芒库

编辑|Yun Fei,Yihan

01

立面

千栋千面

Vegan House / Block ArchitectsA

这栋房子位于一个旧露台上,旁边是一栋建于 1965 年的公寓。业主在旅游业工作,他计划将其改造成一个文化场所。在这里,人们见面、分享和烹饪越南传统食物,特别是素食。

在提出项目之前,业主从朋友那里囤积了很多废弃的旧东西——各种各样的家具如桌子、椅子、衣柜、窗户和灯罩。由于预算紧张,建筑师利用这些旧的东西与可用的和新的东西,创造一个新鲜的地方,并使其仍然保持旧房子的传统价值。

旧窗户作为主要材料,创造了独特的外观。这些窗户因为通风良好在越南长期以来被广泛使。现在,将它们重新排列成不同颜色组合的新立面,覆盖住旧立面,一直包裹到屋顶。这创造了一种特殊的吸引力,并与整个街区古老的氛围相协调。屋顶上的一些开窗为树木提供了生长空间和自然光线。

这些窗户也可以作为室内的光线隔断,分隔和装饰空间。

在底层,一个长长的曲线橱柜贯穿整个房间。前面的大厨房是人们在餐厅做饭、聊天和享受烹饪的地方。花园和通往一楼的旧楼梯就其旁边。

在一层有一间卧室和一个供人放松或工作的地方。通往二楼的中庭旁建造了一个新的钢楼梯,这里曾经是一个未使用的屋顶。

另外,卧室由旧钢板制成,位于屋顶系统下方,距离较短,以防止热量影响室内。

从这个房间到前面,有一个花园,可以喝茶,也可以透过窗户看夜空。

一个小的中庭被放置在末端,用于交叉房间的通风,它也为下面的厕所提供了自然光线。墙壁和地板的材料被保留了下来。粗糙的水泥表面、百叶窗和天花板上的竹条创造了一个既现代又古老的空间,复兴了六七十年代的越南建筑。

建筑师渴望为不同文化背景的来者创造一个新的场所。在以新的方式重新组织旧事物的基础上,旧事物和新事物可以共同存在,相互依附。随着时间的推移,这里的人们会给这个房子带来新的活力与灵魂。

VY ANH House / Khuon Studio

该项目的重点也在立面上的百叶窗系统。由于几乎不需要顶部的生活空间,房子设计为锥形向上。由此产生的表皮也是弧形弯曲的。

百叶系统上的空气砖以不规则的模式排列,确保采光与通风,且满足安全与美观的需求。

藤蔓逐渐生长覆盖上网架, 形成一个绿色的窗帘,为房子提供阴凉与隐私。

Boundary House / AD+studio

项目位于平阳,面对空气质量差、噪音污染、交通拥堵等诸多影响到生活质量的问题,最初的设计方案是将住宅与周围环境隔离开来。

然而由于业主外向的倾向,长期以来与街巷和社区有着很强的联系,项目开始着重思考边界的设计。

垂直边界运用双层表皮结构,勾勒出室内和室外空间之间的隔断。烧砖作为外部层次,其颜色及孔隙的过渡体现了背后空间的隐私级别和意图。

在顶楼,新婚夫妇的私人卧室和工作空间需要高度集中,内部和外部的互动逐渐减少。

水平边界通过不同的板创造了高度的多样性,并且围绕房子布置灵活的楼梯系统,帮助在有限的建筑面积中营造了更大更全面的空间整体。

02

植物

装点立面的元素

SR-1 House / SPNG Architects

项目位于胡志明市,业主都从事艺术领域,想建一栋四层楼的房子来满足生活和未来工作的需 要。他们喜欢自然的氛围,树木和动物。因此项目的目标设定为三个主要价值:安静、与周边环境相结合以及人与自然紧密联系。

客户曾经生活在宽敞的单层乡村住宅中,空间从前到后相连,因此家庭中的每个人都关系非常亲密。基于这种记忆,设计打开了公共生活空间的视野,并且尽量减少实心砖墙来创造连续空间。

立面上的盆栽系统阻挡了下午刺眼的阳光,也使得室内空间更加安静、私密与凉爽。

从外观看,绿色的墙面也让社区看起来更加友好与自然。

Floating Nest / atelier NgNg

该项目位于西贡,和很多其他夹缝住宅一样,坐落在拥挤城区的狭窄地段上,只有朝西的一面是朝外且开放的。业主热衷于园艺,首先想要一个舒适放松的空间,有丰富的绿色区域来满足她回归田园的爱好。

为了解决上述限制条件,同时加强自然采光和通风,事务所省略了住宅内部的隔墙,使用“绿色植 物”和“空隙”来分隔功能空间。有三个大的空间: 横跨三层楼的前花园、后花园以及中央横跨两层的采光井,将家庭办公区与休息区、礼拜场所都分隔开来。

立面上使用了当地丰富的天然材料,沿着藤墙排列的竹屏风在保护整个房子免受西晒的同时也保持了高度的隐私,还增加了房子的轻盈感。

03

置入庭院

带来更高质的生活环境

NG?C House / Story Architecture

这个项目位于人口密集的胡志明市,安全是首要考虑的问题。房子的立面设计有遮阳板和可任意开启关闭的折叠门。遮阳伞可以让屋主最大化地看到外面,却仍然可以限制陌生人进入的视野。

室内主要是为不同年龄的成员设计的,包括祖父母、父母和孩子。因此设计的核心在于如何为不同需求的家庭成员组织合适的生活空间,并且使其感受到舒适、私密却又紧密联系。

事务所在每个卧室前面设计了凉廊供房主放松休息。

两间卧室的凉廊之间是通高的边庭,这样成员彼此之间互相拥有私人距离,也共享着同一空间。

同时,通高空间也间接的为卧室提供了光线与微风。

楼梯着陆处形成的角落被用作孩子们的私人游戏区域。

房子后面是一个大院子,增加了厨房区域的通风,也是阅读报纸和喝咖啡的理想场所。

RIN’s House / 85 Design

这栋位于世界遗产惠安古镇的房子。由于是为三代人设计,方案本身既要适应现代生活方式,又要贴近自然,且必须具有传统建筑的基本特征。

家里最年长的人,即业主的父亲,一直饱受疾病和行走困难的折磨,因此,房子既要提供一个适合他日常活动的安静空间,也要创造乐观的氛围。

中间的院子便是是房子的关键部分,它能确保通风,避免潮湿,也能最大程度的利用光线。

两间卧室都有朝向庭院的大玻璃窗,这使得卧室内也一直都有新鲜空气。

在露台布置的小树林还能够减少太阳热量的影响。

NDT TLC Home / Kien Truc NDT

项目位于北宁省,占地 80 平方米,建筑开间仅 4 米。房子是为一对有两个孩子的年轻夫妇所设计的。由于业主是一个自然爱好者,所以设计的核心是创造一个容纳大量树木的生活环境,并且最大限度的增加户外空间。

由于该地区人口稠密,附近有三个大工业区,所以解决灰尘和噪音污染问题尤其重要。事务所的处理是将起居空间略微推后,在临街面创造了一个室外缓冲过渡的空间。这使得房子变得更加私密,也能够提供更好的空间使人们放松、休息与交流。

住宅内部的空间被划分为两个独立的区域,通过位于中间的楼梯连接,从而最大限度地通风,传播自然光线,并加强楼层之间的连接性(利于植物生长)。屋顶上有一个很大的玻璃屋顶,因此人们在行走时,会感到舒适、宽敞。

充分利用自然能源能够简单但有效地带来最佳的生活空间,并解决夹缝住宅类型存在的缺点。这个项目传达了简单生活、绿色生活、节约能源的信息。

04

错层

创造空间的多样性

Tropical Cave House / H&P Architects

该项目位于北宁市中心,可以容纳一个四代人的大家庭。其设计重点为利用光线流动和空间变化营造湿润的亚热带气候下的“洞穴风格”。

为特定目的而设计的楼层在不同的楼梯位置随机连接,以创造有趣的景观和不可重复的新鲜体验。

植物交替放置创造了一个从共享到半私人到私人的多维度过渡空间。

天窗、门系统和植被都有助于调节小气候。门系统的灵活性也为用户提供定制的视角,模糊了室内外、建筑和景观之间的界限。

在无序的城市化进程中,住宅逐渐变得令人窒息、孤立,与周围环境的友好关系也被切断。?????????????????????????????引入热带洞穴作为一种解决方案,给使用者带来了安全感与归属感, 创造了一个避风港。

LVS. House / AD9 Architects

该项目基于业主希望所有空间尽可能开放的想法,使用错层的处理手法,创造视线与行为的流动性及可达性。

垂直的自然采光和空气流通将自然元素与人的生活紧密联系在一起。

STH_Stair House / Deline architecture consultancy & constructio

该项目的业主是一对热衷于建筑,充满活力的年轻夫妇。他们希望通过对此前典型夹缝住宅的翻新,创造一个充满情感需求的住宅。

事务所利用楼梯、空隙、桥梁作为场地的中心,构建了一个中庭。通过错层来混合不同的功能空间,如客厅、厨房和卧室。

为了创造开放的空间,没有墙壁或柱子来支撑楼梯。所以整个房间的视野都十分畅通与开阔。人与人之间 的交流在无形之间增加。

大型楼梯平台还能作为休息空间,引导人们的流线,或者作为家庭活动的“舞台”,成为视线汇集的焦点。桥梁连接着两个房间,也为孩子们创造一个玩耍的区域,父母可以与他们互动。

项目的另一个特点是它的双层立面。第一层是不锈钢框架立方体和穿孔板的组合,可以控制阳光,减少热量。立面也作为植物的挂钩和生长框架。第二层是钢化玻璃和铝架,位于花园和室内之间。

05

镶嵌

营造视觉完整大空间

MM Tropical Suburb Town House / MM++ architects

项目像是由一个单一、整体的混凝土块雕刻而成。通过钢架勾勒出了上端的外骨骼,使得屋顶的形式被消解,完全地通向天空。

地块是独特的梯形,有两个临靠街道的侧边和面向西贡河的景观。为了使视野更加开阔,设计将梯形建筑分割为大矩形房间及附有浴室和储存功能楔形空间。

阳台向内退让,而不是向外突出,这样提供了阴影,也保证了全景的视角。

镶嵌的方式也贯穿了整个空间——床、浴缸、客厅座椅等,创造了不间断的空间和各个角落不受遮挡的视野。

为了抵抗西贡的炎热,射孔状的开口取代了窗户,同时也扮演着日晷的角色。

蜿蜒的步道穿过大门,引导进入一个隐藏于街道的花园。花园贯穿整个住宅,植物可以自由地在所有楼层之间攀爬,装点了建筑的立面。

起居区域中一条镶嵌的长凳贯穿整个空间,强调了非正式性——人们可以随意的伸开四肢、斜倚或盘腿坐着。

带有纹理的铁锈红墙让人联想到土坯砖,它能够消除眩光,其触感表面还强调了整个房子材料之间的纹理,与楼梯和地板的浇筑混凝土、圆滑的钢栏杆和彩色玻璃斑驳的窗格形成对比。

宝石色调的光线通过玻璃精心设计的条纹延续了神圣的感觉。19 世纪 80 年代和 90 年代典型的气窗玻璃的大胆色彩呈现在极简主义的构图中。

设计没有局限在单一的风格中,而是将在世界各地收集到的记忆集合起来,打造了一个室内探险之家。

虽然越南没有动辄上千米的高楼

也没有可以列入“建筑奇迹”的大型地标

但建筑师的巧思给这些

小住宅带来了优雅温馨的一面

这些建筑并不是高冷地存在

而是真正的融入了生活

Reference:
https://www.citypassguide.com/travel/vietnam/blog/blog/why-are-houses-so-narrow-in-vietnam-the- history-of-the-tube-house
https://www.archdaily.com/956220/tube-houses-15-projects-reinterpreting-the-narrow-vietnamese- residences
https://new.qq.com/omn/20191224/20191224A0LALV00.html?pc